← Ecky CAD / Ecky Language Reference

REFERENCE / 13

Special / Custom Operations

These operations cover grouping, incomplete geometry, threads, and sampled surfaces.

hole

Typed placeholder op. Use to mark missing geometry intentionally.

  • signature: hole :type kind
  • signature: hole :type kind :goal "why this hole exists"
  • required keyword:
  • :type
  • optional keyword:
  • :goal

Allowed :type values:

  • solid
  • sketch
  • path
  • shape

Current behavior:

  • compiler accepts it as typed placeholder
  • lowerers reject it until replaced with real geometry

compound

  • signature: compound shape1 shape2 ...
  • groups shapes without boolean merge semantics

helical-ridge

Keyword-only thread-like ridge generator.

  • required keywords:
  • :radius
  • :pitch
  • :height
  • :base-width
  • :crest-width
  • :depth
  • optional keywords:
  • :female
  • :clearance
  • :lefthand

Example:

(helical-ridge
  :radius 10
  :pitch 2
  :height 18
  :base-width 1.2
  :crest-width 0.4
  :depth 0.7
  :female #t
  :clearance 0.15
  :lefthand #t)

sampled-radial-loft

Sample radial sections along Z and join them into a loft. :radius is evaluated at each sample using the three bound coordinates.

(sampled-radial-loft
  (theta z fz)
  :height 40
  :z-steps 6
  :theta-steps 24
  :radius expr
  :z-map expr)
  • binder list must be exactly (theta z fz)
  • required keywords:
  • :height
  • :z-steps
  • :theta-steps
  • :radius
  • optional keyword:
  • :z-map

wall-pattern

Apply a procedural mesh pattern to a supported shell or solid surface.

Example call:

(wall-pattern
  (:mode gyroid :depth 0.6 :uFreq 4 :vFreq 5 :phase 0.2)
  shape)

Options:

  • :mode
  • :depth
  • :uFreq
  • :vFreq
  • :phase

Modes include:

  • gyroid
  • cellular
  • fbm
  • ribs

Backend caveat:

  • native OCCT handles BREP operations; wall-pattern remains mesh-only

surface-trim

Trim an imported triangle mesh along an anchored loop. This is the source form written by the surface-trim tool; anchors must refer to the exact imported mesh.

(surface-trim
  (import-stl path)
  :schema-version 1
  :source-digest digest
  :loop (anchor-a anchor-b anchor-c)
  :keep-seed anchor-inside
  :path-mode "shortest"
  :cap "open")

This is a fragment. path and digest identify the source mesh. Each anchor has the form (mesh-anchor triangle-index b0 b1 b2): one triangle index and three barycentric weights. The loop requires at least three anchors; keep-seed selects the region to retain.

All six keywords are required. :path-mode accepts "shortest" or "feature". :cap accepts "open", "flat", or "surface-fill". Use the app's mesh selection tools to create anchors; editing triangle indices after replacing the source mesh invalidates their meaning.