Node router#
Which file documents which node
This page is a router, not a reference. Each language family has one file under
features/ with its syntax, a compiling example and its pitfalls. Grep
features/INDEX.md (its Name index lists every node, joinery kind and property a feature
file declares) or use the table below. The binding contract is docs/KDL_AUTHORING.md; where
this directory and that document disagree, the document wins and the disagreement is a bug to
report.
Facts that apply to every node (KDL_AUTHORING §1, §4, §7b):
- Dimensions are floats:
19.0, never19.units=mmis the only unit;(in)34.5is an inch literal,(in)"1-3/4"(a string) is a fractional-inch literal (34 1/2,3/4,1'-2"), andinch(x)converts in an expression.--set/overridesalso take length text ("34 1/2","12.7mm"). - Z is negative going down from a part's top face:
z=0.0is the top,z=-90.0is 90 mm down. - A quoted string is a CEL expression; a bare word is a name or enum.
x="width / 2.0"is an expression,normal=pos_xis a name. Never quote an enum value. - Features on one part are order-independent: every cutter is unioned and cut once.
- Enum lists (
edges,faces) are child nodes; KDL v2 has no array literal. join(notconnect) takesmale=Part@Mark female=Part@Mark, unquoted.
Node to file#
| You are writing | Nodes | File |
|---|---|---|
| The root, parameters, expressions, limits | project params meta unit_display, CEL functions | project-and-params |
| Materials, finish, colour, purchased hardware | materials material hardware hardware_use hardware_mount finish color | materials-and-hardware |
| A part template, its stock, grain and marks | component stock mark tilt= heading= | components-and-stock |
| A part that moves (drawer, door, lid, vise chop): checked over its travel | travel | travel |
| Placing parts | assembly part by pos rot mirror repeat role=reference | parts-and-assemblies |
| Importing or choosing a build variant | import collection choice slots construction | reuse-and-collections |
| Cuts into a face or edge | dado groove rabbet chamfer roundover moulding taper hole trim | edge-and-face-cuts |
| A cut-out or curved outline | cut_path line arc polyline path | cut-paths |
| A smooth spline edge, a named compound path | spline circle path cut_path | paths-and-splines |
| Veneer or laminate faces | veneer match | veneer-and-laminate |
| Turned parts | shape=round section circle pommel | round-stock-sections |
| A member curved along its own length (a crest rail, a splat) | bend arc spline | curved-members |
Any joint: marks, join, clearance, which kind | joinery join butt | joinery-contract |
| Dowels, pocket holes, biscuits, dominos, edge glue | dowel pocket_hole biscuit domino edge_glue | joinery-fasteners |
| Mortise and tenon, round tenon, pin, wedge, key | mortise_and_tenon round_tenon | joinery-tenons |
| Laps, bridles, box joints, dovetails | half_lap cross_lap bridle box_joint dovetail_* sliding_dovetail | joinery-laps-and-boxes |
| Mitres, panel-frame corners | miter stile_and_rail | joinery-frames |
features/INDEX.md is generated from the files' front matter and also lists any family file
added after this table was written. Check it first.
Words that are accepted but cut nothing#
The parser knows these names; the build records them as skipped (scene JSON "skipped",
and a ww check warning) instead of failing, so a design with one still compiles and does
not do what you meant.
lamination: glued-up stock, not material removal. Model the finished thickness as plainstock.pocket,mortise,tenon,dovetailwritten as a feature: these are joints. Write ajoineryand ajoin.
Limits (compiler-enforced, the same in CLI, server and browser)#
Source 256 KiB; nesting depth 64; 2,000 parts and 1,000 features per part after every
repeat expands; one repeat 4,096 iterations (nested ones multiply). The diagnostic names
the limit it hit. Details: features/project-and-params.md.