← Ecky CAD / Ecky Language Reference

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))))))