Skip to content
ParaShape

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.

keytypedefaultminmaxoptionstooltip
vertexpoint[0,0,0]The angle's vertex point [x, y, z] in mm.
point1point[100,0,0]A point [x, y, z] in mm on the angle's first ray, measured from vertex.
point2point[0,100,0]A point [x, y, z] in mm on the angle's second ray, measured from vertex.
arcPointpoint[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.
styleobjectInline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix); no lane to name a style by — a string value fails loud.
textstring''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.

keytypedefaultminmaxoptionstooltip
keystring'type'Attribute name; engine-reserved keys fail loud.
valueobject | 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.

keytypedefaultminmaxoptionstooltip
layerlayer | 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.

keytypedefaultminmaxoptionstooltip
lineStylestring | 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.

keytypedefaultminmaxoptionstooltip
visibleboolean | functiontrueWhole-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.

keytypedefaultminmaxoptionstooltip
centerpoint[0,0]Arc center; radius is the distance to startPoint.
startPointpoint[10,0]Where the arc begins; sets the radius.
endPointpoint[0,10]Sweep direction, snapped onto the radius.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
axisline{ origin: [0,0,0], direction: [0,1,0] }Start point plus leaving tangent ({ origin, direction }).
endPointpoint[10,0]Where the arc ends.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
startPointpoint[0,0]First endpoint the arc passes through.
middlePointpoint[5,5]Point on the arc between start and end.
endPointpoint[10,0]Last endpoint the arc passes through.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
curvecurveData | 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).
copiesinteger40Total placements along the curve is this plus one; none keeps the object's original position.
angleangle0Extra 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.

keytypedefaultminmaxoptionstooltip
directionvector[1,0,0]Normalized; magnitude ignored.
distanceslength[][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.

keytypedefaultminmaxoptionstooltip
vectorvector[100,0,0]Per-copy step.
copiesinteger20Copies added.

arrayRadial

Radial Array · transform · returns objectData[] · context: curve, mesh, pointCloud, block

Default key: array.

Copies spaced evenly about an axis.

keytypedefaultminmaxoptionstooltip
axisline{ origin: [0,0,0], direction: [0,0,1] }The line (origin + direction) copies revolve about.
copiesinteger50Copies 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.

keytypedefaultminmaxoptionstooltip
centerpoint[0,0,0]Point [x, y, z] in mm the cross is centered on.
styleobjectInline 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.

keytypedefaultminmaxoptionstooltip
centerpoint[0,0]Circle center.
radiuslength10Circle radius.
normalvector[0,0,1]Plane normal; default Z-up.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
sourceobjectData[][]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.

keytypedefaultminmaxoptionstooltip
startpoint[0,0,0]Start point (on curve).
control1point[3,10,0]First tangent control point.
control2point[7,10,0]Second tangent control point.
endpoint[10,0,0]End point (on curve).
segmentsinteger321Edges 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).

keytypedefaultminmaxoptionstooltip
distancelength5Chamfer setback along each adjacent edge, mm; fails if an edge is shorter than this.
filterfunction(p, i) => trueCallback (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.

keytypedefaultminmaxoptionstooltip
thicknesslength10Distance 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).

