Troubleshoot Boolean operations
Boolean commands can be used with surfaces and open polysurfaces. The result depends on the direction of the normals of the object. Use the Dir command to see the direction. If the results are the opposite of what you want, reverse the direction of the surface with the Dir or Flip commands and try again.
Try the Join command first on surfaces.
For mesh objects the steps are the same as for the NURBS Boolean equivalent.
The result of a command is always a mesh regardless of the input object type.
What makes Boolean operations fail?
Boolean operations can fail for a number of reasons:
- Normals may not point the way you expect.
- Control points tend to stack up at the intersection of the two objects.
- Objects may have overlapping surface areas.
Surface Normals
The Boolean operations use the surface normal to determine which parts to keep and which to throw away. When you attempt a BooleanDifference and you get a BooleanUnion instead, or vice versa, this is because the objects have normals that are the opposite of what you expect. This tends to happen often if one or more objects are not fully closed. If an object is not closed, Rhino has no way to determine which side is outside and which is inside. Use the Dir command to see which way the normals point on these objects and use the Flip option as needed to make sure the normal direction is what you consider to be the outside of the object. Fully closed objects will always have normals pointing outward.
Coincident Control Points
Coincident control points occur when the control points at the edge of a surface are at an identical location. This occurs in Rhino naturally at the tip of a cone or the pole of a sphere or a three-sided plane. You can also move control points to the same location. This point is also called a singularity.
When a singularity point occurs at the intersection of two objects you want to Boolean, the operation can fail.
Overlapping Surface Area
Overlapping surface areas occur when two surfaces share the same area. In this example, the two boxes are just touching along one side. The objects will Union, but Difference, and Intersection will not work.
Nonmanifold edges
In addition to overlapping surfaces, non-manifold edges can also cause failures.
Edges of polysurfaces or meshes that have more than two faces joined to a single edge are non-manifold.
What to do
If your objects won't Boolean, you can use other techniques to get the results you want.
In this example, the apex of the cone is exactly at the corner of the box. This is one of the situations that can cause the Boolean operations to fail.
Instead of using Boolean operations in this case, use the Explode command to separate polysurfaces into single surfaces if necessary. Use the Intersect command to create curves that represent the intersection of the two surfaces. To create the parts, use these curves to Trim and/or Split and then Join them back together.