REFERENCE / 12
Array and Frame Signatures
linear-array
- signature:
linear-array count x y z shape - result: same geometry family as input
radial-array
- signature:
radial-array count angle radius shape - result: same geometry family as input
grid-array
- signature:
grid-array rows cols x y shape - result: same geometry family as input
arc-array
- signature:
arc-array count radius start-angle end-angle shape - result: same geometry family as input
repeat
- signature:
repeat index count expr - verifier recognizes form
- geometry lowerers do not currently expose dedicated authored lowering path like
repeat-union/repeat-compound/repeat-pick
repeat-union
- signature:
repeat-union index count expr - index must be symbol
- body should produce geometry
- result: union/fused geometry
repeat-compound
- signature:
repeat-compound index count expr - index must be symbol
- body should produce geometry
- result: compound geometry
- native caveat: currently solid-only
repeat-pick
- signature:
repeat-pick index count predicate expr - index must be symbol
- predicate decides whether current body instance is selected
- result: last matching geometry
for-union
- macro alias:
for-union (index count) body- lowers to
repeat-union
for-compound
- macro alias:
for-compound (index count) body- lowers to
repeat-compound
plane
- signature:
plane - keywords:
:origin (x y z):x (x y z):normal (x y z)- result:
Frame
Defaults:
- origin
(0 0 0) - x direction
(1 0 0) - normal
(0 0 1)
location
- verifier signature:
location [frame] - authored backend-safe signature:
location frame - optional keywords:
:offset (x y z):rotate (x y z)- result:
Frame
path-frame
- signature:
path-frame path - optional keywords:
:at start | end | number:up (x y z)- result:
Frame
place
- signature:
place frame shape - optional keywords:
:offset (x y z):rotate (x y z)- result: placed shape
clip-box
- signature:
clip-box shape - required keywords:
:x (min max):y (min max):z (min max)- result: clipped shape
Example:
(model
(part body
(build
(shape rail (path (0 0 0) (20 0 10) (20 10 10)))
(shape peg (box 4 2 6 :align '(min min min)))
(shape frame (path-frame rail :at 0.5))
(result (place frame peg :offset (1 2 3) :rotate (10 20 30))))))