Revit Fundamentals

Understanding the Language — Using the Jitterbug as Your Guide

← Back to Jitterbug Academy

Before building the Jitterbug family, let's understand how Revit organises information. These concepts will make everything else clearer.

The Revit Hierarchy

Revit organises everything in a four-level hierarchy. Think of it like this:

Category — The broadest classification (Walls, Doors, Generic Models...)
└─ Family — A specific design (our Jitterbug.rfa file)
└─ Type — A variant within the family (6" edges, 12" edges...)
└─ Instance — An actual placed object in your model
Jitterbug Example

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

Core Concepts

Category

The broadest grouping. Determines how elements behave, schedule, and display. You cannot create new categories — you choose from Revit's predefined list.

🎭 Analogy: Like "Furniture" vs "Lighting" in a catalogue — fundamentally different things.

Family

A reusable component definition stored in an .rfa file. Contains the geometry, parameters, and behaviour rules. The "recipe" for creating objects.

🎭 Analogy: A recipe for chocolate cake — the instructions, not the cake itself.

Type

A variant within a family. Types share the same geometry logic but differ in specific values (size, material, etc.). Defined inside the family.

🎭 Analogy: "6-inch round" vs "8-inch square" versions of the same cake recipe.

Instance

An actual placed object in your project. Each instance references a Type and can have its own instance-specific properties (position, rotation, etc.).

🎭 Analogy: The actual cake on the table — you can have many cakes from the same recipe.

Parameters: Type vs Instance

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?

🔷 Type Parameter

  • Shared by all instances of that type
  • Change it once → all instances update
  • Defined in the Family Types dialog
  • Creates different "variants" of the family
  • Efficient for memory (value stored once)

🟢 Instance Parameter

  • Unique to each placed instance
  • Change it → only that instance updates
  • Set in Properties panel when instance is selected
  • Allows individual customisation
  • More flexible but uses more memory
    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.

How to Decide: Type or Instance?

❓ "Should all Jitterbugs of this size share this value?"
YES → Type Parameter

EdgeLength, Material, Default State

"All 15cm Jitterbugs should be 15cm"

NO → Instance Parameter

Position, Rotation, Visibility Override

"This specific Jitterbug is rotated 45°"

For Our Jitterbug
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)

Family Parameters vs Shared Parameters

Another distinction: where is the parameter defined?

📁 Family Parameter

  • Defined inside this family only
  • Cannot be scheduled across different families
  • Cannot be tagged
  • Quick to create — no external files
  • Good for: Internal calculations, learning, prototyping

🌐 Shared Parameter

  • Defined in an external .txt file
  • Can be scheduled across multiple families
  • Can be tagged in views
  • Requires more setup
  • Good for: Production work, BIM coordination, standards
Recommendation for Learning

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.

Quick Reference: Creating Parameters

Opening the Family Types Dialog

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

Adding a Parameter

  1. Open Family Types dialog
  2. Click Add... (under Parameters section)
  3. Choose Family parameter (or Shared parameter)
  4. Enter Name (e.g., "EdgeLength")
  5. Select Discipline: Common
  6. Select Type of Parameter: Length
  7. Select Group parameter under: Dimensions
  8. Choose Type or Instance
  9. Click OK
┌─────────────────────────────────────────────────────────────┐
│  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 ]             │
└─────────────────────────────────────────────────────────────┘
            

Summary: Our Jitterbug Parameters

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
Units Note

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.


Continue to Revit Family Guide →