Options

 

 

Technical Article


Options may be set to modify the behavior of ACIS. An option's value may be a flag (indicating an on/off state), a number (integer or real number), or a string. Options may be set in a Scheme application (such as Scheme AIDE) using the Scheme extension option:set; or in a C++ application using one of several API functions.

all_free_edges

Action
Determines whether all edges on coincident faces are processed as free edges during Boolean operations.

Name String
all_free_edges

Scheme
Type Values Default
integer 0, 1, 2 2

C++
Type Values Default
int 0, 1, 2 2

Description
This option affects how coincident faces are processed during Boolean operations. It determines whether mergeable edges (edges with identical geometry on either side) are included in the intersection graph. In this case, mergeable edges are found on coincident faces, and will be (or not) consequently included in a subsequent imprint. This option only has an effect on imprinting and regularized Booleans.

When the operation is a regularized Boolean, you do not need to include these mergeable edges, as they do no affect the outcome. On the other hand, when the operation is an imprint, mergeable edges on coincident faces should be included in the intersection graph because they are required in the result.

The values available for this option are:

0   Disables imprinting mergeable edges.
1   Enables imprinting mergeable edges.
2   The action to be taken is determined by the operation; mergeable edges are included during an imprint, but not on regularized Booleans.

As implied above, non-regularized Boolean operations are not affected by this option. They always imprint any mergeable edges on coincident faces, regardless of the value set by this option.

When the overall operation in not known what it is going to be (for example, api_slice, api_bool_make_intersection_graph, api_bool_make_intersection_wo_bool_end, api_selectively_intersect, and any other partial Boolean operation), the default action is to include mergeable edges.

Note: The default behavior is determined by the type of Boolean operation.

; all_free_edges
; Turn on free edges
(option:set "all_free_edges" 1)
;; 2

[Top]


check_ee_int_always

Action
Controls when edge/edge intersections are performed during face/face checking.

Name String
check_ee_int_always

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
This option controls when edge/edge intersections are performed during face/face intersection checking. Normally, a face is checked for improper edge/edge intersections (i.e., those intersections that result in a vertex not on the body being checked) only after the face is involved in a failed face/face intersection during checking; otherwise it is assumed that the face has no improperly intersecting edges. Turning this option on causes each face to be checked for improper edge/edge intersections when doing face/face intersection checking.

