When BooleanDifference, BooleanUnion or BooleanSplit fails, check the input objects and the intersection before changing the model. A cutter that misses the part, a gap in a surface and a tangent contact need different responses. Repeating the command won't tell you which one you have.
Save a working copy, isolate the two objects involved, then use What, Check, ShowEdges and Intersect to narrow the problem. Keep the original dimensions in view: getting a command to finish is useful only if the result still matches the part you need.
Scope: Rhino 8 for Windows, NURBS surfaces and polysurfaces. This is a documentation-based guide prepared with AI assistance. No Rhino build or repair was tested for this article; the example below is hypothetical. Mesh Booleans and SubD conversion need their own procedures.
Identify the objects and check their boundaries
Select each input separately and run What. Note its type and whether the intended solid is actually closed. A shaded object can look solid while its faces remain separate or its shell has an opening.
If you have a mesh, use the documented mesh Boolean command family. Those commands can also accept some surface inputs, but the output is a mesh. Choose that route when mesh output suits the task; converting an editable surface model merely to bypass a failure changes what you can hand over.
For surfaces and polysurfaces, run Check. Investigate reported errors before retrying the Boolean. A passing report checks the object's data structure; it does not detect every folded or self-intersecting surface.
Next use ShowEdges. Inspect Naked edges for open boundaries and Non-manifold edges for edges shared by more than two faces. An intended closed solid should have neither. An intentionally open cutting surface can have a perimeter; the question is whether that boundary belongs there.
If separate faces should form one shell, Join can connect suitable adjacent edges. It does not reshape the surfaces to fill a gap. For broader surface and trim problems, use the Rhino geometry QA guide, keeping validity, closure and design accuracy as separate checks.
Before changing anything, keep these references with the working copy:
- The source revision, intended input objects and their reported type, validity and closure.
- Model units and a known dimension to catch a scale mistake.
- The cut, opening or joined region you need, with its specified size and position.
Find the intersection that the operation needs
Run Intersect on the isolated pair. It produces curves or points where the objects intersect. Move the resulting diagnostic objects onto a clearly named layer so you can inspect them without confusing them with the part's edges.
For an ordinary cut where two closed boundaries cross through each other, look for complete intersection loops at the intended crossing. Inspect the curves with What; if an expected loop is open, locate its ends and examine that area of both inputs. Several loops may be correct when a cutter crosses the part in several places. The McNeel Boolean FAQ explains this diagnostic approach.
An empty intersection is a question about the arrangement, not an automatic verdict that the objects are bad. They may be apart, merely touching, or one may be wholly inside the other. Rhino's Boolean reference specifically notes the limitation of subtracting a fully enclosed sphere to make a sealed, tennis-ball-like cavity. A through-hole and an enclosed void are different modeling tasks.
Rhino 8's Boolean help also describes failure dots near bad intersections or naked edges. If dots appear, inspect their properties, including Secondary text, for details. Use those locations to focus the check; don't assume the absence of a dot proves the inputs are sound.
Use the finding to choose a repair
Start with the row that matches your model. After changing geometry, rerun the check that exposed the problem before retrying the Boolean.
Scroll the table horizontally to read every column.
| What you find | Check next | Choose the next action |
|---|---|---|
| The intended solid has open boundaries | What and ShowEdges at the opening |
Restore the missing or mismatched faces from the design. Recheck closure before treating it as a solid. |
Check reports an invalid object |
The reported face, edge or trim | Repair or remodel that area on a copy, then rerun the structural and feature checks. |
Intersect produces nothing where a cut should cross the part |
Relative positions, object types and known dimensions | Correct an unintended placement error. If the cutter is contained, reassess the cavity construction rather than moving it arbitrarily. |
| An expected intersection loop is broken or has extra segments | Curve ends and corresponding input boundaries | Look for a gap, tiny trim or overlapping geometry there. Fix the surface problem; compare any reconstructed boundary with the design before using it. |
| Contact is tangent or faces occupy the same area | Whether the design calls for an overlap, a shared face or simple contact | Reconsider the construction at that location. Change a cutter's extent only when it preserves the required feature; a positional change needs design agreement. |
| The wrong side remains on an open-surface operation | Selection order and Dir arrows |
Correct the input sets; inspect the open surface's direction before flipping it. |
| The split works but the result seems unchanged | Source visibility and which pieces were created | Hide retained inputs and inspect the new pieces separately before deleting anything. |
Tangent and coincident conditions can make intersection construction difficult; they do not mean every touching-face union must fail. The FAQ discusses these cases, while the versioned help describes normals, singularities and overlapping areas. Avoid turning those explanations into an automatic instruction to move the part.
Retry the operation with the intended pieces
For BooleanDifference, select the surfaces or polysurfaces to subtract from first, then the cutters. Preserve inputs with DeleteInput=No while investigating. Keep retained originals apart from the result in the layer/visibility setup.
For BooleanUnion, select the objects to combine and inspect whether the intended material and outside faces remain. For BooleanSplit, inspect the separate shared and unshared pieces rather than expecting one finished object. The grouped reference documents these different results.
If an open cutting surface leaves the opposite region, use Dir to inspect its normal direction. Flip it only after deciding which side you intend to retain. Closed Rhino surfaces and polysurfaces cannot have their normals facing inward; flipping a closed solid is not a general repair step.
Don't choose a new absolute tolerance simply because the Boolean failed. Units properties describe tolerance for approximate geometry operations, including Booleans. Review the model units, known size and affected detail together. Changing the setting does not rebuild an existing bad face or define a manufacturing tolerance. If the units are wrong, work on a copy, respond deliberately to the geometry-scaling prompt and recheck dimensions.
Example: a through-hole in a plate
Consider a hypothetical plate measuring 50 × 30 × 6 mm, with an 8 mm diameter through-hole centered on its top face. Let the plate occupy Z = 0 to Z = 6 mm. The dimensions are example design inputs, not manufacturing recommendations.
Three cutter arrangements lead to different decisions:
- The cylinder is above the plate. It removes no material. Check its location before repairing the plate's surfaces.
- Its axis is correctly centered, but its caps coincide with the plate's top and bottom. For this through-hole, a working cutter from Z = −2 to Z = 8 mm would extend beyond both faces while retaining the specified axis and diameter. This is a construction to investigate, not a guaranteed fix or a required extension distance. It would be inappropriate for a blind hole whose depth is specified.
- The cylinder only touches an outside edge of the plate. Tangent contact does not create the intended hole. Moving its axis inward would change the design, so confirm the required location before doing that.
Before trying the cut, write down the expected hole location, diameter and through condition. Afterward, inspect the opening at both plate faces and compare the plate thickness and hole position with those references. Leave observed dimensions and pass/fail blank until you perform the checks.
When splitting and joining by hand helps
A manual route can make piece selection clearer when an automatic Boolean still fails. On copies, use the inspected intersection curves to Split the relevant surfaces, delete only the unwanted pieces, then join the retained faces. Trim offers a remove-as-you-select route; Split is useful when you want to inspect the pieces first.
For a polysurface, you may need to separate faces to work locally. Keep the source copy so you can compare the reconstruction. A curve used to split a polysurface in a non-plan view must lie completely on it, as the Split reference explains. An approximate or incomplete curve can fail here too. Join connects matching boundaries; it cannot supply missing faces or prove that you kept the correct volume.
If the intersection is still unresolved, keep the inputs and diagnostic curves with notes about the failing location. That is more useful for the next investigation than an unexplained model change.
Check the part before continuing
Compare the result with the preserved source and the intended cut:
- Hide retained inputs and identify the new object or pieces with
What. - Run
Check, then inspect naked and non-manifold edges withShowEdges. Require closure when the deliverable is meant to be a closed solid. - Inspect the material kept and removed, including small faces and openings around the cut.
- Measure the specified distances using clear reference points; Distance reports the separation between two picked points. Compare feature size and position with the design, using its agreed allowable differences.
- Save the resulting revision with the command/options used, the finding that led to the change, and any remaining question.
Continue when the intended geometry is present and the relevant checks agree. If the result is closed but the hole has moved, it still needs revision. Export is a later check: the Rhino handoff guide explains how to identify and verify the file sent to the next person.