Nodes
Source: engine_catalog via EngineClient.catalog() at build. Wire types:
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { ConstantSignature } from "./ConstantSignature.js";
import type { ExpressionBudgets } from "./ExpressionBudgets.js";
import type { FunctionSignature } from "./FunctionSignature.js";
import type { KeywordSignature } from "./KeywordSignature.js";
import type { NamespaceDefinition } from "./NamespaceDefinition.js";
import type { NodeDefinition } from "./NodeDefinition.js";
import type { OperatorsCatalog } from "./OperatorsCatalog.js";
import type { PropertySignature } from "./PropertySignature.js";
import type { ShadingCapability } from "./ShadingCapability.js";
import type { TypeSignature } from "./TypeSignature.js";
/**
* `engine_catalog`'s wire shape: the node table, the shading→capability
* table (`document::vocabulary::SHADINGS`) a shading picker reads to grey
* out exposure for a mode that cannot meter, and the full expression
* vocabulary — namespace/builtin function tables, constants, keyword
* literals, array/string methods, operators, properties, blocked member
* names, and the sandbox's numeric budgets. Session-free. Named
* `ShadingCapability` because `scene::Shading` is the mode-name enum.
*/
export type Catalog = {
/**
* derived — every registered node's definition.
*/
nodes: Array<NodeDefinition>,
/**
* derived — the shading→capability table.
*/
shadings: Array<ShadingCapability>,
/**
* derived — every expression namespace's function table, in
* `expression::namespaces::NAMES` order.
*/
namespaces: Array<NamespaceDefinition>,
/**
* derived — the five builtin function groups (`Math`, `Number`,
* `Object`, `Array`, `Global`), in `expression::builtins::BUILTIN_NAMES`
* order. `Number`/`Array` each appear twice across `builtins`/`Global`
* when a root is both an object with members and itself callable — see
* `expression::builtins::GLOBAL_FUNCTIONS`'s doc comment.
*/
builtins: Array<NamespaceDefinition>,
/**
* derived — `Math`'s and `Number`'s numeric constants (`Math.PI`,
* `Number.EPSILON`, …), which are values, not functions, so `builtins`
* cannot carry them.
*/
constants: Array<ConstantSignature>,
/**
* derived — every `Value::Array` method, in
* `expression::eval::ARRAY_METHODS` order.
*/
arrayMethods: Array<FunctionSignature>,
/**
* derived — every `Value::Text` method, in
* `expression::eval::STRING_METHODS` order.
*/
stringMethods: Array<FunctionSignature>,
/**
* derived — the binary and unary operator tables.
*/
operators: OperatorsCatalog,
/**
* derived — fixed member names `Value::member` (`expression/value.rs`)
* resolves directly, outside every method/function table above (a
* plain field read, no call) — `expression::value::PROPERTIES`.
*/
properties: Array<PropertySignature>,
/**
* derived — the fields a `components[]` key reads as inside an expression
* (ADR 0042 R1–R2), each an array of `{ label, value }` option rows.
* Any other field of a component value is an evaluation error —
* `expression::value::COMPONENT_FIELDS`.
*/
componentFields: Array<string>,
/**
* derived — every keyword literal (`true`, `false`, `null`,
* `undefined`) the parser/evaluator resolve without a scope lookup —
* `expression::value::KEYWORD_LITERALS`.
*/
keywords: Array<KeywordSignature>,
/**
* derived — member names `Value::member` refuses outright (a JS
* prototype sandbox-escape name) — what a stored expression is REFUSED,
* not what it is granted — `expression::eval::BLOCKED_KEYS`.
*/
blockedMemberNames: Array<string>,
/**
* derived — the expression sandbox's numeric budgets (`eval.rs`/
* `parser.rs`/`document::model`'s own `pub const`s).
*/
budgets: ExpressionBudgets,
/**
* derived — every value-type word, in `document::vocabulary::
* TYPE_REGISTRY` order.
*/
types: Array<TypeSignature>, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { ArgDefinition } from "./ArgDefinition.js";
import type { FoldRole } from "./FoldRole.js";
import type { NodeType } from "./NodeType.js";
/**
* One catalog entry. `context`/`args[].value_type`/`returns` stay raw
* type strings (`"curveData[] | meshData[]"`), not a second type system.
*/
export type NodeDefinition = {
/**
* identity — the method name a node's `method` names.
*/
method: string,
/**
* derived — how the fold treats it (producer, transform, …).
*/
role: FoldRole,
/**
* derived — the document-shape family it belongs to.
*/
nodeType: NodeType,
/**
* derived — the stream types (or node bodies) it is legal in.
*/
context: Array<string>,
/**
* derived — its args, in order.
*/
args: Array<ArgDefinition>,
/**
* derived — the type it returns.
*/
returns: string,
/**
* derived — the key base a new node of this method takes.
*/
defaultKey?: string,
/**
* derived — the editor's display name.
*/
label: string,
/**
* derived — the editor's one-line help.
*/
tooltip: string, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type ArgDefinition = {
/**
* identity — the arg's key on its node.
*/
key: string,
/**
* derived — the value type the arg's expression must evaluate to.
*/
valueType: string,
/**
* derived — the expression an absent arg takes.
*/
default: string,
/**
* derived — the default domain `min` expression.
*/
min?: string,
/**
* derived — the default domain `max` expression.
*/
max?: string,
/**
* derived — the default domain `options` expression.
*/
options?: string,
/**
* derived — the editor's one-line help.
*/
tooltip: string, };// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
/**
* The document-shape family a catalog entry belongs to — finer than
* `role`, so a caller can tell `createObject` from `createBlock` or a
* lane step's own lane.
*/
export type NodeType = "objectChain" | "objectNest" | "placement" | "material" | "layer" | "pattern" | "view" | "component" | "step" | "value" | "behavior";// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
/**
* How a catalog entry folds: binding, producer, transform, or a bare
* schema-only step the graph resolves itself.
*/
export type FoldRole = "binding" | "producer" | "transform" | "step";// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type ShadingCapability = {
/**
* identity — the shading mode's name, matching `views[].properties.shading`.
*/
name: string,
/**
* derived — whether this mode can meter an authored exposure value.
*/
exposure: boolean, };137 methods across 11 node types. Shadings: wireframe, shaded, realistic, xray.
step
angularDimension
Angular Dimension · producer · returns angularDimensionData[] · context: curve, mesh, block
Default key: dimension.
The angle at vertex between point1 and point2; arcPoint sets the arc's radius and which side it sweeps.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
vertex | point | [0,0,0] | The angle's vertex point [x, y, z] in mm. | |||
point1 | point | [100,0,0] | A point [x, y, z] in mm on the angle's first ray, measured from vertex. | |||
point2 | point | [0,100,0] | A point [x, y, z] in mm on the angle's second ray, measured from vertex. | |||
arcPoint | point | [12,12,0] | Point [x, y, z] in mm whose distance from vertex sets the arc's radius and whose side of point1's ray picks the sweep direction. | |||
style | object | Inline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix); no lane to name a style by — a string value fails loud. | ||||
text | string | '' | Override label text; empty draws the measured angle instead. |
applyAttribute
Attribute · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: attribute.
Stamp a free-form key/value on every row.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
key | string | 'type' | Attribute name; engine-reserved keys fail loud. | |||
value | object | function | '' | Any JSON-serializable value to store under key; a function value fails at evaluate. |
applyLayer
Layer · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: layer.
Whole-object layer claim, lifted at the fold — data unchanged.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
layer | layer | function | 'Layer1' | Key of a layers[] record. |
applyLineStyle
Line Style · transform · returns objectData[] · context: curve
Default key: lineStyle.
Stamp every curve edge's dash pattern.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
lineStyle | string | function | 'solid' | One of 'solid' | 'dashed' | 'dotted'; a function value fails at evaluate. |
applyVisible
Visible · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: visible.
Whole-object visibility claim, lifted at the fold.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
visible | boolean | function | true | Whole-document visibility claim; a function value fails at evaluate (visibility is lifted at the fold, not stamped per instance). |
arcCenterStartEnd
Arc (Center) · producer · returns curveData[] · context: curve
Default key: arc.
Circular arc from center, start on the rim, and end direction.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
center | point | [0,0] | Arc center; radius is the distance to startPoint. | |||
startPoint | point | [10,0] | Where the arc begins; sets the radius. | |||
endPoint | point | [0,10] | Sweep direction, snapped onto the radius. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
arcTangentEnd
Arc (Tangent) · producer · returns curveData[] · context: curve
Default key: arc.
Arc leaving an axis and ending at a point.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
axis | line | { origin: [0,0,0], direction: [0,1,0] } | Start point plus leaving tangent ({ origin, direction }). | |||
endPoint | point | [10,0] | Where the arc ends. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
arcThreePoints
Arc (3 Points) · producer · returns curveData[] · context: curve
Default key: arc.
Circular arc through three points.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
startPoint | point | [0,0] | First endpoint the arc passes through. | |||
middlePoint | point | [5,5] | Point on the arc between start and end. | |||
endPoint | point | [10,0] | Last endpoint the arc passes through. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
arrayCurve
Array Along Curve · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: array.
Copies distributed along a path curve's own frame.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | Path the copies distribute along: a curve, a sibling object, or point rows [x,y,z] (repeat the first row to close the path). | ||||
copies | integer | 4 | 0 | Total placements along the curve is this plus one; none keeps the object's original position. | ||
angle | angle | 0 | Extra rotation about the tangent. |
arrayDistances
Array by Distances · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: array.
Copies at explicit cumulative distances along a direction.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
direction | vector | [1,0,0] | Normalized; magnitude ignored. | |||
distances | length[] | [300,400,500] | Step from the previous copy (not an absolute position); copies sit at the running sum of these values along direction. |
arrayLinear
Linear Array · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: array.
Copies stepped by a constant vector.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
vector | vector | [100,0,0] | Per-copy step. | |||
copies | integer | 2 | 0 | Copies added. |
arrayRadial
Radial Array · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: array.
Copies spaced evenly about an axis.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
axis | line | { origin: [0,0,0], direction: [0,0,1] } | The line (origin + direction) copies revolve about. | |||
copies | integer | 5 | 0 | Copies added, evenly over 360deg. |
centerMark
Center Mark · producer · returns curveData[] · context: curve
Default key: centerMark.
The cross at a circle's centre; plain linework, measures nothing.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
center | point | [0,0,0] | Point [x, y, z] in mm the cross is centered on. | |||
style | object | Inline style object ({ centerMarkSize } in mm); no lane to name a style by — a string value fails loud. |
circle
Circle · producer · returns curveData[] · context: curve
Default key: circle.
Closed circle in the plane of center + normal.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
center | point | [0,0] | Circle center. | |||
radius | length | 10 | Circle radius. | |||
normal | vector | [0,0,1] | Plane normal; default Z-up. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
clone
Clone · producer · returns objectData[] · context: curve, mesh, block
Default key: clone.
Starts the chain with another object as it exists — content and placements — by key.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
source | objectData[] | [] | Node to copy — an independent deep copy. |
cubicBezier
Cubic Bezier · producer · returns curveData[] · context: curve
Default key: bezier.
Cubic Bezier through start/end with two tangent controls.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
start | point | [0,0,0] | Start point (on curve). | |||
control1 | point | [3,10,0] | First tangent control point. | |||
control2 | point | [7,10,0] | Second tangent control point. | |||
end | point | [10,0,0] | End point (on curve). | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
curveChamfer
Curve Chamfer · transform · returns objectData[] · context: curve
Default key: chamfer.
Cuts every interior corner the filter selects (default: every corner).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
distance | length | 5 | Chamfer setback along each adjacent edge, mm; fails if an edge is shorter than this. | |||
filter | function | (p, i) => true | Callback (point, index) => boolean per corner, index counted within its own chain; default chamfers every corner. |
curveExtrude
Extrude · transform · returns meshData[] · context: curve, mesh
Default key: extrude.
Push curves into solids along their normal; a mesh in the stream instead extrudes every one of its faces by the same thickness along each face's own normal.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
thickness | length | 10 | Distance along the profile's own normal (right-hand rule over its vertex order), in mm; a negative value extrudes the other way. |
curveFill
Fill · transform · returns meshData[] · context: curve
Default key: fill.
Fill closed curves into flat faces.
No args.
curveFillet
Curve Fillet · transform · returns objectData[] · context: curve
Default key: fillet.
Rounds every interior corner the filter selects (default: every corner).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
radius | length | 5 | Fillet radius, mm; fails if a corner's adjacent edges are shorter than the trim it needs. | |||
filter | function | (p, i) => true | Callback (point, index) => boolean per corner, index counted within its own chain; default rounds every corner. |
curveFrom
Curve From · producer · returns curveData[] · context: curve
Default key: curveFrom.
Bakes point rows, a curve value, a raw { vertices, edges } Curve, or a sibling object's curve into document geometry.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | point[] | curveData | blockData | object | [[0,0,0],[100,0,0],[100,100,0]] | Point rows [x,y,z] in mm (closed when the first row is repeated last), an existing curve value, a sibling object's placed curve, or a raw { vertices, edges } Curve object. | |||
degree | number | 1 | For point rows: 1 bakes a polyline (any other value fails loud). For an analytic curve value (Arc/Ellipse/Bezier/Nurbs/Spline): a minimum tessellation segment count, auto-increased for a 0.5mm chord deflection. |
curveFromFace
Curves From Face · producer · returns curveData[] · context: curve
Default key: outline.
Every boundary loop of the referenced mesh's faces, outer and holes alike.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
source | meshData[] | Node whose face boundaries to outline. |
curveFunction
Curve From Function · producer · returns curveData[] · context: curve
Default key: curve.
Sample a formula (t) => [x,y,z] into a raw sampled polyline.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
point | function | (t) => [50 * Math.cos(t * 6 * Math.PI), 50 * Math.sin(t * 6 * Math.PI), t * 300] | Callback (t) => [x,y,z], t in [0,1]. | |||
samples | number | 64 | 2 | Points sampled along t. | ||
closed | boolean | false | Join the end back to the start. |
curveIntersect
Curve Intersect · transform · returns objectData[] · context: curve
Default key: intersect.
2D boolean intersection.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | Operand curve intersected with the chain's own stream, per coplanar plane group. Point rows [x,y,z] bake to a polyline; repeat the first row to close it, and a list of such row lists gives several chains. |
curveLoft
Loft · transform · returns meshData[] · context: curve
Default key: loft.
Skin a surface through the chain's curves in order, linearly between equal-count sections (Mesh::loft has no smoothness parameter).
No args.
curveOffset
Offset Curve · transform · returns objectData[] · context: curve
Default key: offset.
Offsets every closed loop by distance.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
distance | length | 10 | Positive = outward, negative = inward. | |||
joinType | string | 'round' | ['round', 'miter', 'square'] | Corner style where the offset loop's segments meet. |
curveOvercut
Curve Overcut · transform · returns objectData[] · context: curve
Default key: overcut.
CNC corner-clearance relief (dogbone/T-bone) at every corner the filter selects.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
radius | length | 5 | Relief radius, mm, used to size the dogbone/T-bone cut geometry. | |||
type | string | 'dogbone' | ['dogbone', 'longTbone', 'shortTbone'] | Relief style: dogbone bulges into both adjacent edges; longTbone/shortTbone extend only the longer or shorter edge. | ||
reduction | length | 0 | Amount the relief pulls back from the full radius/extension, mm. | |||
filter | function | (p, i) => true | Callback (point, index) => boolean per corner, index counted within its own chain; default relieves every corner. |
curveProject
Project Onto Mesh · transform · returns objectData[] · context: curve
Default key: project.
Cast each vertex along the direction, snap to the nearest mesh hit.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
target | meshData[] | Mesh the curve's vertices are cast onto. | ||||
direction | vector | [0,0,-1] | Object-local cast direction, must be non-zero; each vertex moves to the target's first hit along it, or the step fails naming that vertex. |
curveRevolve
Revolve · transform · returns meshData[] · context: curve
Default key: revolve.
Spin the chain's curves about an axis; a closed profile is capped into a solid on a partial sweep, an open profile always revolves into a shell.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
axis | line | { origin: [0,0,0], direction: [0,0,1] } | Revolve axis as { origin, direction } in object space; the chain's curves sweep around this line. | |||
angle | angle | 360 | Sweep angle in degrees, positive by the right-hand rule around axis.direction; 360 makes a full closed solid of revolution. | |||
segments | integer | 48 | 3 | Tessellation density (no NURBS carrier to defer to). |
curveSelfUnion
Curve Self Union · transform · returns objectData[] · context: curve
Default key: union.
Fuse every curve into one region per coplanar group; an open curve in a group fails loud, and points collinear with their neighbours are removed.
No args.
curveSimplify
Simplify Curve · transform · returns objectData[] · context: curve
Default key: simplify.
Douglas-Peucker vertex reduction.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
tolerance | length | 1 | Douglas-Peucker distance tolerance, mm; larger removes more points. |
curveSmooth
Smooth Curve · transform · returns objectData[] · context: curve
Default key: smooth.
Chaikin corner-cutting.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
iterations | integer | 2 | 1 | Chaikin corner-cutting passes; each doubles the vertex count, which must stay within the engine's array budget (1,000,000). |
curveSplit
Curve Split · transform · returns objectData[] · context: curve
Default key: split.
Splits a single open chain into two at the given parameter; fails if the stream holds more than one chain or the chain is closed.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
parameter | number | 0.5 | Normalized arc-length position. |
curveSubtract
Curve Subtract · transform · returns objectData[] · context: curve
Default key: subtract.
2D boolean difference.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | Operand curve subtracted from the chain's own stream, per coplanar plane group. Point rows [x,y,z] bake to a polyline; repeat the first row to close it, and a list of such row lists gives several chains. |
curveSweep
Sweep · transform · returns meshData[] · context: curve
Default key: sweep.
Sweep the chain's profile (any planar curve: x = offset from the path — inward for a closed path — y = height) along a curve; drawing it flat in XY at the origin is the simplest way, since that plane's origin is the point that sits on the path. Reuse one profile without redrawing it with mirrorX/mirrorY and anchor (mirror first, then anchor).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | [] | Path the profile is swept along: a curve, a sibling object, or point rows [x,y,z] (repeat the first row to close the path). A path of several chains is several paths: the profile is swept along each one on its own. | |||
caps | boolean | true | End faces for an open path with a closed profile. | |||
twist | angle | 0 | Total profile rotation about the path tangent, start to end. | |||
scale | number | 1 | Profile scale factor at the path's end (1 at the start). | |||
mirrorX | boolean | false | Flip the profile across its own y axis, before anchor. | |||
mirrorY | boolean | false | Flip the profile across its own x axis, before anchor. | |||
anchor | string | 'origin' | ['origin', 'center', 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right'] | After mirroring, move this point of the profile's own bounding box onto the path. | ||
up | vector | Direction the profile's y axis points at the path start (projected perpendicular to the first tangent, so it must not be parallel to it); the frame then follows the path rotation-minimally. Absent: the path-class default. | ||||
smoothAngle | angle | 0 | 0 | 180 | Degrees: a path vertex turning by less than this is smooth, so the swept surface shows no ring edge there (a path sampled from a curve); 0 marks none. |
curveThicken
Thicken Curve · transform · returns objectData[] · context: curve
Default key: thicken.
Strokes an open or closed chain into a closed strip.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
distance | length | 10 | Offset on each side; the strip is twice this wide. | |||
joinType | string | 'miter' | ['round', 'miter', 'square'] | Corner style at interior corners of the stroked strip. | ||
endType | string | 'round' | ['round', 'square', 'butt'] | Cap style at an open chain's two ends; ignored when the chain is closed. |
curveUnion
Curve Union · transform · returns objectData[] · context: curve
Default key: union.
2D boolean union.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | Operand curve unioned with the chain's own stream, per coplanar plane group. Point rows [x,y,z] bake to a polyline; repeat the first row to close it, and a list of such row lists gives several chains. |
edgeErase
Erase Edges · transform · returns objectData[] · context: mesh
Default key: erase.
Erases the selected edges as SketchUp does: coplanar neighbours merge, other faces bounded by the edge are removed, collinear ends weld.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
filter | function | (p1, p2) => false | Callback (p1, p2) => boolean over each edge's two object-local endpoints; default selects none, matching SketchUp erasing only what is selected. |
edgeFillet
Edge Fillet · transform · returns objectData[] · context: mesh
Default key: fillet.
Rounds selected edges.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
filter | function | (p1, p2) => true | Callback (p1, p2) => boolean over each edge's two object-local endpoints; default fillets every edge. | |||
radius | length | 2 | Setback in mm, measured along each adjacent face from the original edge to where the rounded surface begins (equals the radius only where the two faces meet at a right angle). | |||
segments | integer | 12 | 1 | Facets across the rounded cross-section; higher is smoother but adds geometry. |
ellipseArc
Ellipse Arc · producer · returns curveData[] · context: curve
Default key: ellipse.
Elliptical arc (or full ellipse at 360°) from two axis vectors.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
center | point | [0,0] | Ellipse center. | |||
xAxis | vector | [10,0] | Major-axis vector; its length is the X radius. | |||
yAxis | vector | [0,5] | Minor-axis vector; its length is the Y radius. The plane is xAxis × yAxis. | |||
angle | angle | 360 | Sweep in degrees: 360 = full closed ellipse, under 360 = open arc. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
faceContours
Face Contours · transform · returns curveData[] · context: mesh
Default key: contours.
Slices faces at evenly spaced Z levels into contour curves, replacing the faces; a spacing of 0 or less fails loud instead of silently passing the mesh through unsliced.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
spacing | length | 500 | 0 | Vertical spacing between contour levels, mm; levels run from base through the mesh's own Z range. Must be > 0 — the domain's own inclusive min of 0 is itself illegal and fails loud, since it names no spacing to slice at. | ||
base | number | 0 | Z reference for the contour levels, mm — levels are base + n*spacing, not necessarily one drawn exactly at base. |
faceErase
Erase Faces · transform · returns objectData[] · context: mesh
Default key: erase.
Erases the selected faces as SketchUp does: every edge they used stays, shared ones keeping their other face.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
filter | function | (points, normal) => false | Callback (points, normal) => boolean over each face's object-local outer-loop corners and unit normal; default selects none, matching SketchUp erasing only what is selected. |
faceExtrude
Face Extrude · transform · returns objectData[] · context: mesh
Default key: extrude.
Push selected faces along their own normal.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
thickness | length | 10 | Distance each selected face moves along its own normal, in mm; negative moves it the other way. | |||
filter | function | (points, normal) => true | Callback (points, normal) => boolean over each face's object-local outer-loop corners and unit normal; default extrudes every face. |
faceMaterial
Material · transform · returns objectData[] · context: curve, mesh, block
Default key: faceMaterial.
Stamp a materials[] key on the whole document or matching faces.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
material | material | function | '' | Key of a materials[] record; stamps the rows, or the matching ones under a filter. | |||
filter | function | (faceIndex) => boolean predicate selecting which mesh faces get the material; absent stamps every face. Curve/block content rejects a filter. |
hatch
Hatch · producer · returns hatchData[] · context: curve, mesh, block
Default key: hatch.
A region filled by a named pattern, a solid/gradient fill, or both.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
region | curveData | point[] | The filled region: a closed world-space ring, or point rows [x,y,z] with the first row repeated last. | ||||
pattern | pattern | patterns[] record key. | ||||
angle | angle | 0 | Pattern rotation within the region's own plane (hatch-local x/y axes), degrees. | |||
scale | number | 1 | Multiplier on the pattern's authored line spacing; 1 = as authored. | |||
origin | point | Pattern origin offset [x, y] in the region's own plane, mm (hatch-local, not world). Only x and y are read; a third component, if given, is ignored. | ||||
color | color | CSS color overriding the pattern's own stroke color; absent uses the pattern's own. | ||||
fill | object | Solid or gradient fill under the pattern ({ type: 'solid'|'linearGradient'|'radialGradient', ... }); at least one of pattern or fill is required. |
image
Image · producer · returns imageData[] · context: curve, mesh, block
Default key: image.
A picture placed on a rectangle, plus its border frame.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
url | url | '' | A url-method parameter key or a direct URI. | |||
at | point | [0, 0, 0] | The rectangle's local bottom-left corner; width runs along +x, height along +y. | |||
width | length | 80 | Rectangle width in mm. | |||
height | length | 0 | 0 or negative falls back to width * 3/4. |
keepData
Keep Entities · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: keep.
Keep only the documents the predicate accepts.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
keep | function | (center, type, index) => true | (center, type, index) => boolean predicate; center is [x,y,z] mm, type is 'curveData'|'meshData'|'blockData'|'objectData', index is the stream position — a document is kept when it returns true. |
lattice
Mesh Lattice · transform · returns objectData[] · context: mesh
Default key: lattice.
Hollow every mesh into a wireframe of struts, one per original edge.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
thickness | length | 2 | Full strut width, mm; each of the mesh's own edges becomes a rim tube this thick between two offset shells (open boundary edges are left uncapped). |
leader
Leader · producer · returns leaderData[] · context: curve, mesh, block
Default key: leader.
An arrow from target to landing, carrying text.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
targets | point[] | [[0,0,0]] | Points the arrow(s) reach; one arrow per point, all landing at landing. | |||
landing | point | [20,10,0] | Point [x, y, z] in mm every arrow converges to and the text sits at. | |||
text | string | '' | Label text drawn at the landing; empty draws no text. | |||
style | object | Inline style object (fontSize, endpoint, endpointSize); no lane to name a style by — a string value fails loud. |
linearDimension
Linear Dimension · producer · returns linearDimensionData[] · context: curve, mesh, block
Default key: dimension.
Distances along start–end, split by ratios, drawn on a line offset from it.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
start | point | [0,0,0] | The first measured point. | |||
end | point | [100,0,0] | The last measured point. | |||
offset | vector | [0,-10,0] | From the start–end line to the dimension line; must be perpendicular to end − start. | |||
ratios | number[] | [1] | Relative weights start–end is split by, one segment each: [1, 2, 1] = quarter, half, quarter. | |||
style | object | Inline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix, extensionOffset, extensionOvershoot, lineOvershoot); no lane to name a style by — a string value fails loud. | ||||
text | string | '' | Override label text; empty draws the measured distance instead. |
looseToBlock
Loose to Blocks · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: block.
Collect loose curves/meshes into blocks by connectivity — each connected cluster becomes one nested block.
No args.
mesh
Mesh · producer · returns meshData[] · context:
Default key: mesh.
Starts the stream with exactly this Mesh.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
data | object | {"vertices":[{"position":[0,0,0]},{"position":[1000,0,0]},{"position":[0,1000,0]}],"edges":[{"start","end"},{"start","end"},{"start","end"}],"faces":[{"loops":[[0,1,2]]}]} | The Mesh itself: { vertices, edges, faces }. |
mirror
Mirror · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: mirror.
Reflects across a plane; a mesh reverses winding to stay outward-positive.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
plane | plane | { point: [0,0,0], normal: [1,0,0] } | The mirror plane (point + normal) copies are reflected across. | |||
keepOriginal | boolean | true | true keeps the original and adds the reflection; false replaces it with only the reflection. |
move
Move · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: move.
Translate every document in the stream.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
vector | vector | [0,0,1] | [x, y, z] translation offset in mm, in object-local space. |
nurbsCurve
NURBS Curve · producer · returns curveData[] · context: curve
Default key: nurbs.
NURBS curve from a control net, then baked to a polyline.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
points | point[] | [[0,0,0],[3,5,0],[7,5,0],[10,0,0]] | Control points of the hull; the curve is pulled toward them, not through. | |||
degree | number | 3 | Polynomial degree; must be >= 1 and <= points.length-1. | |||
knots | number[] | [] | Knot vector (length = points.length + degree + 1). Empty = clamped-uniform. | |||
weights | number[] | [] | Per-point weight > 0. Empty = uniform 1. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
nurbsSurface
NURBS Surface · producer · returns meshData[] · context: mesh
Default key: nurbsSurface.
NURBS surface from a control net, baked to a triangle mesh.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
controlPoints | point[][] | surface | [[[0,0,0],[70,0,0],[130,0,0],[200,0,0]],[[0,70,20],[70,70,40],[130,70,40],[200,70,20]],[[0,130,20],[70,130,40],[130,130,40],[200,130,20]],[[0,200,0],[70,200,0],[130,200,0],[200,200,0]]] | Control net, rows along U, columns along V. A surface parameter value is used as-is, and then degreeU/degreeV/knotsU/knotsV are ignored. | |||
degreeU | integer | 3 | 1 | Polynomial degree along U; must be between 1 and the control net's row count minus 1. | ||
degreeV | integer | 3 | 1 | Polynomial degree along V; must be between 1 and the control net's column count minus 1. | ||
knotsU | number[] | [] | Empty = clamped-uniform; otherwise must have exactly (control net rows) + degreeU + 1 entries. | |||
knotsV | number[] | [] | Empty = clamped-uniform; otherwise must have exactly (control net columns) + degreeV + 1 entries. | |||
segmentsU | integer | 32 | 1 | Grid edges along U. INHERITED from curve segments default 32. | ||
segmentsV | integer | 32 | 1 | Grid edges along V. |
patchFromCorners
Patch From Corners · producer · returns meshData[] · context: mesh
Default key: patch.
A 4-corner bilinear patch.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
corner1 | point | [0,0,0] | First corner of the patch boundary, taken in loop order. | |||
corner2 | point | [100,0,0] | Second corner, adjacent to corner1. | |||
corner3 | point | [100,100,0] | Third corner, diagonally opposite corner1. | |||
corner4 | point | [0,100,0] | Fourth corner, adjacent to corner1, closing the loop back to it. |
placeComponent
Place Component · producer · returns objectData[] · context: curve, mesh, block
Default key: component.
Starts the chain with a components[] entry evaluated under parameters, as one block.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
component | component | A component of the enclosing scope's components lane. | ||||
parameters | object | Overrides the component's own parameter values for this placement. An arrow (copy) => ({ ... }) is called once per copy of the carrying object (copies + 1) and must return an object; it must be the object's only step, and the object's copies/translation/rotation/scale/pivot then place each copy's block while name/material/layer/attributes read index 0. |
pointCloud
Render Points · producer · returns pointCloudData[] · context: pointCloud
Default key: point.
Render-only markers, not construction geometry.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
positions | point[] | [[0,0,0]] | Marker positions to visualize. |
polygon
Polygon · producer · returns curveData[] · context: curve
Default key: polygon.
A regular polygon in the XY plane.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
center | point | [0,0] | Polygon center; the plane normal is fixed to +Z, so the polygon lies flat at this point's own Z height. | |||
radius | length | 50 | Circumradius, mm — distance from center to each vertex. | |||
sides | integer | 6 | 3 | Minimum 3. |
polyline
Polyline · producer · returns curveData[] · context: curve
Default key: polyline.
A straight-sided chain through the given points.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
points | point[] | [[0,0,0],[100,0,0],[100,0,100]] | Ordered vertices. | |||
closed | boolean | false | Close the loop back to the first point. | |||
smoothAngle | angle | 0 | 0 | 180 | Degrees: an interior vertex turning by less than this is smooth (a curved surface swept or revolved from it shows no edge there); 0 marks none. |
quadraticBezier
Quadratic Bezier · producer · returns curveData[] · context: curve
Default key: bezier.
Quadratic Bezier through start/end with one control.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
start | point | [0,0,0] | Start point (on curve). | |||
control | point | [5,10,0] | Tangent control (pulled toward, not on curve). | |||
end | point | [10,0,0] | End point (on curve). | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. |
radialDimension
Radial Dimension · producer · returns radialDimensionData[] · context: curve, mesh, block
Default key: dimension.
A leader from a circle/arc's rim, labelled with its radius.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
curve | curveData | point[] | Circle/arc to measure (a curve, a sibling object, or point rows [x,y,z]) — its centre, radius and plane are recovered by fitting. | ||||
angle | angle | 45 | Where around the circle the leader points, degrees. | |||
style | object | Inline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix); no lane to name a style by — a string value fails loud. | ||||
text | string | '' | Override label text; empty draws the measured radius instead. |
rectangle
Rectangle · producer · returns curveData[] · context: curve
Default key: rectangle.
A closed 4-vertex rectangle in the plane of least spread.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
point1 | point | [0,0,0] | One corner. | |||
point2 | point | [100,100,0] | Opposite corner; the smallest-spread axis is the plane normal. |
resize
Resize · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: resize.
Non-uniform scale to a target bounding-box size.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
sizeX | length | function | 1 | Target bounding-box X size in mm; a function value fails at evaluate. | |||
sizeY | length | function | 1 | Target bounding-box Y size in mm; a function value fails at evaluate. | |||
sizeZ | length | function | 1 | Target bounding-box Z size in mm; a function value fails at evaluate. |
reverse
Reverse · transform · returns objectData[] · context: curve, mesh
Default key: reverse.
Flip curve order / face winding.
No args.
revisionCloud
Revision Cloud · producer · returns curveData[] · context: curve
Default key: revisionCloud.
Chain of small outward-bulging arcs, baked to segments per bump.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
boundary | point[] | [[0,0,0],[100,0,0],[100,100,0],[0,100,0]] | Ordered polygon vertices to bulge, implicitly closed back to the first point. | |||
bumpRadius | length | 15 | Clamped to 45% of the bump chord. | |||
bumpSpacing | length | 40 | Target arc length between bump centers along each edge, mm; every non-degenerate edge still gets at least one bump. |
rotate
Rotate · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: rotate.
Rotate every document about an axis.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
axis | line | { origin: [0,0,0], direction: [0,0,1] } | The line (origin + direction) to rotate about, in object-local space. | |||
angle | angle | function | 0 | Degrees; a function value fails at evaluate — there is no per-document argument to call it with. |
scale
Scale · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: scale.
Scale every document about a point by per-axis factors.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
factors | vector | function | [1, 1, 1] | Per-axis [x, y, z] scale factors; a function value fails at evaluate. | |||
center | point | [0, 0, 0] | The point [x, y, z] in mm the scale is applied about, in object-local space. |
scatter
Scatter · transform · returns objectData[] · context: curve, mesh, pointCloud, block
Default key: scatter.
Random area-weighted placement across a mesh's surface.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
mesh | meshData[] | The mesh surface copies are scattered across, area-weighted. | ||||
copies | integer | 20 | 0 | Total placements scattered across the surface is this plus one; none keeps the object's original position. | ||
seed | number | 0 | Random seed; the same seed reproduces the same scatter. |
section
Section Plane · producer · returns sectionData[] · context: curve, mesh, block
Default key: section.
A cutting plane a section view reads.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
point | point | [0,0,0] | A point on the cutting plane. | |||
normal | vector | [1,0,0] | Section views look along -normal. | |||
active | object | function | true | true cuts in every view including the free camera, false cuts in none, a non-empty list names exactly the views it cuts in, or an arrow (camera) => boolean cuts for every camera the function returns true for (the free camera included; see the view type for the record it receives). |
solidify
Solidify (Shell) · transform · returns objectData[] · context: mesh
Default key: shell.
Hollows a solid to a wall thickness.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
thickness | length | 3 | 0.1 | Wall thickness, offset inward. |
solidIntersect
Solid Intersect · transform · returns objectData[] · context: mesh
Default key: intersect.
3D CSG intersection.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
solid | meshData[] | The mesh(es) to intersect with each mesh in the stream; several operands are self-unioned into one first. |
solidSelfUnion
Solid Self Union · transform · returns objectData[] · context: mesh
Default key: union.
Fuse every mesh body in the stream into one (3D CSG, no operand).
No args.
solidSubtract
Solid Subtract · transform · returns objectData[] · context: mesh
Default key: subtract.
3D CSG difference.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
solid | meshData[] | The mesh(es) to subtract from each mesh in the stream; several operands are self-unioned into one first. |
solidUnion
Solid Union · transform · returns objectData[] · context: mesh
Default key: union.
3D CSG union.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
solid | meshData[] | The mesh(es) to union with each mesh in the stream; several operands are self-unioned into one first. |
spline
Spline · producer · returns curveData[] · context: curve
Default key: spline.
Interpolating spline through the given points, then baked.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
points | point[] | [[0,0,0],[40,0,40],[80,0,20],[120,0,60]] | Points the spline interpolates through. | |||
degree | number | 3 | Polynomial degree; must be >= 1 and <= points.length-1. A closed spline must be degree 3, or the step fails. | |||
segments | integer | 32 | 1 | Edges sampled along this curve. Closed curves need at least 3. | ||
closed | boolean | false | Close into a loop, tangent-continuous where it closes (cubic). |
straightSkeleton
Straight Skeleton · producer · returns meshData[] · context: mesh
Default key: skeleton.
Straight skeleton of a simple polygon, as lifted roof faces.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
boundary | point[] | [[0,0,0],[6000,0,0],[6000,4000,0],[0,4000,0]] | Simple polygon outline in object space, implicitly closed (last point connects back to the first). | |||
pitch | angle | 30 | Roof slope from horizontal, degrees; zero or negative fails loud, and any positive value is otherwise unclamped (90 drives the rafters to tan(90°), effectively vertical). |
subdivision
Mesh Subdivision · transform · returns objectData[] · context: mesh
Default key: subdivision.
Catmull-Clark-subdivide every mesh in the stream.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
iterations | integer | 1 | 1 | Catmull-Clark passes. |
textCurve
Text · producer · returns curveData[] · context: curve
Default key: text.
Glyph outline curves, width-wrapped and placed on a plane.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
position | point | [0,0,0] | The text's local origin [x, y, z] in mm, on the plane spanned by normal/xAxis. | |||
text | string | '' | The string to render as glyph outlines; empty produces no geometry. | |||
font | font | A font's url, registered via engine_add_font; not yet loaded fails soft with a pending font request. Empty resolves to the host's own default font. | ||||
width | length | 0 | Wrap width in mm; 0 or absent means no width-wrapping (only newlines break lines). | |||
style | object | Inline style object ({ height } in mm, the glyph height); no lane to name a style by — a string value fails loud. Absent uses the 3.5mm builtin. | ||||
normal | vector | [0,0,1] | Unit plane normal in object-local space the text is drawn on; zero-length fails loud. | |||
xAxis | vector | [1,0,0] | In-plane direction for the text's local +X, re-orthogonalized against normal; parallel to normal fails loud. |
textOnCurve
Text On Path · transform · returns objectData[] · context: curve
Default key: text.
Glyphs laid along the chain's own path curve; the chain is consumed.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
text | string | 'Hello' | The text to lay out; one glyph outline per character. | |||
font | font | Font url-method parameter key; an unresolved font records a pending load request and this step fails soft until it arrives. | ||||
fontSize | length | 10 | Font size, mm — scales the font's em square; actual glyph height is a font-dependent fraction of this, not exactly this value. |
triangulate
Triangulate · producer · returns meshData[] · context: mesh
Default key: triangulate.
Delaunay TIN from scattered points.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
points | point[] | [[0,0,0],[1000,0,0],[1000,1000,0],[0,1000,50],[500,500,150]] | Scattered 3D points to triangulate into a Delaunay TIN over their own best-fit plane. |
vertexErase
Erase Vertices · transform · returns objectData[] · context: mesh
Default key: erase.
Erases every edge ending at the selected vertices, as SketchUp does when you erase a vertex.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
filter | function | (point) => false | Callback (point) => boolean over each vertex's object-local position; default selects none, matching SketchUp erasing only what is selected. |
vertexFillet
Vertex Fillet · transform · returns objectData[] · context: mesh
Default key: fillet.
Rounds selected vertices.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
filter | function | (point) => true | Callback (point) => boolean over each vertex's object-local position; default fillets every vertex. | |||
radius | length | 2 | Setback in mm, same convention as edgeFillet's radius (along each adjacent face from the original vertex). | |||
segments | integer | 12 | 1 | Facets across the rounded corner cap; higher is smoother but adds geometry. |
behavior
faceCamera
Face camera · step · returns `` · context: behaviors
Default key: faceCamera.
Keeps this face turned toward the viewer, upright about world Z, turning about the object's own pivot.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
normal | vector | Unit normal of the face that turns toward the viewer; the turn is about the object's pivot, upright about world Z. |
opening
Opening · step · returns meshData · context: behaviors
Default key: opening.
Cuts this object's extruded profile out of every sibling mesh object (blocks, curves and records are never cut), per placement.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
shape | point[] | curveData | Closed profile in this object's local space: point rows (closed when the first row is repeated last, else closed implicitly) or a curve value. | ||||
direction | vector | Extrusion vector, mm — its length is the depth; overshoot the host so both faces open. |
objectNest
createBlock
Create Block · step · returns blockData[] · context: objects
Default key: block.
A nest of objects.
No args.
objectChain
createObject
Create Object · step · returns objectData[] · context: objects
Default key: object.
An ordinary objects[] entry, its own data chain folded from empty.
No args.
material
addMaterial
Material · step · returns material · context: materials
Default key: material.
Surface appearance record, identified by its node key; PBR factors live on
properties.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
baseColor | color | '#ffffff' | Surface color, #rrggbb. | |||
texture | url | Base color map address. | ||||
tileWidth | length | 1000 | 0 | Physical mm of one texture tile along U; the renderer repeats the texture at 1/tileWidth. | ||
tileHeight | length | 1000 | 0 | Physical mm of one texture tile along V; the renderer repeats the texture at 1/tileHeight. |
alphaCutout
Alpha cutout · step · returns number · context: materials
Default key: alphaCutout.
Presence derives alphaMode MASK.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 0.5 | 0 | 1 | Alpha threshold 0..1 below which a fragment is discarded; just authoring this property (any value) derives alphaMode MASK. |
ambientOcclusionMap
AO map · step · returns string · context: materials
Default key: ambientOcclusionMap.
Ambient-occlusion map address.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | url | Ambient-occlusion map texture address. |
clearcoat
Clearcoat · step · returns number · context: materials
Default key: clearcoat.
Varnish/gloss paint.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
amount | number | 0 | 1 | 0..1 strength of the clear-coat layer; absent means none. | ||
roughness | number | 0 | 1 | 0..1 roughness of the clear-coat layer itself, independent of the base surface's roughness. |
colorFactor
Color factor · step · returns number · context: materials
Default key: colorFactor.
With a texture, the texture is tinted by white lerped toward baseColor by this factor (0 = untinted texture, 1 = full baseColor tint); without a texture it has no effect.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 1 | 0 | 1 | 0..1 factor; shared by opacity/colorFactor, each scaling what its own property name says. |
cutPattern
Cut pattern · step · returns string · context: materials
Default key: cutPattern.
patterns[] record key drawn where a section cuts this material.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | pattern | Quoted patterns[] key; absent fills the section cut with a solid color instead. |
displacement
Displacement · step · returns string · context: materials
Default key: displacement.
Height map + amplitude, tessellated geometry only.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
map | url | Height map texture address; only affects tessellated geometry. | ||||
scale | length | 1 | Displacement amplitude in mm. |
doubleSided
Double sided · step · returns boolean · context: materials
Default key: doubleSided.
Render both faces of a surface.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | boolean | false | true renders both faces of a surface; false (default) culls the back face. |
emissive
Emissive · step · returns color · context: materials
Default key: emissive.
Self-lit color + strength + map.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
color | color | '#rrggbb' self-lit color; absent means no emission. | ||||
intensity | number | 1 | 0 | Multiplier on color; 1 is unamplified. | ||
map | url | Emissive texture address, multiplied by color and intensity. |
metallic
Metallic · step · returns number · context: materials
Default key: metallic.
Metalness, 0..1.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 0 | 0 | 1 | 0 (dielectric) to 1 (metal); absent on a material means this default. |
metallicMap
Metallic map · step · returns string · context: materials
Default key: metallicMap.
Metallic map address.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | url | Metallic map texture address, multiplied by metallic. |
normalMap
Normal map · step · returns string · context: materials
Default key: normalMap.
Normal map address.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | url | Normal map texture address ('data:' or 'https:'). |
opacity
Opacity · step · returns number · context: materials
Default key: opacity.
Surface opacity, 0..1.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 1 | 0 | 1 | 0..1 factor; shared by opacity/colorFactor, each scaling what its own property name says. |
roughness
Roughness · step · returns number · context: materials
Default key: roughness.
Microfacet roughness, 0..1.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 0.95 | 0 | 1 | 0 (mirror) to 1 (fully rough); absent on a material means this default. |
roughnessMap
Roughness map · step · returns string · context: materials
Default key: roughnessMap.
Roughness map address.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | url | Roughness map texture address, multiplied by roughness. |
sheen
Sheen · step · returns color · context: materials
Default key: sheen.
Fabric/upholstery sheen.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
color | color | '#rrggbb' sheen tint; absent means none. | ||||
roughness | number | 0 | 1 | 0..1 roughness of the sheen layer. |
transmission
Transmission · step · returns number · context: materials
Default key: transmission.
Glass walls (KHR_materials_transmission).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
amount | number | 0 | 1 | 0..1 fraction of light transmitted through the surface; absent means opaque. | ||
ior | number | 1.5 | 1 | Index of refraction; 1.5 is typical glass. | ||
thickness | length | Volume thickness in mm, for the attenuation the color/distance below describe. | ||||
attenuationColor | color | '#rrggbb' tint light takes on as it travels through the volume. | ||||
attenuationDistance | length | Distance in mm light travels through the volume before attenuationColor is fully applied. |
layer
addLayer
Layer · step · returns layer · context: layers
Default key: layer.
A key a row carries, so a view can hide everything carrying it.
No args.
pattern
addPattern
Pattern · step · returns pattern · context: patterns
Default key: pattern.
Hatch pattern record, identified by its node key; its line families are
lineFamilysteps.
No args.
lineFamily
Line Family · step · returns pattern · context: patterns
Default key: lineFamily.
One infinite parallel-line family drawn over a hatch region.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
angle | angle | 0 | Direction of the family, degrees counter-clockwise from hatch-space +X. | |||
origin | point | [0, 0] | A point the first line passes through, in hatch space [x, y]. Not rewritten on a unit change. | |||
shift | length | 0 | Slide along the line direction between one line and the next; visible once dashes breaks the line up. | |||
spacing | length | Distance across, between one line and the next; a negative value flips which side the family repeats toward. Must not be 0. | ||||
dashes | length[] | Repeating pen cycle (SVG stroke-dasharray spelling); absent = a solid line. | ||||
lineWidth | length | Stroke width. Absent = the renderer's hairline. | ||||
color | color | #rrggbb. Absent = inherit from the placement's material. | ||||
dotSize | length | Diameter painted for a zero-length dash. Absent = lineWidth. |
component
createComponent
Component · step · returns component · context: components
Default key: component.
A component written inline — evaluates to exactly this document.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
data | object | {"title":"Component","objects":[]} | The component document itself: a whole Model JSON. |
loadComponent
Load Component · step · returns component · context: components
Default key: component.
A component the host fetches by id, only when a placement pulls it.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
url | url | Absolute https URL of a model document; the host fetches it. |
view
view
View · step · returns view · context: views
Default key: view.
A camera pose with a projection switch — perspective reads
fov, orthographic readsheight.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
position | point | [1000, 1000, 1000] | Eye position. | |||
target | point | [0, 0, 0] | Look-at point; must differ from position. | |||
up | vector | [0, 0, 1] | Up direction; must not be parallel to (target - position). | |||
projection | string | 'perspective' | ['perspective', 'orthographic'] | Which lens is read — 'perspective' (fov) or 'orthographic' (height). | ||
fov | number | 45 | 1 | 179 | Vertical field of view, degrees — read only when projection is 'perspective'. | |
height | length | 2000 | 0 | World height seen by the frame, mm, not an elevation — read only when projection is 'orthographic'. |
value
angle
Angle · binding · returns angle · context: parameters
Default key: angle.
A parameter value in degrees.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | angle | 0 | A parameter value in degrees. |
boolean
Boolean · binding · returns boolean · context: parameters
Default key: boolean.
A true/false parameter value.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | boolean | false | A true/false parameter value. |
color
Color · binding · returns color · context: parameters
Default key: color.
A '#rrggbb' (or '#rrggbbaa') color parameter value.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | color | '#ffffff' | A '#rrggbb' (or '#rrggbbaa') color parameter value. |
integer
Integer · binding · returns integer · context: parameters
Default key: integer.
A whole-number parameter value; a fraction fails evaluate.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | integer | 0 | A whole-number parameter value; a fraction fails evaluate. |
length
Length · binding · returns length · context: parameters
Default key: length.
A parameter value in millimeters.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | length | 0 | A parameter value in millimeters. |
lengths
Length List · binding · returns length[] · context: parameters
Default key: lengths.
A list of parameter values, each in millimeters.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | length[] | [] | A list of parameter values, each in millimeters. |
number
Number · binding · returns number · context: parameters
Default key: number.
A dimensionless numeric parameter value.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 0 | A dimensionless numeric parameter value. |
points
Point List · binding · returns point[] · context: parameters
Default key: points.
A list of [x, y, z] points in millimeters, read back as the same nested array.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | point[] | [] | A list of [x, y, z] points in millimeters, read back as the same nested array. |
surface
Surface · binding · returns surface · context: parameters
Default key: surface.
A NURBS surface value (control net). Bake with nurbsSurface.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
controlPoints | point[][] | surface | [[[0,0,0],[1000,0,0]],[[0,1000,0],[1000,1000,0]]] | A control net: rows of point rows [x,y,z] in mm (u-index outer, v-index inner), or an existing surface value. | |||
degreeU | integer | 1 | 1 | NURBS degree along U; must be >= 1 and <= the control net's row count minus 1, or evaluate fails loud. | ||
degreeV | integer | 1 | 1 | NURBS degree along V; must be >= 1 and <= the control net's column count minus 1, or evaluate fails loud. | ||
knotsU | number[] | [] | Empty = clamped-uniform. | |||
knotsV | number[] | [] | Empty = clamped-uniform. |
text
Text · binding · returns string · context: parameters
Default key: text.
A text parameter value.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | string | '' | A text parameter value. |
url
URL · binding · returns url · context: parameters
Default key: url.
The address itself — a 'data:' or 'https:' URI, or blank when unset.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | url | '' | The address itself — a 'data:' or 'https:' URI, or blank when unset. |
placement
attributes
Attributes · step · returns object · context: properties, materials, layers, patterns
Default key: attributes.
Free-form domain bag.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | object | function | {} | Free-form JSON object merged onto this placement's attributes; the engine reads nothing out of it. |
axes
Axes · step · returns boolean · context: views
Default key: axes.
World-axes visibility for this view; absent = host default (on).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | boolean | World-axes visibility for this view; absent = host default (on). |
background
Background · step · returns color · context: views
Default key: background.
A view's clear color.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | color | Viewport clear color. Absent = the host's own background. |
copies
Copies · step · returns integer · context: properties
Default key: copies.
Copies ADDED — absent or 0 is one placement.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | integer | 0 | 0 | Non-negative count of copies ADDED beyond the first; 0 or absent places exactly once. Beside a placeComponent whose parameters is an arrow, every copy is its own parameter set. |
exposure
Exposure · step · returns number · context: views
Default key: exposure.
A view's metered-exposure multiplier; realistic shading only.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | number | 0 | Linear multiplier on metered auto-exposure. Shading 'realistic' only; absent = 1. |
layer
Layer · step · returns string · context: properties
Default key: layer.
layers[] record key per placement.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | layer | function | '' | Quoted layers[] key, or a function(copyIndex) returning one per copy; absent inherits the content's own layer. |
material
Material · step · returns string · context: curve, mesh, block
Default key: material.
materials[] record key per placement.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | material | function | '' | Quoted materials[] key (e.g. "'oak'"), or a function(copyIndex) returning one per copy; absent inherits the content's own material. |
name
Name · step · returns string · context: properties
Default key: name.
Placement name (BaseInstance.name).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | string | function | '' | Text, or a function(copyIndex) returning text per copy; empty string means unnamed. |
pivot
Pivot · step · returns point · context: properties
Default key: pivot.
The placement's own turning point.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | point | Absent = the content's own bbox min corner, except a chain-produced block (placeComponent/clone), which pivots at its own origin. |
rotation
Rotation · step · returns vector · context: properties
Default key: rotation.
M = T(t)T(p)RST(-p).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | vector | function | [0, 0, 0] | Degrees, applied RzRyRx about the pivot. |
scale
Scale · step · returns vector · context: properties
Default key: scale.
M = T(t)T(p)RST(-p) — the object's own placement, not the chain
scalestep.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | vector | function | [1, 1, 1] | Per-axis factors, about the pivot. |
shading
Shading · step · returns string · context: views
Default key: shading.
A view's display mode.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | string | ['wireframe', 'shaded', 'realistic', 'xray'] | 'shaded' is the self-lit matcap editing look (default); 'realistic' is the only mode materializing lights and the environment; 'wireframe' is the line overlay; 'xray' is the shaded look with see-through faces. |
shadows
Shadows · step · returns boolean · context: views
Default key: shadows.
Analytic sun-study overlay for this view; absent = off.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | boolean | Analytic sun-study overlay for this view; absent = off. |
translation
Translation · step · returns vector · context: properties
Default key: translation.
M = T(t)T(p)RST(-p).
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | vector | function | [0, 0, 0] | [x, y, z] offset in mm, or a function(copyIndex) returning one per copy; applied last, outside the pivot. |
visible
Visible · step · returns boolean · context: properties, layers
Default key: visible.
true/false, a non-empty list of view keys, or an arrow
(camera) => boolean.
| key | type | default | min | max | options | tooltip |
|---|---|---|---|---|---|---|
value | object | function | true | true/false, a non-empty array of view keys, or an arrow (camera) => boolean — shown for every camera the function returns true for, the free camera included (see the view type for the record it receives); absent inherits the content's own visibility. |
shadings
| name | exposure |
|---|---|
wireframe | false |
shaded | false |
realistic | true |
xray | false |