|
Boolean operations illustrate the true power of
ACIS and solid models. Booleans are used to unite or intersect two solid bodies, or to subtract one solid body from another.
|
|
|
The following example creates a block and a cylinder and uses Boolean operations to unite them. Instead of
solid:unite,
solid:intersect or
solid:subtract could have been employed to create other unique solids.
|
|
|
Scheme Example
|
|
|
; Create a solid block.
|
|
(define my_block (solid:block (position -20 -20 -20)
|
|
(position 20 20 20)))
|
|
;; my_block
|
|
; Create a cylinder.
|
|
(define my_cyl (solid:cylinder (position 20 0 -20)
|
|
(position 20 0 20) 20)))
|
|
;; my_cyl
|
|
; Unite the two bodies into a new body.
|
|
(define my_united (solid:unite my_block my_cyl))
|
|
;; my_united
|
|
; Save the results to an output file.
|
|
(part:save "tmpbool1.sat")
|
|
;; #t
|
|
|
|
|
Figure 8-6. Unite Block and Cylinder
|
|
|
Some of the Scheme extensions related to Boolean operations on models are:
|
|
|
body:combine
|
Combines a list of solid and/or wire bodies into a single body.
|
|
|
body:separate
|
Separates a single disjoint body into multiple entities.
|
|
|
bool:intersect
|
Intersects two or more bodies.
|
|
|
bool:merge
|
Combines faces and edges of equivalent geometry.
|
|
|
bool:merge-faces
|
Combines specific faces on a body.
|
|
|
bool:nonreg-intersect
|
Intersects two or more nonregularized bodies.
|
|
|
bool:nonreg-subtract
|
Subtracts one or more nonregularized bodies from a body.
|
|
|
bool:nonreg-unite
|
Unites two or more nonregularized bodies.
|
|
|
bool:regularise
|
Regularizes an entity.
|
|
|
bool:subtract
|
Subtracts one or more bodies from a body.
|
|
|
bool:unite
|
Unites two or more bodies.
|
|
|
curve:intersect
|
Gets the intersection between two edges or curves.
|
|
|
edge:project-to-plane
|
Projects an edge onto a plane.
|
|
|
edge:split
|
Splits an edge into two entities at a specified position.
|
|
|
edge:trim-intersect
|
Trims both edges to the intersection of the edges.
|
|
|
face:intersect
|
Gets the intersection curve between two faces.
|
|
|
position:project-to-line
|
Gets the projection of a position on to a line.
|
|
|
position:project-to-plane
|
Gets the projection of a position onto a plane.
|
|
|
solid:imprint
|
Imprints curves of intersection of two bodies onto the faces of bodies.
|
|
|
solid:imprint-stitch
|
Joins body1 and body2 along the intersection graph.
|
|
|
solid:intersect
|
Intersects a list of solids.
|
|
|
solid:planar-slice
|
Slices a solid body with a plane to produce a wire body.
|
|
|
solid:slice
|
Gets the intersection graph between two bodies and returns it as a wire body.
|
|
|
solid:split
|
Splits all periodic faces of a body along the seams.
|
|
|
solid:stitch
|
Joins body1 and body2 along edges or vertices of identical geometry.
|
|
|
solid:subtract
|
Subtracts a list of solids from a solid.
|
|
|
solid:unite
|
Unites two solids.
|