; check_ee_int_always
; Make a bad body--turn off local operations loop
; checking, but turn on face/face intersection
; checking from inside local ops to find bad
; edge/edge intersections
(option:set "check_ee_int_always" #t)
;; #f
(option:set "lop_ff_int" #t)
;; #f
(option:set "lop_check_invert" #f)
;; #t
(define b (solid:block (position -25 -25 -25)
    (position 25 25 25)))
;; b
(lop:edge-taper-faces (pick:face (ray
    (position 0 0 0) (gvector 1 0 0)))
    (pick:edge (ray (position 0 0 -25)
    (gvector 1 0 0)))
    (gvector 0 0 1) 60)
;; entid 1419584 entid 1418712:
;; Error: edge intersection
;; entid -57528:
;; Warning: invalid face
;; entid 1419008 entid 1419296:
;; Error: edge intersection
;; entid -58008:
;; Warning: invalid face
;; entid -58248 entid -57768:
;; Error: face intersection
;; Warning: shell entid -57000 not used in
;; containment check
;; Warning: lump entid 1423104 not used in
;; containment check
;; *** Error lop:edge-taper-faces: improper edge/edge
;; intersection

[Top]


check_ff_int

Action
Sets additional validity checking of the body.

Name String
check_ff_int

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
Enables additional validity checking of an entity from api_check_entity. The following extra checks performed when this option is set to TRUE:

Checks for improper face/face intersections (on faces containing or contained by the entity).
Checks for improper shell containment between two shells in the same lump.
Checks for improper lump containment (i.e. one lump containing another).

If any problems are found, an ERROR_ENTITY object is returned on the insane_ents ENTITY_LIST.

; check_ff_int
; Create some geometry
(define b1 (solid:block (position 0 -10 -10)
    (position 10 10 10)))
;; b1
(define b2 (solid:block (position 15 -10 -10)
    (position 25 10 10)))
;; b2
(bool:unite b1 b2)
;; #[entity 2 1]
; Allow bad body to be made
(option:set "lop_ff_int" #f)
;; #f
; Try to make an invalid body
(lop:move-faces (car (pick:face (ray (position 5 0 0)
    (gvector 1 0 0)))) (gvector 20 0 0))
;; #[entity 2 1]
(option:set "check_ff_int" #t)
;; #f
(entity:check b1)
;; checked:
;;     2 lumps
;;     2 shells
;;     0 wires
;;     12 faces
;;     12 loops
;;     48 coedges
;;     24 edges
;;     16 vertices
;; entid -57048 entid -55072:
;; Error: face intersection
;; entid -57048 entid -55552:
;; Error: face intersection
;; entid -57048 entid -55800:
;; Error: face intersection
;; entid -57048 entid -56040:
;; Error: face intersection
;; entid -57048 entid -56280:
;; Error: face intersection
;; entid -57288 entid -55312:
;; Error: face intersection
;; entid -57288 entid -55552:
;; Error: face intersection
;; entid -57288 entid -55800:
;; Error: face intersection
;; entid -57288 entid -56040:
;; Error: face intersection
;; entid -57288 entid -56280:
;; Error: face intersection
;; entid -57528 entid -55072:
;; Error: face intersection
;; entid -57528 entid -55312:
;; Error: face intersection
;; entid -57528 entid -55552:
;; Error: face intersection
;; entid -57528 entid -55800:
;; Error: face intersection
;; entid -57528 entid -56280:
;; Error: face intersection
;; entid -58008 entid -55072:
;; Error: face intersection
;; entid -58008 entid -55312:
;; Error: face intersection
;; entid -58008 entid -55800:
;; Error: face intersection
;; entid -58008 entid -56040:
;; Error: face intersection
;; entid -58008 entid -56280:
;; Error: face intersection
;; entid -57000 entid -55024:
;; Warning: shell intersection
;; entid 1423104 entid 1430328:
;; Warning: lump intersection
;; Body containing improper intersections created.
;; ()

[Top]


check_ff_tangent_int

Action
Sets additional validity checking of the body.

Name String
check_ff_tangent_int

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
Enables additional validity checking of an entity from api_check_entity. This relates to intersections between two adjacent faces where:

Both faces are spline blend surfaces.
One face is a spline and the other face is tangent to the spline surface.

Intersections are not performed during face/face checking when this option is FALSE. To perform these additional checks, the option must be TRUE.

This option only has an effect when either option lop_ff_int or check_ff_int is TRUE.

; check_ff_tangent_int
; Create some geometry
(define b1 (solid:block (position 0 -10 -10)
    (position 10 10 10)))
;; b1
(define e (pick:edge (ray (position 0 0 10)
    (gvector 1 0 0))))
;; e
(abl:edge-blend e (abl:ell-rad #f 2 4.5 0))
;; #[entity 3 1]
(blend:network e)
;; #[entity 2 1]
(option:set "check_ff_int" #t)
;; #f
(option:set "check_ff_tangent_int" #t)
;; #f
(entity:check b1)
;; checked:
;;     1 lumps
;;     1 shells
;;     0 wires
;;     7 faces
;;     7 loops
;;     30 coedges
;;     15 edges
;;     10 vertices
;; ()

[Top]


keep_second_edge

Action
Sets whether or not the second edge will be kept for merging.

Name String
keep_second_edge

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
When on, the second edge is retained when merging vertices.

; keep_second_edge
; Turn on second edge keeping
(option:set "keep_second_edge" #t)
;; #f

[Top]


keep_second_face

Action
Sets whether or not the second face will be kept for merging.

Name String
keep_second_face

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
When on, the second face is retained when merging edges.

; keep_second_face
; Turn on second face keeping
(option:set "keep_second_face" #t)
;; #f

[Top]


merge

Action
Sets merging of common geometry.

Name String
merge

Scheme
Type Values Default
boolean #f, #t #t

C++
Type Values Default
logical FALSE, TRUE TRUE

Description
When on, edges and vertices are merged for regularized Booleans. This option affects the behavior of sweeping APIs. Thus, when this option is on, the edges with common geometry are merged during the sweeping operation.

; merge
; Turn off merging
(option:set "merge" #f)
;; #t

[Top]


merge_spline_vertex

Action
Sets merging of spline edges connected by a two-edge vertex.

Name String
merge_spline_vertex

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
If this option is on, it allows merging of spline edges connected by a two-edge vertex. Spline edges with different underlying geometry will also be merged.

; merge_spline_vertex
; Turn on merging
(option:set "merge_spline_vertex" #t)
;; #f

[Top]


new_periodic_splitting

Action
Controls how the periodic face splitting algorithm is used.

Name String
new_periodic_splitting

Scheme
Type Values Default
integer 0, 1, 2, 3 0

C++
Type Values Default
int 0, 1, 2, 3 0

Description
This option affects the behavior of APIs api_split_periodic_faces and api_convert_to_spline. It controls how periodic faces are split (for example, how many times to split; where to split; avoiding sliver faces, etc.). The option values are:

    0    Split at 0.0 and half of parameter range; split using planar face
    1    Split closed periodic faces twice; look for splitting parameters that do not cause sliver faces; split using isoparametric curves
    2    Split at 0.0 using isoparametric curves
    3    Split closed periodic faces once; look for a splitting parameter that does not cause sliver faces; split using an isoparametric curve
; new_periodic_splitting
; Split closed periodic twice
(option:set "new_periodic_splitting" 1)
;; 0

[Top]


slow_bool4

Action
Determines whether to regenerate pcurves.

Name String
slow_bool4

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
If this option is on, pcurves are regenerated during the last (fourth) stage of a Boolean operation (which makes the operation slower). If this option is off (default), the pcurves are simply reparameterized.

; slow_bool4
; Turn on pcurve regeneration
(option:set "slow_bool4" #t)
;; #f

[Top]


split_face_checking

Action
Controls whether or not split faces are checked for small faces.

Name String
split_face_checking

Scheme
Type Values Default
boolean #f, #t #f

C++
Type Values Default
logical FALSE, TRUE FALSE

Description
This option controls whether or not faces that are created by the splitting process of API api_split_periodic_faces are checked to see if any small faces were created. The check examines the face area and minimum edge length to find small faces. If this option is on, the checks are performed; if it is off, they are not.

; split_face_checking
; Turn on face split check
(option:set "split_face_checking" #t)
;; #f

[Top]


subsetting

Action
Sets the level of surface subsetting when trimming.

Name String
subsetting

Scheme
Type Values Default
string See Description "spline"

C++
Type Values Default
char* See Description "spline"

Description
Enables the use of the same underlying spl_sur for different faces. This provides a minor performance enhancement and a reduction in the size of SAT files. The valid values are:

"none"
Disable subsetting
"all"
Subset splines and tori
"spline"
Subset splines only
"torus"
Subset tori only

The torus value is for future implementation and currently does not provide any performance enhancement.

; subsetting
; Set subsetting to none, which gives same
; performance and SAT file size as 3.0
(option:set "subsetting" "none")
;; "spline"

[Top]


trim_faces

Action
Sets the trimming of splines to the parameter bounds of the face.

Name String
trim_faces

Scheme
Type Values Default
boolean #f, #t #t

C++
Type Values Default
logical FALSE, TRUE TRUE

Description
When on, enables the trimming of splines to the parameter bounds of the face during Booleans.

; trim_faces
; Turn off face trimming
(option:set "trim_faces" #f)
;; #t

[Top]