Molding

Form types

Forms build 3D geometry. They take one or more closed profiles (Shape or Loop nodes) and give them a third dimension. Every form can be a solid (default) or a void β€” a void cuts through every overlapping solid.

Choosing the right form

What you wantForm to use
Constant cross-section pushed straightextrusion
Cross-section that morphs between two shapesblend
Shape spun around a centre linerevolution
Profile pushed along a curved pathsweep
Profile that follows a path and morphssweptBlend
Cut a hole with a specific shapevoid extrusion (isSolid: false)
Cut a through-hole in a specific solidopening

Extrusion

An extrusion sweeps a profile along the Z axis (perpendicular to the sketch plane). It is the most common form.

How to build one:

  1. Add a shape node (e.g. Rectangle) and set its width, height, and centre.
  2. Add an Extrusion. In the expanded row, tick your rectangle in the Profile checkbox list.
  3. Set Depth β€” the thickness of the extrusion β€” to a parameter or a number.

Optional fields:

  • startOffset β€” the bottom of the extrusion starts this far above the sketch plane (useful for a raised sill).
  • Solid toggle β€” turn it off to make a cutting void.

Example β€” a centred door panel 900 Γ— 2100 Γ— 45 mm:

Parameters
  Width       length  default 900   Instance
  Height      length  default 2100  Instance
  Thickness   length  default 45
  HalfHeight  length  formula: Height / 2

Generators
  Rectangle  PanelProfile   width=Width  height=Height  center=[0, HalfHeight]
  Extrusion  Panel          profile=[PanelProfile]  depth=Thickness

Blend

A blend lofts between a bottom profile and a top profile at different heights. The cross-section smoothly transitions from one shape to the other.

How to build one:

  1. Add a shape node for the bottom profile.
  2. Add a second shape node for the top profile.
  3. Add a Blend. In the expanded row:
    • Tick the bottom shape in Bottom Profile.
    • Tick the top shape in Top Profile.
    • Set Depth (the vertical distance between the two profiles).
    • Optionally set Bottom Offset to lift the bottom profile above the sketch plane.

Example β€” a column that starts square and ends round:

Parameters
  BaseW    length  default 400
  TopR     length  default 150
  ColH     length  default 3000
  HalfColH length  formula: ColH / 2

Generators
  Rectangle  BaseRect  width=BaseW  height=BaseW  center=[0, 0]
  Circle     TopCirc   radius=TopR  center=[0, 0]
  Blend      Column    bottomProfile=[BaseRect]  topProfile=[TopCirc]  depth=ColH

Limitation: each end of a blend accepts one loop only β€” extra loops (holes) are ignored. To cut a blend with a hole, layer a void extrusion on top.


Revolution

A revolution spins a profile around an axis, producing a solid of revolution β€” a column, dome, knob, bowl, or jar shape.

How to build one:

  1. Add a shape node for the cross-section. Position it offset from the axis (the profile must not cross the axis).
  2. Add a Revolution. In the expanded row:
    • Tick the shape in Profile.
    • Set Axis Start and Axis End β€” two points defining the spin axis in the sketch plane.
    • Leave Start Angle = 0 and End Angle β‰ˆ 6.283 (2Ο€) for a full revolution, or set a partial angle for an arc.

Example β€” a round column, axis along Y:

Parameters
  ColR    length  default 200
  ColH    length  default 3000
  HalfColH length formula: ColH / 2

Generators
  Circle     ColProfile  radius=ColR  center=[ColR, HalfColH]
  Revolution Column      profile=[ColProfile]
                         axisStart=[0, 0]   axisEnd=[0, ColH]

The circle's centre is shifted right by ColR so it sits to the right of the Y axis. Spinning it around Y produces a full cylinder.

Partial revolution: endAngle must be a Coord β€” since Math.PI is an expression, declare a parameter:

Parameters
  HalfTurn  number  formula: Math.PI   // β‰ˆ 3.14159

Generators
  Revolution  HalfColumn  ...  endAngle=HalfTurn

Sweep

A sweep pushes a constant cross-section profile along a path curve. The path can be any segment node (line, arc, ellipseArc, spline) or a loop.

