## Solids

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
isa 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.

### Topology

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.

- Faces
- Edges
- Vertices

### Operations

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

### Boolean Operations

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 conesDifferenceAll: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 SolidSolid.Fillet: Fillet the Edges of the spiky ballDownload 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

### Freezing

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.