- Why Spatial?
- Developer District
Boolean operations on individual bodies are common functions in 3D modeling. While simple in concept, reality can be quite different — Boolean operations can fail for a variety of reasons, often the result of earlier Boolean operations. The most common reasons boil down to unclear design intent.
An incremental Boolean workflow is available to Spatial customers to increase the success rate of Boolean operations by performing localized optimization routines when a standard Boolean operation fails.
One of the primary reasons that Boolean operations fail is unclear design intent in the way the tool and blank (the input bodies) are combined. The incremental Boolean workflow aims to address such failures. These errors are possibly the result of earlier operations, or small errors when translating modeling data, for example:
The figure below shows tolerant vertexes (as indicated by the sphere), enveloping a short edge. Such scenarios are not resolvable in many cases.
Large Tolerant Vertex
The tool (yellow) and blank (cyan) shown in the figure below have almost coincident faces. Often, in such scenarios, the Boolean API cannot determine whether the two faces are actually coincident (no intersection to be computed) or not (an intersection must be computed).
Ambiguity in Coincident Faces
Generally speaking, Boolean operations do not make assumptions regarding the model by definition —they are precise operations that make no attempt to infer design intent in an imported model.
The incremental Boolean workflow (shown below) applies when an initial Boolean operation does not succeed. In contrast to a traditional Boolean operation, the incremental Boolean workflow is allowed to make assumptions. For example, if two near coincident faces are encountered, the workflow runs a prepare phase to make the two faces coincident.
Looking at the workflow in more detail, when a Boolean operation fails, the workflow calls the prepare API to resolve recognized complexities between the tool and/or blank before passing both back to the Boolean API to try again. The workflow continues until no complexity (reason why the Boolean operation failed) is reported, the prepare API fails, or successive Boolean operations returns the exact same set of complexities.
The incremental Boolean workflow is independent of the type and optional behavior (regularized, selective, etc.) of the attempted Boolean operation. Regardless of whether a user chooses to subtract, unite, imprint, etc., two bodies, the same workflow can be used.
This new workflow is also flexible, allowing users to add additional routines to the flow, or even set additional stopping criteria.
The goal of the incremental Boolean workflow is to make the process more robust. As a result of this new flow, 70% of failed Boolean operations successfully corrected by the incremental Boolean workflow, required only a single iteration of the prepare step.
Incremental Boolean Workflow
At a high level, the repair completed during the incremental Boolean workflow appears similar to the healing routines available in 3D ACIS Modeler. Healing is a global operation performed on a single body, while the incremental Boolean workflow is performed on two bodies in the explicit Boolean operation context and is only triggered when a Boolean operation reports a failure. Healing is proactive, while the repair done during the incremental Boolean workflow is reactive — they are completely separate functionalities.
Booleans are probably the most common operation within 3D modeling — part and parcel with constructing complex parts. In the past, users were forced to perform manual cleanup when Boolean operations failed. Now with the incremental Boolean workflow, users have access to a more robust and automated Boolean workflow.