How to build one:

  1. Add a segment node (e.g. Arc) that defines the path.
  2. Add a shape node (e.g. Circle) that defines the cross-section.
  3. Add a Sweep. In the expanded row:
    • In the Path dropdown, pick the segment node.
    • Tick the shape in Profile.

The profile is placed perpendicular to the path at its start point and then follows the curve.

Example β€” a curved handrail:

Parameters
  RailR   length  default 25
  Rise    length  default 3000
  Run     length  default 4500
  HalfR   length  formula: Run / 2

Generators
  Arc     RailPath  start=[0, 0]  mid=[HalfR, Rise]  end=[Run, 0]
  Circle  RailXS    radius=RailR
  Sweep   Rail      path=RailPath  profile=[RailXS]

Swept Blend

A swept blend follows a path like a sweep, but also morphs between two profiles β€” one at the start, one at the end. Use it for elements that taper, twist, or transition along their length.

How to build one:

  1. Add a segment node for the path.
  2. Add two shape nodes β€” one for the start cross-section, one for the end.
  3. Add a SweptBlend. In the expanded row:
    • Pick the segment in Path.
    • Tick one shape in Bottom Profile (start) and the other in Top Profile (end).

Example β€” a gutter that widens along its length:

Parameters
  GutterLen  length  default 3000
  StartW     length  default 100
  StartH     length  default 80
  EndW       length  default 180
  EndH       length  default 120

Generators
  Line       GutterPath   start=[0, 0]  end=[GutterLen, 0]
  Rectangle  GutterStart  width=StartW  height=StartH
  Rectangle  GutterEnd    width=EndW    height=EndH
  SweptBlend Gutter       path=GutterPath  bottomProfile=[GutterStart]  topProfile=[GutterEnd]

Voids

Any form becomes a void by turning off the Solid toggle in its expanded row (or setting isSolid: false in JSON). A void cuts through every overlapping solid in the family.

Example β€” a box with a slotted opening:

Generators
  Rectangle  BoxProfile   width=BoxW   height=BoxH
  Extrusion  BoxSolid     profile=[BoxProfile]  depth=BoxD        ← solid

  Slot       SlotProfile  length=SlotLen  radius=SlotR
  Extrusion  SlotVoid     profile=[SlotProfile]  depth=BoxD        ← void (Solid off)

The slot void overlaps the box and carves a slot-shaped channel through it.

When to use a void extrusion vs opening:

SituationUse
Hole with a complex shape or holes-within-holesvoid extrusion
Simple hole that goes through a specific named solidopening

Opening

opening cuts a hole through a specific host form using a profile. Unlike a void, it only cuts one named form.

FieldDescription
hostThe solid form to cut through
profileThe shape of the opening (one outer loop)

Example:

Generators
  Rectangle  WallProfile  width=W  height=H
  Extrusion  WallSolid    profile=[WallProfile]  depth=D

  Circle     HoleProfile  radius=HoleR  center=[0, HalfH]
  Opening    PortHole     host=WallSolid  profile=[HoleProfile]

Limitation: opening accepts a single outer loop β€” no holes-within-holes. Use a void extrusion for those cases.


Subcategory and visibility

Every form has two optional settings for controlling its appearance in Revit:

Subcategory assigns the form to a named Revit family subcategory. Users can apply per-subcategory graphics overrides (colour, lineweight, visibility) in the project. Good names: Panel, Frame, Hardware, Glazing.

Visibility controls per-detail-level display:

LevelTypical use
CoarseSimple bounding box only β€” fast plans at small scale
MediumMain body visible β€” standard construction documents
FineFull detail including hardware β€” large-scale details

To set these, expand the form row in the Generators list and look for the Subcategory field and the Visibility checkboxes (Coarse / Medium / Fine).

Example β€” a door knob that hides at coarse detail:

Set Subcategory = Hardware, uncheck Coarse.

In JSON:

"meta": {
  "subcategory": "Hardware",
  "visibility": { "coarse": false, "medium": true, "fine": true }
}
πŸ“– 5 min read