Understanding the Language — Using the Jitterbug as Your Guide
Before building the Jitterbug family, let's understand how Revit organises information. These concepts will make everything else clearer.
Revit organises everything in a four-level hierarchy. Think of it like this:
Category: Generic Models
Family: Jitterbug_Adaptive.rfa
Type: "15cm Edge" or "30cm Edge"
Instance: The actual Jitterbug placed at coordinates (10m, 5m, 0m) in your project
The broadest grouping. Determines how elements behave, schedule, and display. You cannot create new categories — you choose from Revit's predefined list.
A reusable component definition stored in an .rfa file. Contains the geometry, parameters, and behaviour rules. The "recipe" for creating objects.
A variant within a family. Types share the same geometry logic but differ in specific values (size, material, etc.). Defined inside the family.
An actual placed object in your project. Each instance references a Type and can have its own instance-specific properties (position, rotation, etc.).
This is where most confusion happens. A parameter is a variable that controls something about your family. The critical question is: where does the value live?
FAMILY: Jitterbug_Adaptive.rfa
│
├── TYPE: "15cm Edge"
│ │ EdgeLength = 15cm ←── Type Parameter (shared)
│ │
│ ├── Instance A (placed at 0,0,0)
│ │ Position = 0,0,0 ←── Instance Parameter (unique)
│ │ Rotation = 0°
│ │
│ └── Instance B (placed at 10,0,0)
│ Position = 10,0,0
│ Rotation = 45°
│
└── TYPE: "30cm Edge"
│ EdgeLength = 30cm ←── Different value, same parameter
│
└── Instance C (placed at 20,0,0)
Position = 20,0,0
Rotation = 0°
Instance A and B share EdgeLength (Type). Instance C has a different EdgeLength because it's a different Type.
| Parameter | Type or Instance? | Why |
|---|---|---|
| EdgeLength | 🔷 Type | Defines the variant — "15cm Jitterbug" vs "30cm Jitterbug" |
| ScaleFactor | 🔷 Type | Calculated from EdgeLength, so it must also be Type |
| TransformationState | 🟢 Instance (if added) | Each placed Jitterbug could show a different state (VE, Icosa, Octa) |
Another distinction: where is the parameter defined?
Use Family Parameters for this exercise. They're faster to set up and you can always convert to Shared Parameters later if you need scheduling or tagging.
| Method | Steps |
|---|---|
| Keyboard shortcut | Press F then T (two separate keystrokes) |
| Ribbon (2020+) | Modify tab → Properties panel → Family Types |
| Ribbon (older) | Create tab → Properties panel → Family Types |
| Right-click | Right-click canvas → Family Types... |
┌─────────────────────────────────────────────────────────────┐
│ Parameter Properties Dialog │
├─────────────────────────────────────────────────────────────┤
│ │
│ Parameter Type: ○ Family parameter ← Start here │
│ ○ Shared parameter │
│ │
│ Parameter Data │
│ ───────────────────────────────────────────────────────── │
│ Name: [ EdgeLength ] │
│ │
│ Discipline: [ Common ▼] │
│ │
│ Type of Parameter: [ Length ▼] │
│ │
│ Group parameter under: [ Dimensions ▼] │
│ │
│ ───────────────────────────────────────────────────────── │
│ ● Type ← All instances of this Type share value │
│ ○ Instance ← Each instance has its own value │
│ │
│ [ OK ] [ Cancel ] │
└─────────────────────────────────────────────────────────────┘
| Parameter | Family/Shared | Type/Instance | Discipline | Type of Parameter | Default |
|---|---|---|---|---|---|
| EdgeLength | Family | Type | Common | Length | 15.24 cm |
| ScaleFactor | Family | Type | Common | Length | = EdgeLength / 1.4142 |
Use whatever units you normally work in. The guide uses centimetres, but millimetres or metres work equally well. For 6-inch edges: 15.24 cm = 152.4 mm = 0.1524 m.