The
Selective Booleans Component (SBOOL), in the
sbool directory, performs the standard Boolean unite, subtract, and intersect operations. Whereas pure Boolean operations will act upon the full model, selective Boolean operations use graph theory to act upon only selected portions of the model. The sequence of edges or faces encountered in the model is graphed, and ordered pieces of the graph can be tagged for inclusion or exclusion in the result of the Boolean operation.
|
|
The selective Boolean operation allows two or more bodies to be combined with greater flexibility regarding what is kept and what is discarded, without having to intersect the bodies more than once. The flexibility in what may be selected is at the cellular level, which allows for more choices than unite, subtract, and intersect.
|
|
The two ways of selecting which cells to use are as follows:
|
|
|
Direct user input of a list of cells that have been picked (the easiest way). For example, in Scheme, this can be achieved by loading
pick.scm and then using the
pick-cell procedure.
|
|
Analyzing and subsetting the connectivity graph of cells. This uses the graph theory subsystem, which works with and creates graphs.
|
|
To make the interactive selection of cells easier, the
Graphic Interaction Component includes the picking, coloring, and highlighting of cells. To make the programmatic selection of cells easier, the graph theory subsystem (in the
Kernel Component) is used to test, manipulate, and create graphs.
|
|
The selective Boolean engine makes use of:
|
|
|
The nonregular Boolean
|
|
Generic attributes
|
|
Cellular topology
|
|
The ability to 2D convert a body
|
|
The ability to enclose a body
|
|
The ability to regularize a body
|
|
The graph theory subsystem
|
|
Figure 1-1 shows a blank body consisting of a block with two slots cut out of it and a tool body consisting of a cylinder that penetrates the block in three places. The first stage of the selective Booleans creates a nonregular unite of the two bodies and attaches cellular topology to the result. In addition, the connectivity graph of the resulting cells is returned and the vertices, or cells, of the graph are marked in a way that lets one know which body or bodies they came from.
|
|
|
|
Figure 1-1. The Blank and Tool Bodies
|
|
|
|
Figure 1-2. The Blank Body After the First Stage
|
|
The resulting body contains eight three dimensional cells, seven that came from the tool body and four that came from the blank body. Three of the cells came from both bodies. The connectivity graph that is returned by the first stage is given in Figure 1-3.
|
|
|
|
Figure 1-3. The Connectivity Graph
|
|
Cells
A through
G came from the tool body. Cells
B,
D,
F, and
H came from the blank body.
|
|
The second stage of the selective Boolean engine takes the nonregular united body and a list or graph of cells. It returns a regularized body that is made up of the given cells or vertices of the graph.
|
|
|
|
Figure 1-4. The Result of Picking C, G, and H to Keep
|