Intro
Booleans are operations that are used to combine two or more shapes. There are three common types of boolean operations: union, difference, and intersection. Union is used to combine two or more shapes into one. Difference is used to subtract one shape from another. Intersection is used to keep only the common part of two or more shapes.
Union
Union is used to combine two or more shapes into one. The shapes must intersect one another. If no intersection is found union can not be constructed. Check out the picture below how unioned vs non-unioned shapes look like. Notice how unioned result gain additional edges, which delimit the faces of a newly created solid. This solid does not have intersecting faces. Edges of such solid can be filleted or chamfered.
Non-unioned result of 3 solids
Unioned result of 3 solids
In the following scripts we create three solids - a box, a cylinder and a sphere. We then apply a union operation to them. Below you will find the TypeScript, Rete and Blockly code examples:
Difference
Difference is used to subtract one shape from another. The shapes must intersect one another. If no intersection is found difference can not be constructed. Check out the picture below how difference looks like. Notice how the result of the difference operation is a solid with cylinder and sphere subtracted from the box.
Before difference is computed
After difference is computed
Difference is a negative variant of union. It takes in a shape from which other shapes should be subtracted. You can use as many shapes as you'd like, but performance may suffer eventually. Check out these examples of TypeScript, Rete and Blockly code:
Intersection
Intersections leave the common part and discards the rest. The shapes must intersect one another. If no intersection is found intersection can not be constructed. Check out the picture below how intersection looks like. Notice how the result of the intersection operation is compound shape made out of two solids with only the common part of the box, bouned by the cylinder and sphere remainders.
Before intersection is computed
After intersection is computed
Here you can find the scripts that create a solid box, a cylinder and a sphere and apply an intersection operation to them. Below you will find the TypeScript, Rete and Blockly code examples:
Note on shape types
You can apply boolean operations on any type of shape. It is possible to union two overlaping faces. It is also possible to union two wires that share common point into one. It is also possible to use difference and intersection on these shapes. Depending on the shape type, the result of the boolean operation will be different. For example, if you union two faces, the result will be a new face. If you union two wires, the result will be a new wire.
Note on performance
While boolean commands often seem like a simple operation, they can be quite complex and computationally expensive. It is often very tempting to use booleans due to their simplicity, but we advise to try and avoid them when possible. For simple geometries boolean operations will be fast and perform well, but when complexity of geometry grows they will rapidly decrease the performance of the application. It is often better to use other methods that create solids from their composite parts.