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 want | Form to use |
|---|---|
| Constant cross-section pushed straight | extrusion |
| Cross-section that morphs between two shapes | blend |
| Shape spun around a centre line | revolution |
| Profile pushed along a curved path | sweep |
| Profile that follows a path and morphs | sweptBlend |
| Cut a hole with a specific shape | void extrusion (isSolid: false) |
| Cut a through-hole in a specific solid | opening |
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:
- Add a shape node (e.g.
Rectangle) and set its width, height, and centre. - Add an
Extrusion. In the expanded row, tick your rectangle in the Profile checkbox list. - 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=ThicknessBlend
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:
- Add a shape node for the bottom profile.
- Add a second shape node for the top profile.
- 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=ColHLimitation: 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:
- Add a shape node for the cross-section. Position it offset from the axis (the profile must not cross the axis).
- 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=HalfTurnSweep
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:
- Add a segment node (e.g.
Arc) that defines the path. - Add a shape node (e.g.
Circle) that defines the cross-section. - 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:
- Add a segment node for the path.
- Add two shape nodes β one for the start cross-section, one for the end.
- 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:
| Situation | Use |
|---|---|
| Hole with a complex shape or holes-within-holes | void extrusion |
| Simple hole that goes through a specific named solid | opening |
Opening
opening cuts a hole through a specific host form using a profile. Unlike a void, it only cuts one named form.
| Field | Description |
|---|---|
| host | The solid form to cut through |
| profile | The 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:
| Level | Typical use |
|---|---|
| Coarse | Simple bounding box only β fast plans at small scale |
| Medium | Main body visible β standard construction documents |
| Fine | Full 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 }
}