If we want to construct more complex models that cannot be created from a single surface or if we want to define an explicit volume, we must now venture into the realm of Solids (and Polysurfaces). Even a simple cube is complex enough to need six surfaces, one per face. Solids give access to two key concepts that Surfaces do not - a more refined topological description (faces, edges, vertices) and Boolean operations.
What's a Solid?
Solids consist of one or more Surfaces that contain volume by way of a closed boundary that defines "in" or "out." Regardless of how many of these Surfaces there are, they must form a "watertight" volume to be considered a Solid. Solids can be created by joining Surfaces or Polysurfaces together or by using operations such as loft, sweep, and revolve. Sphere, Cube, Cone and Cylinder primitives are also Solids. A Cube with at least one face removed counts as a Polysurface, which has some similar properties, but it is not a Solid.
- A Plane is made of a single Surface and is not a Solid.
- A Sphere is made of one Surface but is a Solid.
- A Cone is made of two surfaces joined together to make a Solid.
- A Cylinder is made of three surfaces joined together to make a Solid.
- A Cube is made of six surfaces joined together to make a Solid.
Solids are made up of three types of elements: Vertices, Edges, and Faces. Faces are the surfaces that make up the Solid. Edges are the Curves that define the connection between adjacent faces, and vertices are the start and end points of those Curves. These elements can be queried using the Topology nodes.
Solids can be modified by filleting or chamfering their edges to eliminate sharp corners and angles. The chamfer operation creates a ruled surface between two faces, while a fillet blends between faces to maintain tangency.
- Solid Cube
- Chamfered Cube
- Filleted Cube
Solid Boolean operations are methods for combining two or more Solids. A single Boolean operation actually means performing four operations:
- Intersect two or more objects.
- Split them at the intersections.
- Delete unwanted portions of the geometry.
- Join everything back together.
This makes Solid Booleans a powerful time-saving process. There are three Solid Boolean operations that distinguish which parts of the geometry are kept.
- Union: Remove the overlapping portions of the Solids and join them into a single Solid.
- Difference: Subtract one Solid from another. The Solid to be subtracted is referred to as a tool. Note that you could switch which Solid is the tool to keep the inverse volume.
- Intersection: Keep only the intersecting volume of the two Solids.
In addition to these three operations, Dynamo has Solid.DifferenceAll and Solid.UnionAll nodes for performing difference and union operations with multiple Solids.
- UnionAll: Union operation with sphere and outward-facing cones
- DifferenceAll: Difference operation with sphere and inward-facing cones
Let's use a few Boolean operations to create a spiky ball.
- Sphere.ByCenterPointRadius: Create the base Solid.
- Topology.Faces, Face.SurfaceGeometry: Query the faces of the Solid and convert to surface geometry—in this case, the Sphere has only one Face.
- Cone.ByPointsRadii: Construct cones using points on the surface.
- Solid.UnionAll: Union the Cones and the Sphere.
- Topology.Edges: Query the edges of the new Solid
- Solid.Fillet: Fillet the Edges of the spiky ball
Download the example files that accompany this image (Right click and "Save Link As..."). A full list of example files can be found in the Appendix. Geometry for Computational Design - Solids.dyn
Boolean operations are complex and can be slow to calculate. Use Freeze functionality to suspend the execution of selected nodes and affected downstream nodes.
Use the right-click contextual menu to Freeze the Solid Union operation
The selected node and all downstream nodes will preview in a light grey ghosted mode, and affected wires will be displayed as dashed lines. The affected geometry preview will also be ghosted. You can now change values upstream without calculating the boolean union.
To unfreeze the nodes, right-click and uncheck Freeze.
All affected nodes and associated geometry previews will update and revert to the standard preview mode.