Home > User Guide > Modeling Operations > Blending
Local and Global Interference Checking
A critical portion of the blend algorithm is to detect the interference of the blend sheet with the geometry of the part being blended. Usually, interfering geometry can be detected by intersecting the spring curves of the sheet with geometry local to the blend. Occasionally, the surfaces of the sheet must be intersected with all of the geometry of the body to detect such global interferences.
The option bl_remote_ints directs the blending algorithm to perform global or local interference checking. This option is off by default, indicating that the algorithm is to perform local interference checking only. This speeds up blending dramatically in some cases (especially thin walled parts). Although not common, cases do sometimes arise which require global interference checking. If desired, option bl_remote_ints can be turned on, indicating that global interference checking is to be performed.
This section provides examples that illustrate some unusual cases that require global interference checking.
Vertex Blend with Univex Side Capping
Vertex blends that need univex side capping need global interference checking.
Scheme Example
; The example would fail if this option is not set (option:set "bl_remote_ints" #t) ; #f (define cube (solid:block (position -30 -30 -30) (position 30 30 30))) ; cube (define wb (wire-body:points (list (position 30 -30 30) (position 30 -10 30) (position 30 20 10) (position 30 -30 10) (position 30 -30 30)))) ; wb (define sht (sheet:cover-wires wb)) ; sht (sweep:law sht 60) ; #[entity 16 1] (solid:subtract cube sht) ; #[entity 15 1] ;; OUTPUT Original (define edge1 (pick:edge (ray (position 0 0 10) (gvector 1 0 0)))) ; edge1 (blend:entities edge1 "round" 13 "setback-start" 2 "setback-end" 2) ; #[entity 17 1] (define edge2 (pick:edge (ray (position 30 29 29) (gvector 0 -1 0)))) ; edge2 (blend:entities edge2 "round" 7 "setback-start" 5 "setback-end" 5) ; #[entity 18 1] (define edge3 (pick:edge (ray (position 0 0 10) (gvector 0 1 0)))) ; edge3 (blend:entities edge3 "round" 2 "setback-start" 3 "setback-end" 3) ; #[entity 19 1] (define vertex1 (pick:vertex (ray (position 0 20 10) (gvector 1 0 0)))) ; vertex1 (blend:entities vertex1 "setback" 3 "fix") ; (#[entity 21 1] #[entity 22 1] #[entity 23 1] ; #[entity 24 1] #[entity 25 1] #[entity 26 1] ; #[entity 27 1] #[entity 28 1]) ;; OUTPUT Result
![]()
Figure. Vertex Blend with Univex Side Capping
Convex Block with Hole
Some blends really need global intersections, such as a convex block with a hole.
Scheme Example
(option:set "bl_remote_ints" #t) ; #f (define cube (solid:block (position -30 -30 -30) (position 30 30 30))) ; cube (define cyl (solid:cylinder (position 0 0 -30) (position 0 0 30) 5)) ; cyl (entity:move cyl 20 0 0) ; #[entity 3 1] (solid:subtract cube cyl) ; #[entity 2 1] ;; OUTPUT Original (define edge1 (pick:edge (ray (position 30 0 0) (gvector 0 0 1)))) ; edge1 (blend:entities edge1 "round" 20 "fix") ; (#[entity 5 1] #[entity 6 1] ; #[entity 7 1] #[entity 8 1]) ;; OUTPUT Result
Figure. Convex Block with Hole
Pocket Loss with Checking
Occasionally, a blend may work without global interference checking, but the result could be slightly different than expected. In this example the cylindrical pocket gets lost if option bl_remote_ints is off, However, if it is on, the blend works as desired.
Scheme Example
(option:set "bl_remote_ints" #t) ; #f (define cube (solid:block (position -30 -30 -30) (position 30 30 30))) ; cube (define cyl (solid:cylinder (position 0 0 -10) (position 0 0 10) 5)) ; cyl (entity:move cyl 20 0 20) ; #[entity 3 1] (solid:subtract cube cyl) ; #[entity 2 1] ;; OUTPUT Original (define edge1 (pick:edge (ray (position 30 0 0) (gvector 0 0 1)))) ; edge1 (blend:entities edge1 "round" 20 "fix") ; (#[entity 5 1] #[entity 6 1] ; #[entity 7 1] #[entity 8 1]) ;; OUTPUT Result
Figure. Pocket Lost without Global Checking
Different Edge and Face Topology
If blend edge topology and sheet face topology are different, the scope of blending as a kind of local operation can occasionally be exceeded in some circumstances where it may have worked with global interference checking. In this example, the tunnel that takes the edge through to the far side of the block misleads the algorithms and the blend fails without global interference checking.
Scheme Example
; The example would fail if this option is not set (option:set "bl_remote_ints" #t) ; #f (define cube1 (solid:block (position -30 -30 -30) (position 30 30 30))) ; cube1 (define cube2 (solid:block (position -30 -30 -30) (position 30 30 30))) ; cube2 (entity:move cube2 30 0 30) ; #[entity 2 1] (solid:subtract cube1 cube2) ; #[entity 1 1] (define cube3 (solid:block (position -20 -10 -20) (position 20 10 20))) ; cube3 (define cube4 (solid:block (position -1 -10 -1) (position 1 10 1))) ; cube4 (solid:subtract cube3 cube4) ; #[entity 3 1] (solid:unite cube1 cube3) ; #[entity 1 1] ;; OUTPUT Original (define edge1 (pick:edge (ray (position -5 0 0) (gvector 1 0 0)))) ; edge1 (blend:entities edge1 "round" 15 "fix") ; (#[entity 6 1] #[entity 7 1] #[entity 8 1]) ;; OUTPUT Result
![]()
Figure. Different Edge and Face Topology
[Top]
© 1989-2007 Spatial Corp., a Dassault Systèmes company. All rights reserved.