← Back to Jitterbug Academy

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.

⏱️ 25-90 min πŸ“Š Intermediate πŸ”§ Revit 2022+
🎯 What You'll Create

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.

Time: 60-90 min
Dependencies: None

⚑ Hybrid (Recommended)

Automate repetitive tasks with Dynamo. Finish geometry manually in Revit.

Time: 25-35 min
Saves: 30+ min

Workflow Comparison

Hybrid Workflow

Create Family
Revit
β†’
Run Script
Dynamo β€’ 2m
β†’
Create Points
Revit
β†’
Link Params
Revit
β†’
Create Edges
Revit
πŸ’‘ What Dynamo Automates

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

1

Create New Family Revit

Open Revit and create a new family:

  1. File β†’ New β†’ Family
  2. In template browser, select: Metric Generic Model.rft
  3. Click Open
2

Save the Family Revit

  1. File β†’ Save As β†’ Family
  2. Name: Jitterbug_Parametric.rfa
  3. Choose a location you'll remember
πŸ’Ύ Why Save Now?

Saving before running Dynamo creates a backup. Dynamo operations can't always be undone.

Step 2: Set Up Dynamo Canvas

⚠️ Critical

Open Dynamo while the family is open in Family Editor. If you open Dynamo from a project file, the script won't work.

1

Open Dynamo Dynamo

  1. In Revit, go to Manage tab
  2. Click Dynamo button
  3. Wait for Dynamo to load
  4. Click File β†’ New to create a blank graph
2

Add Python Script Node Dynamo

  1. In the library panel (left side), search: Python Script
  2. Drag the Python Script node onto the canvas

Expand Core β†’ Scripting β†’ Python Script in the library tree, or use Ctrl+F to search.

3

Paste the Script Code Dynamo

  1. Double-click the Python Script node to open the editor
  2. Select all existing code: Ctrl+A
  3. Delete it: Delete
  4. Open Jitterbug_FamilyAutomation.py in a text editor (Notepad, VS Code, etc.)
  5. Copy entire contents: Ctrl+A then Ctrl+C
  6. Paste into Dynamo editor: Ctrl+V
  7. Click outside the editor window to close it
4

Canvas Layout Dynamo

πŸ“ Option A: Minimum Setup (Recommended)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Python Script │────▢│ Watch β”‚ β”‚ (paste code, click Run) β”‚ β”‚ (optional) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ The script uses defaults: β€’ Edge length: 15.24 cm β€’ Create all 10 types: Yes

Just the Python Script node. Add a Watch node to see the status message.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Number Slider β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Min: 5 Max: 50 β”‚ β”‚ β”‚ β”‚ Value: 15.24 │────▢│ IN[0] β”‚ β”‚ (edge length cm) β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Python Script β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ (Jitterbug_FamilyAutomation) │────▢│ Watch β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Boolean │────▢│ IN[1] β”‚ β”‚ Value: True β”‚ β”‚ β”‚ β”‚ (create types) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ How to add input nodes: 1. Search "Number Slider" β†’ drag to canvas β†’ double-click to set value 2. Search "Boolean" β†’ drag to canvas β†’ click to toggle True/False 3. Click output port β†’ drag wire to Python Script input ports

Step 3: Run the Automation

1

Click Run Dynamo

In the bottom-left corner of Dynamo, click the Run button.

The script takes a few seconds to execute.

2

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
βœ… Checkpoint

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.

⚠️ Why Manual?

Linking geometry to parameters requires Revit's interactive dimension/label workflow. Dynamo cannot automate this step in the Family Editor.

1

Create 12 Reference Points Revit

  1. Go to Create tab β†’ Point β†’ Reference Point
  2. Click anywhere in the view to place a point
  3. Repeat 12 times (position doesn't matter yet)
  4. Optional: Name them V0 through V11 in Properties panel
2

Link Points to Parameters Revit

For each Reference Point (V0 through V11):

  1. Select the Reference Point
  2. In Plan view: Add dimension from point to origin (X axis)
  3. Select the dimension β†’ In Options bar, click Label dropdown β†’ Select V#_X
  4. Repeat for Y axis β†’ Label as V#_Y
  5. In Elevation view: Add dimension (Z axis) β†’ Label as V#_Z
⏱️ Time Estimate

This linking step takes about 10-15 minutes. It's the main manual work remaining.

3

Create Edge Lines Revit

  1. Go to Create tab β†’ Model β†’ Model Line
  2. In a 3D view, click one Reference Point, then another to create a line
  3. Repeat for all 24 edges (see Edge Topology)
4

Test the Transformation Revit

  1. Go to Create tab β†’ Family Types
  2. Change the Type dropdown from VE_90 to Icosa_60
  3. Click Apply
  4. The geometry should transform! πŸŽ‰
  5. Save the family
πŸŽ‰ Congratulations!

You've created a parametric Jitterbug family! Load it into a project with Load into Project button.

Manual Approach Overview

πŸ”§ Manual Approach

Build everything in Revit's Family Editor without Dynamo. Time: 60-90 minutes. Best for learning Revit families thoroughly.

Steps Summary

  1. Create Family: File β†’ New β†’ Family β†’ Metric Generic Model.rft
  2. Add 39 Parameters: Create β†’ Family Types β†’ Add each V#_X, V#_Y, V#_Z (36 total) plus EdgeLength, VertexRadius, PipeRadius
  3. Create 10 Types: VE_90, Trans_80, Trans_70, Icosa_60, Trans_50, Trans_40, Trans_30, Trans_20, NearOcta_10, NearOcta_5
  4. Enter Values: For each type, enter coordinates from Jitterbug_Positions.csv
  5. Create Reference Points: Place 12 points, link to parameters via dimensions/labels
  6. 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.

⏱️ Time Investment

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

TaskDynamoManualNotes
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.

VertexX (cm)Y (cm)Z (cm)
V010.776310.77630.0000
V110.7763-10.77630.0000
V2-10.776310.77630.0000
V3-10.7763-10.77630.0000
V410.77630.000010.7763
V510.77630.0000-10.7763
V6-10.77630.000010.7763
V7-10.77630.0000-10.7763
V80.000010.776310.7763
V90.000010.7763-10.7763
V100.0000-10.776310.7763
V110.0000-10.7763-10.7763
πŸ“Š Full Dataset

All 10 type configurations are in Jitterbug_Positions.csv. Open in Excel for easy copy-paste.

Troubleshooting

❌ "This script must be run in the Family Editor"
βœ… Solution

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.

❌ Python import error or syntax error
βœ… Solution

Make sure you copied the entire script file, including all import statements at the top. Check that nothing was truncated.

❌ Geometry doesn't move when changing types
βœ… Solution

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.

❌ Can't find Python Script node
βœ… Solution

In Dynamo library, expand Core β†’ Scripting β†’ Python Script. Or use the search box (Ctrl+F) and type "python".

Downloads