Operations
Align
After creating multiple objects, align
allows you to align an array of objects:
const shapes = [
cube({center: [0, 0, 10]}),
cube({center: [0, 10, 20]}),
cube({center: [10, 0, 30]})
];
const alignedShapes = align(
{
modes: ['center', 'max', 'none'], // align along axis: center, min, max, none
realtiveTo: [0,0,0]
},
shapes
);
Boolean Operations
const {union, subtract, intersect, scission} = jscad.booleans;
Union
Combines an array of geometries into one new geometry:
const shapes = [
cube({size: 4}),
sphere({radius: 2, center: [2, 2, 2]})
];
const unionShape = union(shapes);
return unionShape;
Subtract
Cut out shapes from the first shape in the list:
const shapes = [
cube({size: 4}),
sphere({radius: 2, center: [2, 2, 2]})
];
const subtractShape = subtract(shapes);
return subtractShape;
Intersect
The overlapping areas of the object in the array:
const shapes = [
cube({size: 4}),
sphere({radius: 2, center: [2, 2, 2]})
];
const intersectShape = intersect(shapes);
return intersectShape;
Scission
Scission can cut elements apart that are not connected anymore. This requires that there is at least a little gap inbetween two elements. If one for example would use subtract
on two shapes in both directions and afterwards union
. The cut would be so perfect, that the edges would still touch. Here is an example where the shapes are translated before union
is applied, thereby, creating a big gap:
const cubeShape = cube({size: 4});
const sphereShape = sphere({radius: 2, center: [2, 2, 2]});
const cut1 = subtract([cubeShape, sphereShape]);
const cut2 = subtract([sphereShape, cubeShape]);
const unionShape = union([
translate([0,0,0], cut1),
translate([0,0,5], cut2)
]);
const scissionShapes = scission(unionShape);
The above scission
returns an array with two elements, which are the object that went into the union
command.
Task: Union & Subtract
First create an object by combining multiple 3D bodies through **union**. Then use *subtract* to remove bits from the union-object.
Inspiration: Raspberry Pi Case
Based on the mechanical drawings of the Raspberry Pi, particularly the screw holes, this case is constructed. Using variables the size can be easily modified.
View on GitHub/lectures/3d/case