keytypedefaultminmaxoptionstooltip
radiuslength5Fillet radius, mm; fails if a corner's adjacent edges are shorter than the trim it needs.
filterfunction(p, i) => trueCallback (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.

keytypedefaultminmaxoptionstooltip
curvepoint[] | 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.
degreenumber1For 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.

keytypedefaultminmaxoptionstooltip
sourcemeshData[]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.

keytypedefaultminmaxoptionstooltip
pointfunction(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].
samplesnumber642Points sampled along t.
closedbooleanfalseJoin the end back to the start.

curveIntersect

Curve Intersect · transform · returns objectData[] · context: curve

Default key: intersect.

2D boolean intersection.

keytypedefaultminmaxoptionstooltip
curvecurveData | 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.

keytypedefaultminmaxoptionstooltip
distancelength10Positive = outward, negative = inward.
joinTypestring'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.

keytypedefaultminmaxoptionstooltip
radiuslength5Relief radius, mm, used to size the dogbone/T-bone cut geometry.
typestring'dogbone'['dogbone', 'longTbone', 'shortTbone']Relief style: dogbone bulges into both adjacent edges; longTbone/shortTbone extend only the longer or shorter edge.
reductionlength0Amount the relief pulls back from the full radius/extension, mm.
filterfunction(p, i) => trueCallback (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.

keytypedefaultminmaxoptionstooltip
targetmeshData[]Mesh the curve's vertices are cast onto.
directionvector[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.

keytypedefaultminmaxoptionstooltip
axisline{ origin: [0,0,0], direction: [0,0,1] }Revolve axis as { origin, direction } in object space; the chain's curves sweep around this line.
angleangle360Sweep angle in degrees, positive by the right-hand rule around axis.direction; 360 makes a full closed solid of revolution.
segmentsinteger483Tessellation 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.

keytypedefaultminmaxoptionstooltip
tolerancelength1Douglas-Peucker distance tolerance, mm; larger removes more points.

curveSmooth

Smooth Curve · transform · returns objectData[] · context: curve

Default key: smooth.

Chaikin corner-cutting.

keytypedefaultminmaxoptionstooltip
iterationsinteger21Chaikin 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.

keytypedefaultminmaxoptionstooltip
parameternumber0.5Normalized arc-length position.

curveSubtract

Curve Subtract · transform · returns objectData[] · context: curve

Default key: subtract.

2D boolean difference.

keytypedefaultminmaxoptionstooltip
curvecurveData | 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).

keytypedefaultminmaxoptionstooltip
curvecurveData | 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.
capsbooleantrueEnd faces for an open path with a closed profile.
twistangle0Total profile rotation about the path tangent, start to end.
scalenumber1Profile scale factor at the path's end (1 at the start).
mirrorXbooleanfalseFlip the profile across its own y axis, before anchor.
mirrorYbooleanfalseFlip the profile across its own x axis, before anchor.
anchorstring'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.
upvectorDirection 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.
smoothAngleangle00180Degrees: 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.

keytypedefaultminmaxoptionstooltip
distancelength10Offset on each side; the strip is twice this wide.
joinTypestring'miter'['round', 'miter', 'square']Corner style at interior corners of the stroked strip.
endTypestring'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.

keytypedefaultminmaxoptionstooltip
curvecurveData | 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.

keytypedefaultminmaxoptionstooltip
filterfunction(p1, p2) => falseCallback (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.

keytypedefaultminmaxoptionstooltip
filterfunction(p1, p2) => trueCallback (p1, p2) => boolean over each edge's two object-local endpoints; default fillets every edge.
radiuslength2Setback 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).
segmentsinteger121Facets 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.

keytypedefaultminmaxoptionstooltip
centerpoint[0,0]Ellipse center.
xAxisvector[10,0]Major-axis vector; its length is the X radius.
yAxisvector[0,5]Minor-axis vector; its length is the Y radius. The plane is xAxis × yAxis.
angleangle360Sweep in degrees: 360 = full closed ellipse, under 360 = open arc.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
spacinglength5000Vertical 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.
basenumber0Z 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.

keytypedefaultminmaxoptionstooltip
filterfunction(points, normal) => falseCallback (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.

keytypedefaultminmaxoptionstooltip
thicknesslength10Distance each selected face moves along its own normal, in mm; negative moves it the other way.
filterfunction(points, normal) => trueCallback (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.

keytypedefaultminmaxoptionstooltip
materialmaterial | function''Key of a materials[] record; stamps the rows, or the matching ones under a filter.
filterfunction(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.

keytypedefaultminmaxoptionstooltip
regioncurveData | point[]The filled region: a closed world-space ring, or point rows [x,y,z] with the first row repeated last.
patternpatternpatterns[] record key.
angleangle0Pattern rotation within the region's own plane (hatch-local x/y axes), degrees.
scalenumber1Multiplier on the pattern's authored line spacing; 1 = as authored.
originpointPattern 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.
colorcolorCSS color overriding the pattern's own stroke color; absent uses the pattern's own.
fillobjectSolid 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.

keytypedefaultminmaxoptionstooltip
urlurl''A url-method parameter key or a direct URI.
atpoint[0, 0, 0]The rectangle's local bottom-left corner; width runs along +x, height along +y.
widthlength80Rectangle width in mm.
heightlength00 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.

keytypedefaultminmaxoptionstooltip
keepfunction(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.

keytypedefaultminmaxoptionstooltip
thicknesslength2Full 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.

keytypedefaultminmaxoptionstooltip
targetspoint[][[0,0,0]]Points the arrow(s) reach; one arrow per point, all landing at landing.
landingpoint[20,10,0]Point [x, y, z] in mm every arrow converges to and the text sits at.
textstring''Label text drawn at the landing; empty draws no text.
styleobjectInline 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.

keytypedefaultminmaxoptionstooltip
startpoint[0,0,0]The first measured point.
endpoint[100,0,0]The last measured point.
offsetvector[0,-10,0]From the start–end line to the dimension line; must be perpendicular to end − start.
ratiosnumber[][1]Relative weights start–end is split by, one segment each: [1, 2, 1] = quarter, half, quarter.
styleobjectInline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix, extensionOffset, extensionOvershoot, lineOvershoot); no lane to name a style by — a string value fails loud.
textstring''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.

keytypedefaultminmaxoptionstooltip
dataobject{"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.

keytypedefaultminmaxoptionstooltip
planeplane{ point: [0,0,0], normal: [1,0,0] }The mirror plane (point + normal) copies are reflected across.
keepOriginalbooleantruetrue 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.

keytypedefaultminmaxoptionstooltip
vectorvector[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.

keytypedefaultminmaxoptionstooltip
pointspoint[][[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.
degreenumber3Polynomial degree; must be >= 1 and <= points.length-1.
knotsnumber[][]Knot vector (length = points.length + degree + 1). Empty = clamped-uniform.
weightsnumber[][]Per-point weight > 0. Empty = uniform 1.
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
controlPointspoint[][] | 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.
degreeUinteger31Polynomial degree along U; must be between 1 and the control net's row count minus 1.
degreeVinteger31Polynomial degree along V; must be between 1 and the control net's column count minus 1.
knotsUnumber[][]Empty = clamped-uniform; otherwise must have exactly (control net rows) + degreeU + 1 entries.
knotsVnumber[][]Empty = clamped-uniform; otherwise must have exactly (control net columns) + degreeV + 1 entries.
segmentsUinteger321Grid edges along U. INHERITED from curve segments default 32.
segmentsVinteger321Grid edges along V.

patchFromCorners

Patch From Corners · producer · returns meshData[] · context: mesh

Default key: patch.

A 4-corner bilinear patch.

keytypedefaultminmaxoptionstooltip
corner1point[0,0,0]First corner of the patch boundary, taken in loop order.
corner2point[100,0,0]Second corner, adjacent to corner1.
corner3point[100,100,0]Third corner, diagonally opposite corner1.
corner4point[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.

keytypedefaultminmaxoptionstooltip
componentcomponentA component of the enclosing scope's components lane.
parametersobjectOverrides 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.

keytypedefaultminmaxoptionstooltip
positionspoint[][[0,0,0]]Marker positions to visualize.

polygon

Polygon · producer · returns curveData[] · context: curve

Default key: polygon.

A regular polygon in the XY plane.

keytypedefaultminmaxoptionstooltip
centerpoint[0,0]Polygon center; the plane normal is fixed to +Z, so the polygon lies flat at this point's own Z height.
radiuslength50Circumradius, mm — distance from center to each vertex.
sidesinteger63Minimum 3.

polyline

Polyline · producer · returns curveData[] · context: curve

Default key: polyline.

A straight-sided chain through the given points.

keytypedefaultminmaxoptionstooltip
pointspoint[][[0,0,0],[100,0,0],[100,0,100]]Ordered vertices.
closedbooleanfalseClose the loop back to the first point.
smoothAngleangle00180Degrees: 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.

keytypedefaultminmaxoptionstooltip
startpoint[0,0,0]Start point (on curve).
controlpoint[5,10,0]Tangent control (pulled toward, not on curve).
endpoint[10,0,0]End point (on curve).
segmentsinteger321Edges 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.

keytypedefaultminmaxoptionstooltip
curvecurveData | 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.
angleangle45Where around the circle the leader points, degrees.
styleobjectInline style object (fontSize, endpoint, endpointSize, decimals, rounding, textSuffix); no lane to name a style by — a string value fails loud.
textstring''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.

keytypedefaultminmaxoptionstooltip
point1point[0,0,0]One corner.
point2point[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.

keytypedefaultminmaxoptionstooltip
sizeXlength | function1Target bounding-box X size in mm; a function value fails at evaluate.
sizeYlength | function1Target bounding-box Y size in mm; a function value fails at evaluate.
sizeZlength | function1Target 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.

keytypedefaultminmaxoptionstooltip
boundarypoint[][[0,0,0],[100,0,0],[100,100,0],[0,100,0]]Ordered polygon vertices to bulge, implicitly closed back to the first point.
bumpRadiuslength15Clamped to 45% of the bump chord.
bumpSpacinglength40Target 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.

keytypedefaultminmaxoptionstooltip
axisline{ origin: [0,0,0], direction: [0,0,1] }The line (origin + direction) to rotate about, in object-local space.
angleangle | function0Degrees; 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.

keytypedefaultminmaxoptionstooltip
factorsvector | function[1, 1, 1]Per-axis [x, y, z] scale factors; a function value fails at evaluate.
centerpoint[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.

keytypedefaultminmaxoptionstooltip
meshmeshData[]The mesh surface copies are scattered across, area-weighted.
copiesinteger200Total placements scattered across the surface is this plus one; none keeps the object's original position.
seednumber0Random 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.

keytypedefaultminmaxoptionstooltip
pointpoint[0,0,0]A point on the cutting plane.
normalvector[1,0,0]Section views look along -normal.
activeobject | functiontruetrue 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.

keytypedefaultminmaxoptionstooltip
thicknesslength30.1Wall thickness, offset inward.

solidIntersect

Solid Intersect · transform · returns objectData[] · context: mesh

Default key: intersect.

3D CSG intersection.

keytypedefaultminmaxoptionstooltip
solidmeshData[]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.

keytypedefaultminmaxoptionstooltip
solidmeshData[]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.

keytypedefaultminmaxoptionstooltip
solidmeshData[]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.

keytypedefaultminmaxoptionstooltip
pointspoint[][[0,0,0],[40,0,40],[80,0,20],[120,0,60]]Points the spline interpolates through.
degreenumber3Polynomial degree; must be >= 1 and <= points.length-1. A closed spline must be degree 3, or the step fails.
segmentsinteger321Edges sampled along this curve. Closed curves need at least 3.
closedbooleanfalseClose 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.

keytypedefaultminmaxoptionstooltip
boundarypoint[][[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).
pitchangle30Roof 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.

keytypedefaultminmaxoptionstooltip
iterationsinteger11Catmull-Clark passes.

textCurve

Text · producer · returns curveData[] · context: curve

Default key: text.

Glyph outline curves, width-wrapped and placed on a plane.

keytypedefaultminmaxoptionstooltip
positionpoint[0,0,0]The text's local origin [x, y, z] in mm, on the plane spanned by normal/xAxis.
textstring''The string to render as glyph outlines; empty produces no geometry.
fontfontA 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.
widthlength0Wrap width in mm; 0 or absent means no width-wrapping (only newlines break lines).
styleobjectInline 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.
normalvector[0,0,1]Unit plane normal in object-local space the text is drawn on; zero-length fails loud.
xAxisvector[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.

keytypedefaultminmaxoptionstooltip
textstring'Hello'The text to lay out; one glyph outline per character.
fontfontFont url-method parameter key; an unresolved font records a pending load request and this step fails soft until it arrives.
fontSizelength10Font 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.

keytypedefaultminmaxoptionstooltip
pointspoint[][[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.

keytypedefaultminmaxoptionstooltip
filterfunction(point) => falseCallback (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.

keytypedefaultminmaxoptionstooltip
filterfunction(point) => trueCallback (point) => boolean over each vertex's object-local position; default fillets every vertex.
radiuslength2Setback in mm, same convention as edgeFillet's radius (along each adjacent face from the original vertex).
segmentsinteger121Facets 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.

keytypedefaultminmaxoptionstooltip
normalvectorUnit 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.

keytypedefaultminmaxoptionstooltip
shapepoint[] | curveDataClosed profile in this object's local space: point rows (closed when the first row is repeated last, else closed implicitly) or a curve value.
directionvectorExtrusion 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.

keytypedefaultminmaxoptionstooltip
baseColorcolor'#ffffff'Surface color, #rrggbb.
textureurlBase color map address.
tileWidthlength10000Physical mm of one texture tile along U; the renderer repeats the texture at 1/tileWidth.
tileHeightlength10000Physical 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.

keytypedefaultminmaxoptionstooltip
valuenumber0.501Alpha 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.

keytypedefaultminmaxoptionstooltip
valueurlAmbient-occlusion map texture address.

clearcoat

Clearcoat · step · returns number · context: materials

Default key: clearcoat.

Varnish/gloss paint.

keytypedefaultminmaxoptionstooltip
amountnumber010..1 strength of the clear-coat layer; absent means none.
roughnessnumber010..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.

keytypedefaultminmaxoptionstooltip
valuenumber1010..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.

keytypedefaultminmaxoptionstooltip
valuepatternQuoted 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.

keytypedefaultminmaxoptionstooltip
mapurlHeight map texture address; only affects tessellated geometry.
scalelength1Displacement amplitude in mm.

doubleSided

Double sided · step · returns boolean · context: materials

Default key: doubleSided.

Render both faces of a surface.

keytypedefaultminmaxoptionstooltip
valuebooleanfalsetrue 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.

keytypedefaultminmaxoptionstooltip
colorcolor'#rrggbb' self-lit color; absent means no emission.
intensitynumber10Multiplier on color; 1 is unamplified.
mapurlEmissive texture address, multiplied by color and intensity.

metallic

Metallic · step · returns number · context: materials

Default key: metallic.

Metalness, 0..1.

keytypedefaultminmaxoptionstooltip
valuenumber0010 (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.

keytypedefaultminmaxoptionstooltip
valueurlMetallic map texture address, multiplied by metallic.

normalMap

Normal map · step · returns string · context: materials

Default key: normalMap.

Normal map address.

keytypedefaultminmaxoptionstooltip
valueurlNormal map texture address ('data:' or 'https:').

opacity

Opacity · step · returns number · context: materials

Default key: opacity.

Surface opacity, 0..1.

keytypedefaultminmaxoptionstooltip
valuenumber1010..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.

keytypedefaultminmaxoptionstooltip
valuenumber0.95010 (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.

keytypedefaultminmaxoptionstooltip
valueurlRoughness map texture address, multiplied by roughness.

sheen

Sheen · step · returns color · context: materials

Default key: sheen.

Fabric/upholstery sheen.

keytypedefaultminmaxoptionstooltip
colorcolor'#rrggbb' sheen tint; absent means none.
roughnessnumber010..1 roughness of the sheen layer.

transmission

Transmission · step · returns number · context: materials

Default key: transmission.

Glass walls (KHR_materials_transmission).

keytypedefaultminmaxoptionstooltip
amountnumber010..1 fraction of light transmitted through the surface; absent means opaque.
iornumber1.51Index of refraction; 1.5 is typical glass.
thicknesslengthVolume thickness in mm, for the attenuation the color/distance below describe.
attenuationColorcolor'#rrggbb' tint light takes on as it travels through the volume.
attenuationDistancelengthDistance 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 lineFamily steps.

No args.

lineFamily

Line Family · step · returns pattern · context: patterns

Default key: lineFamily.

One infinite parallel-line family drawn over a hatch region.

keytypedefaultminmaxoptionstooltip
angleangle0Direction of the family, degrees counter-clockwise from hatch-space +X.
originpoint[0, 0]A point the first line passes through, in hatch space [x, y]. Not rewritten on a unit change.
shiftlength0Slide along the line direction between one line and the next; visible once dashes breaks the line up.
spacinglengthDistance across, between one line and the next; a negative value flips which side the family repeats toward. Must not be 0.
dasheslength[]Repeating pen cycle (SVG stroke-dasharray spelling); absent = a solid line.
lineWidthlengthStroke width. Absent = the renderer's hairline.
colorcolor#rrggbb. Absent = inherit from the placement's material.
dotSizelengthDiameter 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.

keytypedefaultminmaxoptionstooltip
dataobject{"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.

keytypedefaultminmaxoptionstooltip
urlurlAbsolute 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 reads height.

keytypedefaultminmaxoptionstooltip
positionpoint[1000, 1000, 1000]Eye position.
targetpoint[0, 0, 0]Look-at point; must differ from position.
upvector[0, 0, 1]Up direction; must not be parallel to (target - position).
projectionstring'perspective'['perspective', 'orthographic']Which lens is read — 'perspective' (fov) or 'orthographic' (height).
fovnumber451179Vertical field of view, degrees — read only when projection is 'perspective'.
heightlength20000World 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.

keytypedefaultminmaxoptionstooltip
valueangle0A parameter value in degrees.

boolean

Boolean · binding · returns boolean · context: parameters

Default key: boolean.

A true/false parameter value.

keytypedefaultminmaxoptionstooltip
valuebooleanfalseA true/false parameter value.

color

Color · binding · returns color · context: parameters

Default key: color.

A '#rrggbb' (or '#rrggbbaa') color parameter value.

keytypedefaultminmaxoptionstooltip
valuecolor'#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.

keytypedefaultminmaxoptionstooltip
valueinteger0A whole-number parameter value; a fraction fails evaluate.

length

Length · binding · returns length · context: parameters

Default key: length.

A parameter value in millimeters.

keytypedefaultminmaxoptionstooltip
valuelength0A parameter value in millimeters.

lengths

Length List · binding · returns length[] · context: parameters

Default key: lengths.

A list of parameter values, each in millimeters.

keytypedefaultminmaxoptionstooltip
valuelength[][]A list of parameter values, each in millimeters.

number

Number · binding · returns number · context: parameters

Default key: number.

A dimensionless numeric parameter value.

keytypedefaultminmaxoptionstooltip
valuenumber0A 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.

keytypedefaultminmaxoptionstooltip
valuepoint[][]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.

keytypedefaultminmaxoptionstooltip
controlPointspoint[][] | 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.
degreeUinteger11NURBS degree along U; must be >= 1 and <= the control net's row count minus 1, or evaluate fails loud.
degreeVinteger11NURBS degree along V; must be >= 1 and <= the control net's column count minus 1, or evaluate fails loud.
knotsUnumber[][]Empty = clamped-uniform.
knotsVnumber[][]Empty = clamped-uniform.

text

Text · binding · returns string · context: parameters

Default key: text.

A text parameter value.

keytypedefaultminmaxoptionstooltip
valuestring''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.

keytypedefaultminmaxoptionstooltip
valueurl''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.

keytypedefaultminmaxoptionstooltip
valueobject | 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).

keytypedefaultminmaxoptionstooltip
valuebooleanWorld-axes visibility for this view; absent = host default (on).

background

Background · step · returns color · context: views

Default key: background.

A view's clear color.

keytypedefaultminmaxoptionstooltip
valuecolorViewport 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.

keytypedefaultminmaxoptionstooltip
valueinteger00Non-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.

keytypedefaultminmaxoptionstooltip
valuenumber0Linear 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.

keytypedefaultminmaxoptionstooltip
valuelayer | 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.

keytypedefaultminmaxoptionstooltip
valuematerial | 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).

keytypedefaultminmaxoptionstooltip
valuestring | 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.

keytypedefaultminmaxoptionstooltip
valuepointAbsent = 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).

keytypedefaultminmaxoptionstooltip
valuevector | 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 scale step.

keytypedefaultminmaxoptionstooltip
valuevector | 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.

keytypedefaultminmaxoptionstooltip
valuestring['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.

keytypedefaultminmaxoptionstooltip
valuebooleanAnalytic 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).

keytypedefaultminmaxoptionstooltip
valuevector | 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.

keytypedefaultminmaxoptionstooltip
valueobject | functiontruetrue/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

nameexposure
wireframefalse
shadedfalse
realistictrue
xrayfalse
📖 50 min read