2D shapes and Extrusions - jackbackrack/cons-beginners-course GitHub Wiki
2D Shapes
We can also construct 2D shapes that live in the xy plane and have no z extent.
Rectangle
- size --
square({ size: [2, 4], center: true}) - scale --
square({ center: true }).scale([2, 4])
Circle
- radius --
circle({ r: 5, center: true }) - scale --
circle({ center: true }).scale(5) - facets --
circle({ fn: 5, center: true }).scale(5)
Polygon
- points --
polygon([0,0],[3,0],[3,3](/jackbackrack/cons-beginners-course/wiki/0,0],[3,0],[3,3)) - points --
polygon({ points: [ [0,0],[3,0],[3,3] ] })
Extrusion
We can convert 2D shapes into 3D shapes giving them a z dimension with a series of extrusions.
Linear -- extrude 2d shape into 3d shape giving it height in z
- height --
linear_extrude({ height: 10 }, square()) - twist --
linear_extrude({ height: 10, twist: 90 }, square()) - slices --
linear_extrude({ height: 10, twist: 90, slices: 20 }, square())
Rectangular -- extrude a rectangle along a path
- path --
rectangular_extrude([ [10,10], [-10,10], [-10,-10], [10,-10] ], {w: 1, h: 3, closed: true})
Rotate -- extrude 2d shape rotationally about the z axis
- translate --
rotate_extrude(circle({r: 1, center: true}).translate([4,0,0]) ) - angle --
rotate_extrude({startAngle: 45, angle: 180}, circle({r: 1, center: true}).translate([4, 0, 0])) - facets --
rotate_extrude({fn:4}, square({size: [1,1], center: true}).translate([4,0,0]) )
Homework
- make a pole from a circle
- make a 2D house with a polygon
- extrude the house
- make a square ring
- make a tubular wireframe structure like a table using rectangular extrusion
- rectangular extrusion only works with 2D paths so be careful