Scheme Extensions |
|
|
Technical Article |
body-a | body |
body-b | body |
mode | string |
behavior | string |
ao | acis-options |
Note: All clashing face-pairs are returned; not only those that appear “significant”. For example, consider the case where two cubic bodies abut with a coincident face-pair. Ten face-pairs are returned in the clash data structure, as each face of the coincident pair also clashes with the four faces adjoining the coincident ones.
; body:clash ; Create a pair of interlocking cylindrical bodies (define c1 (solid:cylinder (position -10 0 0) (position 5 0 0) 5)) ;c1 (define c2 (solid:cylinder (position -5 0 0) (position 10 0 0) 5)) ;c2 ; Test for clash between the bodies (body:clash c1 c2 'sub_entities) ; ("Bodies interlock" (#[face 6 1] #[face 3 1] "Coincident, inside") ; (#[face 6 1] #[face 5 1] "Containment, B in A") ; (#[face 4 1] #[face 3 1] "Containment, A in B")) |
[Top]
body | body |
mpo | massprops-options |
ao | acis-options |
(integral)((y*y + z*z)dV)the off-diagonal terms are for the products of inertia; for example:
(integral)((x*y)dV)The values for mass properties should be expected to be different, depending on the normal to the projection plane, for many types of objects. One should attempt to select a projection plane that will simplify the body as much as possible. For instance, if the body were an extrusion, one would choose a plane perpendicular to the extrusion direction. This makes the numerical integration simpler.
; body:massprops ; Define parameters for creating a sphere (define radius 2) ;;radius (define center (position 1 2 3)) ;;center ; Make a spherical sheet body, and turn it inside-out (define body (sheet:face (face:sphere center radius))) ;;body (body:reverse body) ;;#[entity 2 1] ; Try to find its mass properties - by default, error thrown when encountering a void (define mp (body:massprops body)) ;;*** Error body:massprops: body forms a void; volume not calculated ; ; Change options to obtain alternate behavior ; ; Start with the default options object (define mpo (massprops:options)) ;;mpo ; Examine the default options mpo ;;#[massprops-options: ;; level = "volume-centroid-and-inertia", ;; accy = 0.01, ;; use-plane-info = #f, ;; plane-root = (0 0 0), ;; plane-normal = (0 0 1), ;; thickness = 0, ;; one-sided-sheet-opt = "closed-only"] ; Force calculation as a solid (massprops-options:set-one-sided-sheet-opt mpo "solid") ;;"error" ; Calculate only volume (massprops-options:set-level mpo "volume-only") ;;"volume-centroid-and-inertia" ; Increase the required accuracy to 0.1% (massprops-options:set-req-rel-accy mpo 0.001) ;;0.01 ; Examine the new options mpo ;;#[massprops-options: ;; level = "volume-only", ;; accy = 0.001, ;; use-plane-info = #f, ;; plane-root = (0 0 0), ;; plane-normal = (0 0 1), ;; thickness = 0, ;; one-sided-sheet-opt = "solid"] ; Redo the calculation with the new options (define mp (body:massprops body mpo)) ;;mp ; Examine the volume (massprops:get-volume mp) ;;-33.5103216382911 ; Examine the achieved accuracy (massprops:get-rel-accy-vol-achieved mp) ;;0 ; ; Now recalculate as if the sheet was double-sided, with a small thickness (massprops-options:set-one-sided-sheet-opt mpo "2sided") ;;"solid" (massprops-options:set-sheet-thickness mpo 0.01) ;;0 ; Calculate everything this time (massprops-options:set-level mpo "volume-centroid-and-inertia") ;;"volume-only" ; Examine the new options one-by-one (massprops-options:get-one-sided-sheet-opt mpo) ;;"2sided" (massprops-options:get-sheet-thickness mpo) ;;0.01 (massprops-options:get-level mpo) ;;"volume-centroid-and-inertia" (massprops-options:get-req-rel-accy mpo) ;;0.001 (massprops-options:get-use-plane-info mpo) ;;#f (massprops-options:get-plane-info mpo) ;;(#[position 0 0 0] . #[gvector 0 0 1]) ; Redo the calculation with the new options (define mp (body:massprops body mpo)) ;;mp ; Examine the volume (massprops:get-volume mp) ;;0.502654824574367 ; Examine the achieved accuracy (massprops:get-rel-accy-vol-achieved mp) ;;0 ; Examine the centroid (massprops:get-centroid mp) ;;#[position 1 2 3] ; Examine the inertia (massprops:get-inertia mp) ;;(7.87492558499842 1.00530964914873 1.5079644737231 1.00530964914873 6.3669611112 ;;7531 3.0159289474462 1.5079644737231 3.0159289474462 3.85368698840348) ; Find the principal moments (massprops:get-p-moments mp) ;;(1.34041286553164 1.34041286553165 1.34041286553164) ; Find the principal axes (massprops:get-p-axes mp) ;;(#[gvector 1 0 0] #[gvector 0 1 0] #[gvector 0 0 1]) ; ; Repeat the previous calculation with specified projection-plane information (massprops-options:set-use-plane-info mpo #t) ;;#f (massprops-options:set-plane-info mpo (position -1 -2 -3) (gvector 1 0 0)) ;;(#[position 0 0 0] . #[gvector 0 0 1]) ; Just calculate volume (massprops-options:set-level mpo "volume-only") ;;"volume-centroid-and-inertia" ; Redo the calculation with the new options (define mp (body:massprops body mpo)) ;;mp ; Examine the volume (massprops:get-volume mp) ;;0.502654824574367 |
[Top]
curve1 | curve | edge |
curve2 | curve | edge |
bounded | boolean |
acis-opts | acis-options |
; curve:intersect ; Create circular edge 1. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Create circular edge 2. (define edge2 (edge:circular (position 0 10 0) 20 -180)) ;; edge2 ; Determine the intersections of the two edges. (curve:intersect edge1 edge2) ;; (#[position -18.9983551919633 16.25 0] ;; #[position 18.9983551919633 16.25 0]) ; Additional example. (define line1 (edge:linear (position 0 5 0) (position 0 -40 0))) ;; line1 (define line2 (edge:linear (position -40 -10 0) (position 20 5 0))) ;; line2 ; find point of intersection between lines and ; but only intersections within bounds (curve:intersect line1 line2) ;; (#[position 0 4.44089209850063e-16 0]) (curve:intersect line1 line2 #f) ;; (#[position 0 4.44089209850063e-16 0]) |
[Top]
cvty | scm_cvty |
; cvty:concave ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list ; Determine if an edge is concave (cvty:concave (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:convex ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list ; Determine if an edge is convex (cvty:convex (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #t |
[Top]
cvty | scm_cvty |
; cvty:inflect ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:inflect (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:knife ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:knife (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:mixed ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:mixed (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:tangent ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:tangent (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:unknown ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:unknown (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
cvty | scm_cvty |
; cvty:unset ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (cvty:unset (pt-cvty-info:instantiate (edge:mid-pt-cvty-info (list-ref edge-list 0)) -1)) ;; #f |
[Top]
ed-cvty-info | scm_ed_cvty_info |
; ed-cvty-info:angles ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list ; Get recorded angles. (ed-cvty-info:angles (edge:ed-cvty-info (list-ref edge-list 0))) ;; (1 . 1) |
[Top]
ed-cvty-info | scm_ed_cvty_info |
tolerance | real |
; ed-cvty-info:instantiate ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (ed-cvty-info:instantiate (edge:ed-cvty-info (list-ref edge-list 0)) .01) ;; #[cvty: cvx] |
[Top]
ed-cvty-info | scm_ed_cvty_info |
; ed-cvty-info:tangent-convexity ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (ed-cvty-info:tangent-convexity (edge:ed-cvty-info (list-ref edge-list 0))) ;; #[cvty: knf] (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (ed-cvty-info:tangent-convexity (edge:ed-cvty-info (list-ref edge-list 0))) ;; #[cvty: knf] |
[Top]
ed-cvty-info | scm_ed_cvty_info |
; ed-cvty-info:unknown ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (ed-cvty-info:unknown (edge:ed-cvty-info (list-ref edge-list 0))) ;; #f |
[Top]
ed-cvty-info | scm_ed_cvty_info |
; ed-cvty-info:unset ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list ; Find out whether convexity is unset. (ed-cvty-info:unset (edge:ed-cvty-info (list-ref edge-list 0))) ;; #f |
[Top]
edge | edge |
insanity-type | string |
acis-opts | acis-options |
; edge:check-geometry ; Internal knot multiplicities creates a G1 discontinuity (define ctrlpts_pos (list (position -2 0 0)(position -1.5 0 0)(position 0 0 0) (position .75 0.5 0)(position 1 0.5 0)(position 1.1 1 0) (position 1.2 1 0)(position 1.5 1 0) (position 1.9 .75 0) (position 2 0.5 0)(position 2.1 .25 0)(position 2.5 0 0) (position 3 0 0)(position 4 0 0))) ;; ctrlpts_pos (define knot_v (list 0 0 0 1 2 3 4 4 4 5 6 7 7 7 8 9 9 9)) ;; knot_v (define spline (edge:spline-from-ctrlpts ctrlpts_pos knot_v)) ;; spline ; This should report: entid [nnn]: Warning: curve not G1 (edge:check-geometry spline) ;; entid 22318448: Warning: curve not G1 ;; () |
[Top]
edge | edge |
acis-opts | acis-options |
(part:clear) ;list of control points (define ctrlpts_pos (list (position -2 0 0) (position -1.5 0 0) (position 0 0 0) (position .75 0.5 0) (position 1 0.5 0) (position 1.1 1 0) (position 1.2 1 0) (position 1.5 1 0) (position 1.9 .75 0) (position 2 0.5 0) (position 2.1 .25 0) (position 2.5 0 0) (position 3 0 0) (position 4 0 0))) ;;ctrlpts_pos ;knot vector (define knot_v (list 0 0 0 1 2 3 4 4 4 5 6 7 7 7 8 9 9 9)) ;;knot_v ;create a spline edge with G1 discontinuity (define spline (edge:spline-from-ctrlpts ctrlpts_pos knot_v)) ;;spline ;check smoothness (edge:check-smoothness spline) ;;(("G1" . 7) ("G1" . 4)) |
[Top]
edge | edge |
param | real |
acis-opts | acis-options |
; edge:convexity ; Create a couple blocks for example. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 (define block2 (solid:block (position 0 10 0) (position 20 20 10))) ;; block2 ; Unite the two blocks (define unite (solid:unite block1 block2)) ;; unite ; Find the edges of blocks 1 and 2 (define edgelist (entity:edges unite)) ;; edgelist ; Define edges 1 and 2 (define edge1 (list-ref edgelist 0)) ;; edge1 ; verify edge1 is concave. (edge:convexity edge1) ;; "concave" (define edge2 (list-ref edgelist 17)) ;; edge2 (edge:convexity edge2) ;; "convex" ; OUTPUT convexity |
[Top]
edge | edge |
use-curvatures | boolean |
approx-ok | boolean |
interval | real . real |
common-range | real |
; edge:ed-cvty-info ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (define edge1 (list-ref edge-list 0)) ;; edge1 ; Get information on an edge for a 0.01 angle ; tolerance. (ed-cvty-info:instantiate (edge:ed-cvty-info edge1) 0.01) ;; #[cvty: cvx] |
[Top]
edge | edge |
use-curvatures | boolean |
; edge:end-pt-cvty-info ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (edge:end-pt-cvty-info (list-ref edge-list 0)) ;; #[pt_cvty_info: 1 [cvty: knf] (tol 1e-10)] |
[Top]
edge | edge |
entity | entity |
ao | acis-options |
; edge:entity-rel ; Define an edge (define e1 (edge:linear (position 0 0 0) (position 20 0 0))) ;; e1 ; Define another edge (define e2 (edge:linear (position 10 0 0) (position 30 0 0))) ;; e2 (edge:entity-rel e1 e2) ;; ("overlapping edges" (#[position 10 0 0] ;; #[position 20 0 0]) (("tangent" . "coincident") ;; ("coincident" . "unknown"))) |
[Top]
edge | edge |
insanity-type | string |
acis-opts | acis-options |
; edge:geometric-insanities ; Internal knot multiplicities create a G1 discontinuity (define ctrlpts_pos (list (position -2 0 0)(position -1.5 0 0)(position 0 0 0) (position .75 0.5 0)(position 1 0.5 0)(position 1.1 1 0) (position 1.2 1 0)(position 1.5 1 0) (position 1.9 .75 0) (position 2 0.5 0)(position 2.1 .25 0)(position 2.5 0 0) (position 3 0 0)(position 4 0 0))) ;; ctrlpts_pos (define knot_v (list 0 0 0 1 2 3 4 4 4 5 6 7 7 7 8 9 9 9)) ;; knot_v (define spline (edge:spline-from-ctrlpts ctrlpts_pos knot_v)) ;; spline (edge:geometric-insanities spline) ;; (#[edge warning: curve not G1] ;; ) |
[Top]
edge1 | edge |
edge2 | edge |
acis-opts | acis-options |
; curve:intersect ; Create circular edge 1. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Create circular edge 2. (define edge2 (edge:circular (position 0 10 0) 20 -180)) ;; edge2 ; Determine the intersections of the two edges. (curve:intersect edge1 edge2) ;; (#[position -18.9983551919633 16.25 0] ;; #[position 18.9983551919633 16.25 0]) ; Additional example. (define line1 (edge:linear (position 0 5 0) (position 0 -40 0))) ;; line1 (define line2 (edge:linear (position -40 -10 0) (position 20 5 0))) ;; line2 ; find point of intersection between lines and ; but only intersections within bounds (curve:intersect line1 line2) ;; (#[position 0 4.44089209850063e-16 0]) (curve:intersect line1 line2 #f) ;; (#[position 0 4.44089209850063e-16 0]) |
[Top]
edge | edge |
use-curvatures | boolean |
; edge:mid-pt-cvty-info ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (edge:mid-pt-cvty-info (list-ref edge-list 0)) ;; #[pt_cvty_info: 1 [cvty: knf] (tol 1e-10)] |
[Top]
edge | edge |
param | real |
use-curvatures | boolean |
; edge:pt-cvty-info ; Create a block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (edge:pt-cvty-info (list-ref edge-list 0) 1) ;; #[pt_cvty_info: 1 [cvty: knf] (tol 1e-10)] |
[Top]
edge | edge |
proportion | real |
Description
This extension is provided to test
sg_split_edge_at_vertex.
; edge:split-at-proportion ; create solid block. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define split (edge:split-at-proportion (car (entity:edges b)) 0.5)) ;; split |
[Top]
edge | edge |
vert | vertex |
pos | position |
Description
This extension tests
sg_split_edge_at_vertex. If the second argument is a vertex,
then this is incorporated into the body; otherwise, it will make one.
; edge:split-at-vertex ; create solid block. (define b (solid:block (position 0 0 0) (position 10 10 10))) (entity:fix-transform b) (define e (list-ref (entity:edges b) 0)) (define v (vertex:from-position (edge:mid-point e))) (edge:split-at-vertex e v) (define p (edge:mid-point e)) (edge:split-at-vertex e p) |
[Top]
edge | edge |
use-curvatures | boolean |
; edge:start-pt-cvty-info ; create a block (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (edge:start-pt-cvty-info (list-ref edge-list 0)) ;; #[pt_cvty_info: 1 [cvty: knf] (tol 1e-10)] |
[Top]
edge | edge |
tol | real |
acis-opts | acis-options |
; edge:tangent? ; (part:clear) ;; #t ; Create a surface and attach a blend attribute to one of the edges. (define block (solid:block (position 0 0 0)(position 1 1 1))) ;; block (blend:round (list-ref (entity:edges block)3) .25 "fix") ;; #t ; Define the edges on this surface (define e1 (list-ref (entity:edges block)0)) ;; e1 (entity:set-color e1 1) ;; () (define e2 (list-ref (entity:edges block)1)) ;; e2 (entity:set-color e2 3) ;; () (define e3 (list-ref (entity:edges block)2)) ;; e3 (entity:set-color e3 1) ;; () (define e4 (list-ref (entity:edges block)3)) ;; e4 (entity:set-color e4 3) ;; () (edge:tangent? e1) ;; #f (edge:tangent? e2) ;; #t (edge:tangent? e3) ;; #f (edge:tangent? e4) ;; #t |
[Top]
entity-list | entity | (entity ...) |
check-level | integer |
insanity-type | string |
acis-opts | acis-options |
; entity:check ; Create solid block 1. (define block1 (solid:block (position 0 0 0) (position 10 10 10))) ;; block1 ; Determine if the entity passes the checks. (entity:check block1) ; checked: ; 1 lumps ; 1 shells ; 0 wires ; 6 faces ; 6 loops ; 24 coedges ; 12 edges ; 8 vertices ;; () ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (entity:check edge1) ; entid 1236816: edge without backptr ; entid 1231288: vertex has edge 1236816 ; in group 0 times ; entid 1231312: vertex has edge 1236816 ; in group 0 times ; checked: ; 0 lumps ; 0 shells ; 0 wires ; 0 faces ; 0 loops ; 0 coedges ; 1 edges ; 2 vertices ;; (#[entity 3 1]) |
[Top]
part1 | entity | position |
part2 | entity | position |
acis-opts | acis-options |
; entity:dist ; Create a law surface and lemon torus. (define c1 (face:law "vec (x,y,sin (x)*cos (y))" -10 10 -10 10)) ;; c1 (define c2 (face:torus (position 0 0 9.5) -5 10 0 360 0 360 (gvector 0 0 -1))) ;; c2 ; Get minimum distance between faces (entity:dist c1 c2) ;; (0.60223495915902 #[position 0.407311827177182 0 ;; 0.396142511453466] #[par-pos 0.407311827177182 ;; 0] #[entity 2 1] "FACE" #[position ;; 8.88178419700125e-016 1.08766893609269e-031 ;; 0.839745962155614] 0 #[entity 4 1] "VERTEX") |
[Top]
entity | entity |
vector1 | gvector |
vector2 | gvector |
vector3 | gvector |
acis-opts | acis-options |
; entity:extrema ; create topology to illustrate command. (define s1 (solid:block (position 0 0 0) (position 10 10 5))) ;; s1 (define s2 (solid:block (position 3 0 5) (position 7 3 8))) ;; s2 (define s3 (solid:block (position 3 7 5) (position 7 10 2))) ;; s3 (define unite (bool:unite s1 s2)) ;; unite (define subtract (bool:subtract s1 s3)) ;; subtract (define extrema (entity:extrema s1 (gvector 1 1 1) (gvector 0 0 1) (gvector 1 0 0))) ;; extrema |
[Top]
entity-list | entity | (entity ...) |
check-level | integer |
insanity-type | string |
acis-opts | acis-options |
; entity:insanities ; Create solid block 1. No problems here! (define block1 (solid:block (position 0 0 0) (position 10 10 10))) ;; block1 ; Determine if the entity passes the checks. (entity:insanities block1) () ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (entity:insanities edge1) ; (#[edge error: edge without backptr] ;; ) |
[Top]
entity | entity |
pattern | pattern |
copy-pat | boolean |
seed-index | integer |
no-cross-face-list | entity | (entity ...) |
check | boolean |
acis-opts | acis-options |
; entity:pattern ; Make a spherical body. (define body (solid:sphere (position 0 0 0) 1)) ;; body ; Make a circular pattern. (define center (position 11 2 3)) ;; center (define normal (gvector 0 0 1)) ;; normal (define num 12) ;; num (define pat (pattern:elliptical center normal num)) ;; pat ; Apply the pattern to the body. (define new-pattern (entity:pattern body pat)) ;; new-pattern |
[Top]
entity | entity |
position | position |
acis-opts | acis-options |
; entity:point-distance ; Create a block and get the distance ; between a given point and the block. (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 (define distance1 (entity:point-distance block1 (position 30 25 37))) ; Point on entity 10.000000 20.000000 20.000000 ;; distance1 |
[Top]
entity1 | entity |
entity2 | entity |
entity-list1 | entity | (entity ...) |
entity-list2 | entity | (entity ...) |
acis-opts | acis-options |
; entity:touch ; Create four cylinders. (define c1 (face:cylinder (position 0 0 0) (position 0 0 1) 1 1)) ;; c1 (define c2 (face:cylinder (position 1 0 0) (position 1 0 1) 1 1)) ;; c2 (define c3 (face:cylinder (position 2 5 0) (position 2 5 1) 1 1)) ;; c3 (define c4 (face:cylinder (position 3 5 0) (position 3 5 1) 1 1)) ;; c4 (zoom-all) ;; #[view 1573816] ; See if c1 touches c2 (entity:touch c1 c2) ;; #t ; See if any cylinders in the first list touch ; any in second list (entity:touch (list c1 c2) (list c3 c4)) ;; #f |
[Top]
face | face |
insanity-type | string |
acis-opts | acis-options |
; face:check-geometry (wcs (position 0 0 0) (gvector 1 0 0) (gvector 0 1 0)) ;; #[entity 1 1] (define w1 (wire-body (list (edge:linear (position 0 30 30) (position 0 -30 30)) (edge:linear (position 0 -30 30) (position 0 -30 -30)) (edge:linear (position 0 -30 -30) (position 0 30 -30)) (edge:linear (position 0 30 -30) (position 0 30 30))))) ;; w1 (define w2 (entity:copy w1)) ;; w2 (entity:move w2 25 0 0) ;; #[entity 7 1] (define block (sheet:skin-wires (list w1 w2))) ;; block (entity:rotate block 0 0 1 45) ;; #[entity 8 1] (entity:delete (list w1 w2)) ;; () (define cyl2 (solid:cylinder (position 0 0 0) (position 25 0 0) 30)) ;; cyl2 (entity:rotate cyl2 0 0 1 -45) ;; #[entity 9 1] (entity:move cyl2 0 150 0) ;; #[entity 9 1] (define face1 (list-ref (entity:faces block) 0)) ;; face1 (define face2 (list-ref (entity:faces cyl2) 2)) ;; face2 (entity:set-color face1 1) ;; () (entity:set-color face2 1) ;; () ; Set the face take-off factors to '5' and '5'. This will ; create a self-intersecting surface. ; Also, set "self_int_test" to false, allowing the operation to ; create a self-intersecting surface. (define interface (slinterface:face-lofting face1 5 face2 5 (skin:options "perpendicular" #t "allow_same_uv" #t "self_int_test" #f))) ;; interface (slinterface:align-wires interface) ;; #t (define body (slinterface:build-body interface)) ;; body (slinterface:delete-interface interface) ;; #t (define f1 (cadr (pick:face (ray (position 451.765 137.953 -183.507) (gvector -0.902473 -0.129551 0.410804))))) ;; f1 ; This should report: entid [nnn]: Error: surface self-intersects (face:check-geometry f1) ;; entid 22202408: Error: surface self-intersects ;; () |
[Top]
face-a | face |
face-b | face |
ao | acis-options |
; face:clash |
[Top]
face | entity |
position | position |
; face:closest-point ; Create a cylindrical face (define c (face:cylinder (position 0 0 0) (position 10 0 0) 2)) ;c ; Choose a position (define pos (position 3 5 0)) ;pos (face:closest-point c pos) ;; #[position 3 2 0] |
[Top]
face | face |
insanity-type | string |
acis-opts | acis-options |
; face:geometric-insanities (wcs (position 0 0 0) (gvector 1 0 0) (gvector 0 1 0)) ;; #[entity 1 1] (define w1 (wire-body (list (edge:linear (position 0 30 30) (position 0 -30 30)) (edge:linear (position 0 -30 30) (position 0 -30 -30)) (edge:linear (position 0 -30 -30) (position 0 30 -30)) (edge:linear (position 0 30 -30) (position 0 30 30))))) ;; w1 (define w2 (entity:copy w1)) ;; w2 (entity:move w2 25 0 0) ;; #[entity 7 1] (define block (sheet:skin-wires (list w1 w2))) ;; block (entity:rotate block 0 0 1 45) ;; #[entity 8 1] (entity:delete (list w1 w2)) ;; () (define cyl2 (solid:cylinder (position 0 0 0) (position 25 0 0) 30)) ;; cyl2 (entity:rotate cyl2 0 0 1 -45) ;; #[entity 9 1] (entity:move cyl2 0 150 0) ;; #[entity 9 1] (define face1 (list-ref (entity:faces block) 0)) ;; face1 (define face2 (list-ref (entity:faces cyl2) 2)) ;; face2 (entity:set-color face1 1) ;; () (entity:set-color face2 1) ;; () ; Set the face take-off factors to "5" and "5". This will ; create a self-intersecting surface. ; Also, set "self_int_test" to false, allowing the operation to ; create a self-intersecting surface. (define interface (slinterface:face-lofting face1 5 face2 5 (skin:options "perpendicular" #t "allow_same_uv" #t "self_int_test" #f))) ;; interface (slinterface:align-wires interface) ;; #t (define body (slinterface:build-body interface)) ;; body (slinterface:delete-interface interface) ;; #t (define f1 (cadr (pick:face (ray (position 451.765 137.953 -183.507) (gvector -0.902473 -0.129551 0.410804))))) ;; f1 (face:geometric-insanities f1) ;; (#[face error: surface self-intersects] ;; ) |
[Top]
face | face |
from-pos | position |
to-pos | position |
proj-type | boolean |
transf | transform |
acis-opts | acis-options |
; face:get-silhouette ;; Define solid and reference (part:clear) ;; #t (view:dl) ;; #[view 15795402] (define s (solid:sphere (position 0 0 0) 1)) ;; s (iso) ;; #[view 15795402] (zoom-all) ;; #[view 15795402] (define f (list-ref (entity:faces s)0)) ;; f (face:get-silhouette f (position 2 2 2)(position -2 -2 -2)) ;; (#[entity 3 1]) |
[Top]
face-entity | face |
test-position | position |
transf | transform |
u-guess | double |
v-guess | double |
prev-pos | position |
prev-pos-containment | string |
use-cache | integer |
cache-size | integer |
acis-opts | acis-options |
The optional argument
use-cache, if supplied, is:
0, the cache is not used. Will be input as FALSE in
api_point_in_face.
1, the cache is used to determine point in face
relationships. Will be input as TRUE.
2, this function runs in a testing mode - it tries the
point in face containments first without using the cache, then tries again with
the cache verifying the answers remain the same. Will be
input as TRUE also.
The optional argument
cache-size
specifies the size of the cache array points. This argument is only meaningful
when
use-cache
is either 1 or 2.
Debug mode (cache = 2):
The function returns the containment string corresponding to the point in face
answers for the point, except when run in debug mode (use-cache
equal to 2), in which case the percentage improvement of the cached time to the
time without using the cache is returned, i.e. (time_without - time_with) /
time_without * 100.
; face:point-relationship ; Create a planar face. (define face (face:plane (position 0 0 0) 10 20 (gvector 0 0 1))) ;; face ; Define position 1 (define test1 (position 0 0 0)) ;; test1 ; Relationship between face and position 1 (face:point-relationship face test1) ;; "boundary" ; Define position 2 (define test2 (position 5 10 0)) ;; test2 ; Relationship between face and position 2 (face:point-relationship face test2) ;; "inside" ; Define position 3 (define test3 (position 15 10 0)) ;; test3 ; Relationship between face and position 3 (face:point-relationship face test3) ;; "outside" |
[Top]
face-entity | face |
position-list | position |
transf | transform |
u-guess | double |
v-guess | double |
use-cache | integer |
cache-size | integer |
acis-opts | acis-options |
; face:point-relationship-list ; Create a planar face. (define face (face:plane (position 0 0 0) 10 20 (gvector 0 0 1))) ;; face ; Define position 1 (define test1 (position 0 0 0)) ;; test1 ; Define position 2 (define test2 (position 5 10 0)) ;; test2 ; Define position 3 (define test3 (position 15 10 0)) ;; test2 ; Make a list (define l (list test1 test2 test3)) ;; l ; Relationship between face and list not using the cache (face:point-relationship-list face l) ;; ; Relationship between face and list using the cache (face:point-relationship-list face l 1) ;; |
[Top]
face-entity | face |
test-position | position |
; face:ray-at-position ; Create a solid block. (define block1 (solid:block (position 0 0 0) (position 40 40 40))) ;; block1 ; Get a list of the block's faces. (define faces1 (entity:faces block1)) ;; faces1 ; Find the position and normal on the faces ; closest to the given points. (face:ray-at-position (car (cdr faces1)) (position 0 0 0)) ;; #[ray (0 0 0) (0 0 -1)] (face:ray-at-position (car (cdr (cdr (cdr (cdr (cdr faces1)))))) (position 50 100 30)) ;; #[ray (40 40 30) (1 0 0)] |
[Top]
insanity | insanity |
Description
This extension returns a list of any auxiliary messages relating to the given
insanity object. If there are no auxiliary messages, an empty string is
returned in the list.
; insanity:aux-msg ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:aux-msg (car insanities)) ; ("") |
[Top]
insanity | insanity |
; insanity:entity ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 edge1 ;; #[entity 1 1] ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:entity (car insanities)) ;; #[entity 1 1] |
[Top]
insanity-list | insanity | insanity...) |
acis-opts | acis-options |
; insanity:fix ; Load in a part with problems (define body (part:load 'overclamped_spline.sat)) ; body (define is (entity:insanities body 30)) ; checked: ; 1 lumps ; 1 shells ; 0 wires ; 1 faces ; 1 loops ; 5 coedges ; 5 edges ; 5 vertices ;; is is ;(#[edge error: Curve approximation has knots with multiplicity greater ; than the curve degree] ; #[edge error: error in control point coincidence] ; ) (insanity:fix is) ;((#[edge error: Curve approximation has knots with multiplicity ; greater than the curve degree]) ; #[edge error: error in control point coincidence]) (entity:insanities (entity 1) 30) ; checked: ; 1 lumps ; 1 shells ; 0 wires ; 1 faces ; 1 loops ; 5 coedges ; 5 edges ; 5 vertices ;() |
[Top]
insanity | insanity |
; insanity:message ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:message (car insanities)) ;; "edge without backptr" |
[Top]
insanity | insanity | (insanity...) |
; insanity:print ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:print (car insanities)) ; entid 11130856: Error: edge without backptr ;;() |
[Top]
insanity | insanity |
; insanity:sub-category ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:sub-category (car insanities)) ; "No sub category" |
[Top]
insanity | insanity |
; insanity:type ; Create a circular edge. (define edge1 (edge:circular (position 0 0 0) 25 0 185)) ;; edge1 ; Determine if edge1 passes the checks. (define insanities (entity:insanities edge1)) ; (#[edge error: edge without backptr] ;; ) (insanity:type (car insanities)) ; "error" |
[Top]
entity-list | entity | (entity ...) |
options | string |
acis-opts | acis-options |
; law:boundary-field ; Example not available for this release. |
[Top]
entity1 | entity |
entity2 | entity |
; law:min-dist ; Create a law surface and lemon torus. (define c1 (face:law "vec(x,y,sin(x)*cos(y))" -10 10 -10 10)) ;; c1 (define c2 (face:torus (position 0 0 9.5) -5 10 0 360 0 360 (gvector 0 0 -1))) ;; c2 ; Get minimum distance between faces (define t10 (law:min-dist c1 c2)) ; Point1 0.840486 0.000000 0.744968 ; Point2 0.549500 0.000000 1.181163 ;; t10 |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
mp | massprops |
See the (body:massprops)
example. |
[Top]
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
Description
Returns an indicator of the mass properties to be calculated.
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
level | string |
The former level is returned.
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
osso | string |
The value "closed-only" causes an error to be thrown when the body is found to have one or more open, single-sided sheets. The value "closed-only" also produces an error when a closed solid is found to have a negative volume, that is, when it forms a void. The other two choices, "solid" and "2sided", cause the volume (positive or negative) of any body to be calculated as though for a solid or a double-sided sheet body, respectively, with the latter calculation dependent upon the specified thickness.
The former one-sided-sheet option is returned.
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
root | position |
normal | vector |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
err | real |
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
thickness | real |
The former sheet thickness is returned.
See the (body:massprops)
example. |
[Top]
mpo | massprops-options |
flag | boolean |
See the (body:massprops)
example. |
[Top]
pt-cvty-info | scm_pt_cvty_info |
; pt-cvty-info:angle ; Create a block (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (pt-cvty-info:angle (edge:mid-pt-cvty-info (list-ref edge-list 0))) ;; 1 |
[Top]
pt-cvty-info | scm_pt_cvty_info |
tol | real |
; pt-cvty-info:instantiate ; Defines some geometry and return the convexity. (define w (solid:wiggle 60 60 60 "sym")) ;; w (define edge (list-ref (entity:edges w) 0)) ;; edge (pt-cvty-info:instantiate (edge:mid-pt-cvty-info edge) 0.01) ;; #[cvty: cvx] |
[Top]
pt-cvty-info | scm_pt_cvty_info |
; pt-cvty-info:tangent-convexity ; Create a block with a wiggle top (define w (solid:wiggle 60 60 60 "sym")) ;; w ; Define the edges of the block (define edge (list-ref (entity:edges w) 0)) ;; edge (pt-cvty-info:tangent-convexity (edge:mid-pt-cvty-info edge)) ;; #[cvty: cvx knf] |
[Top]
pt-cvty-info | scm_pt_cvty_info |
; pt-cvty-info:unknown ; Create a block (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (pt-cvty-info:unknown (edge:mid-pt-cvty-info (list-ref edge-list 0))) ;; #f |
[Top]
pt-cvty-info | scm_pt_cvty_info |
; pt-cvty-info:unset ; Create a block (define block1 (solid:block (position 0 10 0) (position 10 20 20))) ;; block1 ; Define the edges of block1 (define edge-list (entity:edges block1)) ;; edge-list (pt-cvty-info:unset (edge:mid-pt-cvty-info (list-ref edge-list 0))) ;; #f |
[Top]
ray_point | position |
ray_direction | gvector |
ray_radius | real |
"type_string" | string |
target_body | entity |
acis-opts | acis-options |
(part:clear)
;create a solid block (define blk (solid:block 0 0 0 10 10 10)) ;;blk ;set start point of ray. (define pt (position 5 5 -5)) ;;pt ;set direction of the ray. (define v (gvector 0 0 1)) ;;v ;set radius of ray. (define ray_rad 0.01) ;;ray_rad ;set type of entities wanted to FACE (define type "FACE") ;get list of faces hit by given ray (define f_list (ray:get-ents pt v ray_rad type blk)) ;;f_list f_list ;;(#[entity 2 1] #[entity 3 1]) ;set the color of selected faces to RED (entity:set-color f_list RED) ;; () ;set start point of ray. (define pt1 (position 5 0 -5)) ;set type of entities wanted tp COEDGE (define type "COEDGE") ;get list of coedges hit by given ray (ray:get-ents pt1 v ray_rad type blk) ;;(#[entity 4 1] #[entity 5 1] #[entity 6 1] #[entity 7 1]) ;OUTPUT Examples |
[Top]
entity | entity |
test-position | position |
use-boxes | boolean |
acis-opts | acis-options |
; solid:classify-position ; Create a solid block. (define block1 (solid:block (position 0 0 0) (position 15 15 15))) ;; block1 ; Classify point 1 with respect to the solid. (solid:classify-position block1 (position 6 3 8)) ;; -1 (solid:classify-position block1 (position 0 0 0)) ;; 0 ; Classify point 2 with respect to the solid. (solid:classify-position block1 (position -4 -4 -4)) ;; 1 |
[Top]
entity | body |
ray | ray |
ray-radius | double |
hits-wanted | integer |
acis-opts | acis-options |
; solid:ray-test ; Create a solid block. (define block1 (solid:block (position 0 0 0) (position 40 40 40))) ;; block1 ; Determine where the ray intersects the solid block. (solid:ray-test block1 (ray (position 0 0 0) (gvector 0 0 1))) ;; ((#[entity 4 1] . #[position 0 0 0]) ;; (#[entity 3 1] . #[position 0 0 40])) |
[Top]
tm-check | tm-chk-info |
; tcoedge-bad-crv:csl ; Requires a bad sat file to generate this error. ; Example/bad sat file not available at this time. |
[Top]
tm-check | tm-chk-info |
; tcoedge-bad-crv? ; Build block for example. (define block (solid:block (position 0 0 0) (position 10 10 10))) ;; block (define errors (tm-check:all (car (entity:edges block)))) ;; errors (tcoedge-bad-crv? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tcoedge-bs2-non-g1 ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tcoedge-bs2-non-g1? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tcoedge-bs2-outside-sf? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tcoedge-bs2-outside-sf? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tcoedge-crv-non-g1? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tcoedge-crv-non-g1? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-bad-crv:csl ; Requires a bad sat file to generate this error. ; Example/bad sat file not available at this time. |
[Top]
tm-check | tm-chk-info |
; tedge-bad-crv? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-bad-crv? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-crv-non-g1? ; Create geometry to test command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-crv-non-g1? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-local-self-int? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-local-self-int? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-remote-self-int:other-edge-param ; Create geometry to illustrate command. (define block (solid:block (position 0 0 0) (position 10 10 10))) ;; block ; Get list of all edges on block. (define edges (car (entity:edges block))) ;; edges (tm-check:all edges) ;; (#[tm_bad_topology 58e23b8]) (tedge-remote-self-int? edges) ;; #f (define t (tedge-remote-self-int:other-edge-param (car edges)) ;; t |
[Top]
tm-check | tm-chk-info |
; tedge-remote-self-int? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-remote-self-int? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-tcoedge-bad-geom? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-tcoedge-bad-geom? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-tcoedge-bad-tol? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-tcoedge-bad-tol? (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tedge-tcoedge-ranges:start ; Requires a bad sat file to generate this error. ; Example/bad sat file not available at this time. |
[Top]
tm-check | tm-chk-info |
; tedge-tcoedge-ranges? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tedge-tcoedge-ranges? (car errors)) ;; #f |
[Top]
tm-check | boolean |
; tm-bad-topology? ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-bad-topology? (car errors)) ;; #t |
[Top]
edge | edge |
; tm-check:all ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:all e) ;; () ; this tedge is fine |
[Top]
coedge | coedge |
; tm-check:tcoedge ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tcoedge (car (entity:tcoedges e))) ;; () ; coedge geometry is fine |
[Top]
coedge | coedge |
; tm-check:tcoedge-bad-crv ; Create geometry to illustrate command. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tcoedge-bad-crv (car (entity:tcoedges e))) ;; () ; geometry is valid |
[Top]
coedge | tcoedge |
; tm-check:tcoedge-bs2-non-g1 ; Check to see if the parameter curve is G1 or not. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tcoedge-bs2-non-g1 (car (entity:tcoedges e))) ;; () ; bs2_curve is G1 |
[Top]
coedge | tcoedge |
; tm-check:tcoedge-bs2-outside-sf ; Check a parameter curve of a coedge. (define block (solid:block (position 0 0 0) (position 10 10 10))) ;; block (define list (car (tolerant:fix (car (entity:edges block))))) ;; list (tm-check:tcoedge-bs2-outside-sf (car (entity:tcoedges block))) ;; () ; bs2_curve lies within surface |
[Top]
coedge | tcoedge |
; tm-check:tcoedge-crv-non-g1 ; Check to see if the coedge is G1 or not. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tcoedge-crv-non-g1 (car (entity:tcoedges e))) ;; () ; 3D curve is G1 |
[Top]
edge | tedge |
; tm-check:tedge ; Check all tolerant edge checks. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge e) ;; () ; edge geometry is fine |
[Top]
edge | tedge |
; tm-check:tedge-bad-crv ; Check to see if the edge is a legal edge. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-bad-crv e) ;; () ; geometry is valid |
[Top]
edge | tedge |
; tm-check:tedge-crv-non-g1 ; Check to see if the curve is G1 or not. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-crv-non-g1 e) ;; () ; geometry is valid |
[Top]
edge | tedge |
; tm-check:tedge-local-self-int ; Check for edge local self-intersections. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-local-self-int e) ;; () ; geometry is valid |
[Top]
edge | tedge |
; tm-check:tedge-remote-self-int ; Check for edge remote self-intersections. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-remote-self-int e) ;; () ; geometry is valid |
[Top]
edge | tedge |
; tm-check:tedge-self-int ; Check for edge self-intersection. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-self-int e) ;; () ; edge geometry does not self-intersect |
[Top]
coedge | tcoedge |
; tm-check:tedge-tcoedge ; Check all tests for edge tolerance. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-tcoedge (car (entity:tcoedges e))) ;; () ; coedge geometry is fine |
[Top]
coedge | tcoedge |
; tm-check:tedge-tcoedge-bad-geom ; Check the coedge for bad geometry. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-tcoedge-bad-geom (car (entity:tcoedges e))) ;; () ; geometry is valid |
[Top]
coedge | tcoedge |
; tm-check:tedge-tcoedge-bad-tol ; Check the coedge for bad tolerance. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-tcoedge-bad-tol (car (entity:tcoedges e))) ;; () ; geometry is valid |
[Top]
coedge | tcoedge |
; tm-check:tedge-tcoedge-ranges ; Check the coedge and edge for compatibility. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-tcoedge-ranges (car (entity:tcoedges e))) ;; () ; geometry is valid |
[Top]
tedge | tedge |
; tm-check:tedge-tol ; Check the recorded tolerance of a tedge. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define e (car (tolerant:fix (car (entity:edges b))))) ;; e (tm-check:tedge-tol e) ;; () ; tolerance is correct |
[Top]
edge | tedge |
; tm-check:tm-bad-topology ; Check for bad topology and return the information. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:tm-bad-topology (car (entity:edges b)))) ;; errors ; the EDGE was not a TEDGE |
[Top]
tm-check | tm-chk-info |
; tm-chk-info:coedge ; Print out the coedge where an error occurs. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-chk-info:coedge (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tm-chk-info:coedge-param ; Print out the coedge parameter of a given tolerant ; model information set. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-chk-info:coedge-param (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
; tm-chk-info:edge ; Print out the edge where an error occurs. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (define checks (tm-chk-info:edge (car errors))) ;; checks |
[Top]
tm-check | tm-chk-info |
; tm-chk-info:edge-param ; Print out the edge parameter of a given tolerant ; model information set. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-chk-info:edge-param (car errors)) ;; #f |
[Top]
tm-check | tm-chk-info |
port | string |
; tm-chk-info:print ; Print out the contents of a given tolerant model ; information set. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-chk-info:print (car errors)) ; tm_bad_topology: edge 20469008 ;; #[tm_bad_topology 4059b210] |
[Top]
tm-check | tm-chk-info |
port | string |
; tm-chk-info:print1 ; Print out the contents of a given tolerant model ; information set. (define b (solid:block (position 0 0 0) (position 10 10 10))) ;; b (define errors (tm-check:all (car (entity:edges b)))) ;; errors (tm-chk-info:print1 (car errors)) ; tm_bad_topology: edge 1413712 ;; #[tm_bad_topology 4059b210] |
[Top]
object | scheme-object |
; tm-chk-info? ; Check to see if a Scheme Object is a ; tolerant model. (define cube (solid:block (position 0 0 0) (position 10 10 10))) ;; cube (define errors (tm-check:all (car (entity:edges cube)))) ;; errors (tm-chk-info? (car errors)) ;; #t |
[Top]
wire-body | wire-body |
acis-opts | acis-options |
; wire-body:self-intersect? ; No example available at this time. |
[Top]
© 1989-2007 Spatial Corp., a Dassault Systèmes company. All rights reserved.