Node reference
The + menu on the Generators tab is organised into groups. Click +, pick a group, then pick a node type to add it to the Generators list. Click any node row to expand its argument fields.
| Group | Nodes | What they produce |
|---|---|---|
| Segment | line, arc, ellipseArc, spline | Open curves β used in loop.segments or as a form path |
| Shape | rectangle, circle, ellipse, polygon, slot, loop | Closed profiles β used in form profile fields |
| Form | extrusion, blend, revolution, sweep, sweptBlend, opening | 3D solids and voids |
| Curve | modelCurve, symbolicCurve | Visible lines (not solids) |
| Array | linearArray, radialArray | Copies of a node in a line or circle |
| Transform | move, rotate, scale, mirror, copy | Repositioned or duplicated geometry |
| Datum | referencePlane | An explicit named reference plane |
| Material | material | A Revit material with colour and transparency |
| Text | modelText | 3D extruded text |
| Annotation | textNote, filledRegion, detailCurve, control, image | 2D view-only elements |
| MEP | connector | An MEP connector on a form |
| Adaptive | adaptivePoint, adaptiveLoftForm, curveByPoints | Adaptive component points and lofts |
| Family | nestedFamily | A nested .rfa instance |
Segments β open curves
Segment nodes produce open curves. Use them in two ways:
- As segments inside a
loopnode to build a freeform closed profile. - As the
pathof asweeporsweptBlendform.
line
A straight line between two points.
| Field | Unit | Description |
|---|---|---|
| start | Point2D (mm) | Start point [U, V] |
| end | Point2D (mm) | End point [U, V] |
arc (3-point)
A circular arc that passes through three points: start β mid β end.
| Field | Unit | Description |
|---|---|---|
| start | Point2D (mm) | First endpoint |
| mid | Point2D (mm) | A point on the arc (anywhere between start and end) |
| end | Point2D (mm) | Second endpoint |
ellipseArc
A partial ellipse defined by a centre, two semi-axes, and a start/end angle.
| Field | Unit | Description |
|---|---|---|
| center | Point2D (mm) | Centre of the ellipse |
| radiusX | Coord (mm) | Semi-axis along U |
| radiusY | Coord (mm) | Semi-axis along V |
| startAngle | Coord (rad) | Start angle |
| endAngle | Coord (rad) | End angle |
spline
A smooth interpolated curve through an ordered list of points.
| Field | Unit | Description |
|---|---|---|
| points | Point2D[] (mm) | Two or more points the spline passes through |
Use the + point and Γ buttons in the expanded row to add and remove points.
Shapes β closed profiles
Shape nodes produce closed loops. They are the most common input to form profile fields.
rectangle
| Field | Unit | Description |
|---|---|---|
| width | Coord (mm) | Total width |
| height | Coord (mm) | Total height |
| center | Point2D (mm) | Centre position; default [0, 0] |
| cornerRadius | Coord (mm) | Rounds all four corners; default 0; must be < min(width/2, height/2) or ignored |
circle
| Field | Unit | Description |
|---|---|---|
| radius | Coord (mm) | Radius |
| center | Point2D (mm) | Centre position; default [0, 0] |
ellipse
| Field | Unit | Description |
|---|---|---|
| radiusX | Coord (mm) | Semi-axis along U |
| radiusY | Coord (mm) | Semi-axis along V |
| center | Point2D (mm) | Centre position; default [0, 0] |
Limitation: Revit cannot dimension an ellipse's radii, so an ellipse profile does not flex when its radii reference a parameter. Use
rectangle,circle, orloopwhen you need a flexible profile size.
polygon
A regular polygon with equal sides. radius is the circumradius (centre to vertex).
| Field | Unit | Description |
|---|---|---|
| sides | Coord (integer) | Side count: 3 = triangle, 4 = square, 6 = hexagon⦠|
| radius | Coord (mm) | Circumradius |
| center | Point2D (mm) | Centre position; default [0, 0] |
slot
A stadium β two parallel lines capped with semicircles (also called a pill or obround).
| Field | Unit | Description |
|---|---|---|
| length | Coord (mm) | Total outer length (edge to edge); straight section = length β 2Γradius |
| radius | Coord (mm) | Radius of the semicircular ends |
| center | Point2D (mm) | Centre position; default [0, 0] |
loop
A freeform closed profile assembled from ordered segment nodes.
| Field | Unit | Description |
|---|---|---|
| segments | segment key[] | Ordered list of line / arc / ellipseArc / spline keys |
The last point of each segment must connect to the first point of the next, forming a closed chain.
Forms β 3D solids and voids
Forms build 3D geometry from profiles. Every form accepts these common settings:
- Solid / Void (
isSolid) β switch in the node row; a void cuts overlapping solids. - Material β pick a
materialnode from the graph. Material nodes are processed in a pre-pass and can appear anywhere in the list. - Subcategory β assigns the form to a Revit subcategory (for graphics overrides). In JSON:
"meta": { "subcategory": "Panel" }. - Visibility β per-detail-level on/off: Coarse / Medium / Fine. In JSON:
"meta": { "visibility": { "coarse": false, "medium": true, "fine": true } }.
For a full walkthrough of each form type, see Form types.
extrusion
Sweeps a profile along the Z axis.
| Field | Unit | Description |
|---|---|---|
| profile | shape key[] | Closed profiles: first = outer boundary, additional = holes (any closed shape: loop/rectangle/circle/ellipse/polygon/slot) |
| depth | Coord (mm) | Extrusion depth |
| startOffset | Coord (mm) | Offset from the sketch plane; default 0 |
| isSolid | bool | true (solid) or false (void); default true |
blend
Lofts between a bottom profile and a top profile.
| Field | Unit | Description |
|---|---|---|
| bottomProfile | shape key[] | Array of shape keys β only the first is used (no holes for blend) |
| topProfile | shape key[] | Array of shape keys β only the first is used (no holes for blend) |
| depth | Coord (mm) | Distance from bottom to top |
| bottomOffset | Coord (mm) | Offset of the bottom from the sketch plane; default 0 |
| isSolid | bool | default true |
revolution
Spins a profile around an axis.
| Field | Unit | Description |
|---|---|---|
| profile | shape key[] | Cross-section to spin (must be on one side of the axis); any closed shape (loop/rectangle/circle/β¦) |
| axisStart | Point2D (mm) | Start of the revolution axis |
| axisEnd | Point2D (mm) | End of the revolution axis |
| startAngle | Coord (rad) | Start angle; default 0 |
| endAngle | Coord (rad) | End angle; default 2Ο |
| isSolid | bool | default true |
sweep
Pushes a constant profile along a path.
| Field | Unit | Description |
|---|---|---|
| path | segment/loop key | A segment or loop node used as the path (all segments of a loop are used in order) |
| profile | shape key[] | Cross-section to push (any closed shape) |
| isSolid | bool | default true |
sweptBlend
Follows a path and morphs between two profiles.
| Field | Unit | Description |
|---|---|---|
| path | segment/loop key | Single path curve β a segment node or a loop (only first segment of the loop is used) |
| bottomProfile | shape key[] | Profiles at the path start (any closed shape; multi-loop: outer + holes) |
| topProfile | shape key[] | Profiles at the path end (any closed shape; multi-loop: outer + holes) |
| isSolid | bool | default true |
opening
Cuts a hole through a specific host form.
| Field | Unit | Description |
|---|---|---|
| host | form key | The solid form to cut through |
| profile | shape key[] | Shape of the opening β only the first shape in the list is used |
Limitation: opening accepts a single outer loop. For perforated cuts (holes with holes), use a void
extrusionwithisSolid: falseinstead.
Curves β visible line elements
Curve nodes produce visible lines in the Revit family, not geometry. They use the same segment nodes as profiles.
modelCurve
A 3D model line visible in all views.
| Field | Unit | Description |
|---|---|---|
| curve | segment key | A single open-curve segment: line, arc, ellipseArc, or spline (loops and closed shapes are not supported) |
Assign a Line Style (in the node settings panel) to control appearance. In JSON: "meta": { "lineStyle": "<style name>" }.
symbolicCurve
A 2D symbolic line visible only in plan and section views.
| Field | Unit | Description |
|---|---|---|
| curve | segment key | A single open-curve segment: line, arc, ellipseArc, or spline (loops and closed shapes are not supported) |
Line style in JSON: "meta": { "lineStyle": "<style name>" }.
Arrays
Array nodes repeat a source node. Count and spacing are baked at generation β they cannot flex when a parameter changes in Revit. For a flexible count, model repeats explicitly.
linearArray
Copies a node in a straight line.
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to repeat |
| count | Coord (integer) | Total copies including the original |
| offset | Point2D (mm) | Per-copy offset [U, V] |
radialArray
Copies a node in a circle.
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to repeat |
| count | Coord (integer) | Number of copies |
| center | Point2D (mm) | Centre of the circle |
| totalAngle | Coord (rad) | Total sweep angle (2Ο = full circle) |
Arrays and transforms β ordering requirement
Arrays and transforms operate on already-created Revit geometry. Their source node must appear earlier in the nodes array β if the source hasn't been created yet when the array or transform is processed, it is silently skipped. The validator does not catch this; it is a runtime ordering constraint.
Exceptions (no ordering required): material and adaptivePoint nodes are processed in separate pre-passes before all other geometry, so they can appear anywhere in the list.
Shapes and curves (rectangle, circle, loop, arc, etc.) referenced by forms can also appear in any order β forms resolve them by key from the JSON dictionary before creating geometry.
Convention: declare shapes/forms first, then arrays and transforms that reference them.
Transforms
Transform nodes reposition geometry. Behaviour differs by type:
copyandmirrorβ the source is preserved and an additional copy is produced.move,rotate, andscaleβ the source is replaced in place (Revit moves/rotates/scales the element; no duplicate is created).
mirror
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to mirror |
| axis | x or y | Mirror about the model X axis or Y axis |
move
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to move |
| offset | Point3D (mm) | Translation [X, Y, Z] |
rotate
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to rotate |
| axis | x, y, or z | Rotation axis through the model origin |
| angle | Coord (rad) | Rotation angle |
copy
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to copy |
| offset | Point3D (mm) | Translation [X, Y, Z] |
scale
| Field | Unit | Description |
|---|---|---|
| source | node key | Node to scale |
| factor | Coord | Scale factor (1 = unchanged) |
| origin | Point3D (mm) | Scale origin; default [0, 0, 0] |
Datum
referencePlane
An explicit named reference plane. Molding auto-generates reference planes for every parametric coordinate β only add one manually when it must be visible and named in the Family Editor.
| Field | Unit | Description |
|---|---|---|
| name | string | Visible name in the Family Editor |
| axis | x or y | The plane is perpendicular to this axis |
| offset | Coord (mm) | Distance from the origin along the axis |
Material
material
Declares a Revit material. Material nodes are processed in a separate pre-pass before all form geometry, so their position in the nodes list does not matter β they can appear before or after the forms that reference them.
To apply: in the form row, open the node settings and pick the material from the Material dropdown. In JSON, use the applyMaterial modifier on the form node.
| Field | Unit | Description |
|---|---|---|
| name | string | Revit material name (must match a material in the Revit project) |
| color | [R, G, B] | Preview colour, RGB 0β255 |
| transparency | number | Transparency 0β100 |
Text
modelText
3D extruded text. Has no 3D viewport preview β it appears only in the generated .rfa.
| Field | Unit | Description |
|---|---|---|
| text | string | Text content |
| position | Point2D (mm) | Placement point |
| depth | Coord (mm) | Extrusion depth of the letters |
Set Label (meta.label) to give the element a readable name in Revit's element tree.
Annotations β 2D, view-only
Annotation nodes create view-specific 2D elements. They appear only in plan/section views inside Revit and have no 3D viewport preview.
textNote
| Field | Unit | Description |
|---|---|---|
| text | string | Text content |
| position | Point2D (mm) | Placement point |
filledRegion
A filled hatch region.
| Field | Unit | Description |
|---|---|---|
| profile | shape key[] | Outer boundary and optional holes β any closed shape key (loop, rectangle, circle, ellipse, polygon, slot) |
detailCurve
A 2D detail line.
| Field | Unit | Description |
|---|---|---|
| curve | segment key | A single open-curve segment: line, arc, ellipseArc, or spline (loops and closed shapes are not supported) |
Assign a Line Style in the node settings panel to control appearance. In JSON: "meta": { "lineStyle": "<style name>" }.
control
Flip/rotate arrows added to the family for use in the project.
| Field | Unit | Description |
|---|---|---|
| shape | string | horizontal, vertical, doubleHorizontal, or doubleVertical |
| position | Point2D (mm) | Placement point |
image
A raster image placed in the first 2D view.
| Field | Unit | Description |
|---|---|---|
| path | file path | Absolute path to the image file (.png / .jpg) on the Revit machine |
| position | Point2D (mm) | Placement point |
MEP
connector
An MEP connector attached to a form face. The family must be in an MEP category (Electrical Fixtures, Mechanical Equipment, Plumbing Fixturesβ¦).
| Field | Unit | Description |
|---|---|---|
| kind | string | electrical, pipe, duct, conduit, or cableTray |
| host | form key | The solid form the connector attaches to |
The connector is placed on the first planar face of the host form.
Adaptive
Adaptive nodes require an adaptive family template (e.g. metric-generic-model-adaptive). They make the family snap to points the user clicks when placing it in a Revit model.
adaptivePoint
A placement click point. Points are activated in the order they appear in the Generators list (first node = first click).
| Field | Unit | Description |
|---|---|---|
| position | Point3D (mm) | Default position [X, Y, Z] |
adaptiveLoftForm
A lofted solid or surface through profiles of adaptive points.
| Field | Unit | Description |
|---|---|---|
| profiles | [[keys]β¦] | Outer array = profile sequence; inner = ordered adaptive point keys per cross-section |
| isSolid | bool | default true |
One profile β a cap surface. Two or more profiles β a loft.
curveByPoints
A reference curve through adaptive points.
| Field | Unit | Description |
|---|---|---|
| points | adaptivePoint key[] | Ordered list (minimum 2) |
Family
nestedFamily
Places a nested .rfa instance inside this family.
| Field | Unit | Description |
|---|---|---|
| path | file path | Absolute path to the .rfa file on the Revit machine |
| position | Point2D (mm) | Placement point [U, V] |
| symbol | string | Family type to place; default = first type |
| rotation | Coord (rad) | Rotation about Z at the placement point |
| parameterLinks | map | { nestedParam: hostParamKey } β drives nested instance parameters from this family's parameters |
To wire nested parameters, use the Parameter Links editor that appears in the expanded node row.