Extrusion

From 2D to 3D

When ever we modify something in JSCAD, not matter if extrusion or transformation, we pass the shape we want to modify into that command and the command will return the modified version of the shape, which we can then store in a new variable (or the same).

Extruding

const {extrudeRectangular, extrudeLinear, extrudeRotate} = jscad.extrusions;

Extrusion is the process of taking a geometry and extending along one dimension.

ExtrudeLinear

Linear extrude allows you to extrude on the z-axis {height: 20}:

extrudeLinear example
extrudeLinear example
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 0]
});

const extrudeShape = extrudeLinear({height: 20}, circleShape);

You can add a rotation to the extrusion twistAngle and how many steps inbetween should be created twistSteps:

extrudeLinear with rotation
extrudeLinear with rotation
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 0]
});

const extrudeShape = extrudeLinear({
height: 20,
twistAngle: Math.PI * 2,
twistSteps: 12
}, circleShape);

The rotation works along the z-axis relative to [0,0,0]. If an object is not located on [0,0,0], the twist effect from above will look different:

extrudeLinear with rotation and offset
extrudeLinear with rotation and offset
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 4]
});

const extrudeShape = extrudeLinear({
height: 20,
twistAngle: Math.PI * 2,
twistSteps: 12
}, circleShape);

extrudeRectangular

For this extrusion imagine a cube walking along the outline of the shape and, thereby, creating the extrusion. You can define size and heigth of the rectangle and result ing extrusion:

extrudeRectangular example
extrudeRectangular example
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 0]
});

const extrudeShape = extrudeRectangular({
size: 1,
height: 1
}, circleShape);

extrudeRotate

For this extrusion the shape is rotated around the z-axis, the angles define start and end, segments the amount of steps:

extrudeRotate example
extrudeRotate example
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 0]
});

const extrudeShape = extrudeRotate({
angle: Math.PI / 180 * parameters.end,
startAngle: Math.PI / 180 * parameters.start,
segments: parameters.segments
}, circleShape);

In the above example the shape is located on [0,0,0] and, therefore, rotated around itself. Similar to extrudeLinear, adding an offset, the shape rotates differently:

extrudeRotate with an offset example
extrudeRotate with an offset example
const circleShape = circle({
radius: 5,
segments: 6,
center: [0, 0, 4]
});

const extrudeShape = extrudeRotate({
angle: Math.PI / 180 * parameters.end,
startAngle: Math.PI / 180 * parameters.start,
segments: parameters.segments
}, circleShape);

Expand & Offset

const {expand, offset} = jscad.expansions;

In the last section we looked at extrusion. Taking a shape and extending it along an axis. Another similar method is expand and offset.

Offset

Offset can be used on 2D shapes. It simply offsets the outline by given delta. A negative delta shrinks the shape. For the corners three different types of offsets can be achieved:

offset for a 2D shape, with corner options
offset for a 2D shape, with corner options
const rectShape = rectangle({size: [50, 25]});

const offsetShape2 = offset({
delta: 10,
corners: 'chamfer'
}, rectShape);

const offsetShape3 = offset({
delta: 20,
corners: 'round',
segments: 20
}, rectShape);

const offsetShape1 = offset({
delta: 30,
corners: 'edge'
}, rectShape);

Expand

Expand has the same effect as offset for 3D shapes. It only offers the corner method 'round', but you can define the segments:

expand with different segment options
expand with different segment options
const rectShape = cuboid({size: [50, 25, 2]});

const offsetShape1 = expand({
delta: 10,
segments: 4
}, rectShape);

Task: Offset extrusions

Explore the various extrusions when you combine them with an offset. Create a grid of extruded objects.

Inspiration: Extruded rectangle with rounded corners

Open "Rounded Rectangle Demo"

Combining an extruded rectangle and circles
Combining an extruded rectangle and circles

View on GitHub/lectures/3d/extrude

Back to top