Jitterbug Parametric Revit Family
Complete guide to creating a transformable Jitterbug family in Revit. Choose Manual to learn deeply, or Hybrid to save 30+ minutes with Dynamo automation.
A parametric Revit family with 10 transformation states. Change the Family Type to instantly transform between Vector Equilibrium (90Β°), Icosahedron (60Β°), and near-Octahedron (5Β°) β no Dynamo required after setup.
Prerequisites
- Revit 2022 or later β Any edition (Architecture, Structure, MEP)
- Dynamo β Comes bundled with Revit (Hybrid approach only)
For Both Approaches
- Creating a new Revit family (File β New β Family)
- Working in the Family Editor environment
- Adding dimensions and using Labels to link to parameters
For Hybrid Approach (Additional)
- Opening Dynamo from Revit (Manage tab β Dynamo)
- Adding nodes to the Dynamo canvas
- Connecting nodes with wires
Need a refresher? See Revit Fundamentals and Dynamo Basics.
Choose Your Approach
Both approaches produce identical results. Choose based on your goals and time.
π§ Manual (Pure Revit)
Build everything in Revit's Family Editor. Best for learning family creation deeply.
β‘ Hybrid (Recommended)
Automate repetitive tasks with Dynamo. Finish geometry manually in Revit.
Workflow Comparison
Hybrid Workflow
The script creates 39 parameters, 10 family types, and enters 360 coordinate values β all in about 2 minutes. This manual work takes 30+ minutes.
Step 1: Create Family in Revit
Create New Family Revit
Open Revit and create a new family:
- File β New β Family
- In template browser, select:
Metric Generic Model.rft - Click Open
Save the Family Revit
- File β Save As β Family
- Name:
Jitterbug_Parametric.rfa - Choose a location you'll remember
Saving before running Dynamo creates a backup. Dynamo operations can't always be undone.
Step 2: Set Up Dynamo Canvas
Open Dynamo while the family is open in Family Editor. If you open Dynamo from a project file, the script won't work.
Open Dynamo Dynamo
- In Revit, go to Manage tab
- Click Dynamo button
- Wait for Dynamo to load
- Click File β New to create a blank graph
Add Python Script Node Dynamo
- In the library panel (left side), search:
Python Script - Drag the Python Script node onto the canvas
Expand Core β Scripting β Python Script in the library tree, or use Ctrl+F to search.
Paste the Script Code Dynamo
- Double-click the Python Script node to open the editor
- Select all existing code: Ctrl+A
- Delete it: Delete
- Open
Jitterbug_FamilyAutomation.pyin a text editor (Notepad, VS Code, etc.) - Copy entire contents: Ctrl+A then Ctrl+C
- Paste into Dynamo editor: Ctrl+V
- Click outside the editor window to close it
Canvas Layout Dynamo
Just the Python Script node. Add a Watch node to see the status message.
Step 3: Run the Automation
Click Run Dynamo
In the bottom-left corner of Dynamo, click the Run button.
The script takes a few seconds to execute.
Verify Output Dynamo
The Watch node (or Python Script output) should display:
JITTERBUG FAMILY AUTOMATION COMPLETE ==================================== PARAMETERS CREATED: 39 - 36 vertex coordinate parameters (V0_X through V11_Z) - EdgeLength, VertexRadius, PipeRadius FAMILY TYPES CREATED: 10 VE_90, Trans_80, Trans_70, Icosa_60, Trans_50, Trans_40, Trans_30, Trans_20, NearOcta_10, NearOcta_5 Edge Length: 15.24 cm
Dynamo has created all parameters and types! In Revit, go to Create β Family Types to verify you see 39 parameters and 10 types in the dropdown.
Step 4: Finish in Revit
Now create the geometry and link it to the parameters. This step must be done manually.
Linking geometry to parameters requires Revit's interactive dimension/label workflow. Dynamo cannot automate this step in the Family Editor.
Create 12 Reference Points Revit
- Go to Create tab β Point β Reference Point
- Click anywhere in the view to place a point
- Repeat 12 times (position doesn't matter yet)
- Optional: Name them V0 through V11 in Properties panel
Link Points to Parameters Revit
For each Reference Point (V0 through V11):
- Select the Reference Point
- In Plan view: Add dimension from point to origin (X axis)
- Select the dimension β In Options bar, click Label dropdown β Select
V#_X - Repeat for Y axis β Label as
V#_Y - In Elevation view: Add dimension (Z axis) β Label as
V#_Z
This linking step takes about 10-15 minutes. It's the main manual work remaining.
Create Edge Lines Revit
- Go to Create tab β Model β Model Line
- In a 3D view, click one Reference Point, then another to create a line
- Repeat for all 24 edges (see Edge Topology)
Test the Transformation Revit
- Go to Create tab β Family Types
- Change the Type dropdown from
VE_90toIcosa_60 - Click Apply
- The geometry should transform! π
- Save the family
You've created a parametric Jitterbug family! Load it into a project with Load into Project button.
Manual Approach Overview
Build everything in Revit's Family Editor without Dynamo. Time: 60-90 minutes. Best for learning Revit families thoroughly.
Steps Summary
- Create Family: File β New β Family β Metric Generic Model.rft
- Add 39 Parameters: Create β Family Types β Add each V#_X, V#_Y, V#_Z (36 total) plus EdgeLength, VertexRadius, PipeRadius
- Create 10 Types: VE_90, Trans_80, Trans_70, Icosa_60, Trans_50, Trans_40, Trans_30, Trans_20, NearOcta_10, NearOcta_5
- Enter Values: For each type, enter coordinates from
Jitterbug_Positions.csv - Create Reference Points: Place 12 points, link to parameters via dimensions/labels
- Create Edges: Connect 24 vertex pairs with Model Lines
Steps 5-6 are identical to the Hybrid approach β see Step 4: Finish in Revit above for detailed instructions.
Steps 2-4 (creating parameters, types, entering values) take 30-45 minutes manually. This is what the Hybrid approach automates.
What Dynamo Can & Cannot Automate
| Task | Dynamo | Manual | Notes |
|---|---|---|---|
| Create family document | β | β | Must create in Revit first |
| Select template | β | β | Choose manually |
| Create Family Parameters | β | β | FamilyManager.AddParameter |
| Create Family Types | β | β | FamilyManager.NewType |
| Set parameter values | β | β | FamilyManager.Set |
| Create Reference Points | β | β | Can create, but linking is tricky |
| Link geometry to parameters | β | β | Requires interactive dimension/label |
| Compute vertex positions | β | β | Python constraint solver |
| Save family | β | β | Manual save required |
Edge Topology
Connect these vertex pairs with Model Lines (24 edges total):
# Edge connections (vertex index pairs)
(V0,V4), (V0,V5), (V0,V8), (V0,V9),
(V1,V4), (V1,V5), (V1,V10), (V1,V11),
(V2,V6), (V2,V7), (V2,V8), (V2,V9),
(V3,V6), (V3,V7), (V3,V10), (V3,V11),
(V4,V8), (V4,V10), (V5,V9), (V5,V11),
(V6,V8), (V6,V10), (V7,V9), (V7,V11)
Pre-Computed Vertex Positions
For manual entry or verification. Edge length = 15.24 cm.
| Vertex | X (cm) | Y (cm) | Z (cm) |
|---|---|---|---|
| V0 | 10.7763 | 10.7763 | 0.0000 |
| V1 | 10.7763 | -10.7763 | 0.0000 |
| V2 | -10.7763 | 10.7763 | 0.0000 |
| V3 | -10.7763 | -10.7763 | 0.0000 |
| V4 | 10.7763 | 0.0000 | 10.7763 |
| V5 | 10.7763 | 0.0000 | -10.7763 |
| V6 | -10.7763 | 0.0000 | 10.7763 |
| V7 | -10.7763 | 0.0000 | -10.7763 |
| V8 | 0.0000 | 10.7763 | 10.7763 |
| V9 | 0.0000 | 10.7763 | -10.7763 |
| V10 | 0.0000 | -10.7763 | 10.7763 |
| V11 | 0.0000 | -10.7763 | -10.7763 |
All 10 type configurations are in Jitterbug_Positions.csv. Open in Excel for easy copy-paste.
Troubleshooting
You opened Dynamo from a Revit project instead of a family. Close Dynamo, open your .rfa family file, then reopen Dynamo from the Manage tab.
Make sure you copied the entire script file, including all import statements at the top. Check that nothing was truncated.
Reference Points aren't linked to parameters. Add dimensions from each point to the origin and label them with V#_X, V#_Y, V#_Z parameters.
In Dynamo library, expand Core β Scripting β Python Script. Or use the search box (Ctrl+F) and type "python".