Component:Booleans
From DocR21
The Boolean Component (BOOL) performs Boolean operations on bodies, first finding the intersections between the bodies, and then deciding which pieces of the bodies to retain and which to discard.
A body involved in a Boolean operation may be composed of solid, sheet and wire regions. Initial and resulting bodies may be manifold or non-manifold. The results of the Boolean operation may be regularized or non-regularized point sets. The bodies involved in Boolean operations are often referred to as a blank body and a tool body. The blank body is the body on which to perform the operation and the tool body is the body with which to perform the operation. This is analogous to a "tool" machining portions of a "blank."
The Boolean Component also contains Spline Conversion functionality.
Basic Operations
| Operation | Description |
|---|---|
| Unite | Operation to create a body that contains all points that are in either of the two input bodies. This joins the tool body and the blank body. |
| Intersect | Operation to create a body that contains all points that are common to both of the two input bodies. The result is all points that are in both the tool body and the blank body. |
| Subtract | Operation to create a body that contains all points that are in the blank body but not in the tool body. This is the difference of the points in the tool body from the points in the blank body. |
| Chop | Operation that creates a body through a combined procedure of subtract and intersect. |
| Slice | Operation that computes the intersection graph between two bodies and creates a wire body corresponding to the graph. |
| Imprint | Operation that computes the intersection graph of the tool body and the blank body and embeds it into both bodies, splitting faces and edges of the original two bodies with the edges of the intersection graph.
|
| Projection | This operation is used to project and imprint a wire body onto a solid or sheet body. The API projects (along surface normals) and imprints a given wire body (the tool) onto another given body (the blank). The projected wire can be imprinted onto the blank or just returned. |
Advanced Operations
| Operation | Description |
|---|---|
| Fuzzy Booleans | Fuzzy Boolean operations allow you to perform Boolean operations on bodies in which some entities (faces or edges) from one of the bodies are intended to be coincident with those on the other body, yet the coincidence is not precise to within the absolute resolution (that is, SPAresabs). |
| Glue | Operations that allow performing unite or subtract Boolean operations with increased performance in special circumstances. |
| Open Shell Booleans | Boolean operations are also applicable to limited single-sided open shells. |
| Partial Booleans | Operations which require prior knowledge about the result. They provide increase of speed for booleans. |
| Selective Booleans | Unite, subtract, and intersect operations applied only on selected portions of the model. |
Some of the ACIS R21 improvements are:
- An optional failsafe mode for api_slice is now available.
- You can set a tolerance in the project_options object, to be used in projection operations.
- Detection of sliver faces through api_detect_sliver_faces has been made more robust.
C++ APIs
The basic Boolean operations normally require two bodies, blank (onto which the operation is applied) and tool (with which the operation is performed). Many of the boolean operations take an options object. After the operation, either or both bodies may be kept or destroyed. There are also APIs for more advanced boolean operations, projection operations and selective boolean operations.
Error Codes
Upon failure of an Boolean API, error codes will be returned that explain the failure and suggest possible actions for correction.
Options
The main Boolean APIs take the options objects below to control their behavior. There are also global options that affect the behavior of Boolean operations.
| Options for dedicated operations | Option class |
|---|---|
| All Booleans | BoolOptions |
| Glue | glue_options |
| Projection | project_options |
| Unstitch Non-Manifold body | unstitch_nm_options |
| Selective Booleans | tube_options |
| Convert-to-spline | convert_to_spline_options |
Scheme Extensions
Examples of Scheme extensions related to Booleans are bool:unite and bool:subtract. Refer to the complete list of Boolean Scheme extensions.
Data Structures
Each Boolean operation begins with building an intersection graph which is a data structure defining the intersection of the bodies.
Types of Boolean operations
Boolean operations can be classified as:
- Regularized or non-regularized Boolean operations - Operations where model dimensionality is of importance.
- Destructive or non-destructive Boolean operations - Operations that preserve or not preserve one (or both) of the input bodies.
Journaling
Journaling is available for Boolean through the standard ACIS options journaling mechanism.
Versioning
Versioning is available for Boolean through the standard ACIS options versioning mechanism.
