Anatomy of the Revit Family
Table of Contents
You’re familiar with Revit Families, but do you understand them? Do you realize that some of the Revit behaviors that confuse you the most are family related. Almost every Revit user will say they know what a family is, but many of them do not truly understand them and how fundamental they are to the way Revit works. For example:
Do you know the 3 types of families?
Do you know that part of why a railing is so confusing to edit, is because it’s a mix of two types of families?
Do you understand family hierarchy?
Did you know the same family can have different abilities if you change its category?
Do you understand the difference between an instance and a type of a family?
By the end of this article, you will know the answers to the above questions and more which will help demystify some of Revit’s confusing behavior.
What is a Revit Family?
If you’ve used Revit, then you are familiar with components like doors and furniture and you learned that, in Revit, these components are called families. If you’re the typical user, that is probably where your knowledge of families ends. You think of Families as the elements that you go find for free on the internet, download, and then place into your project. This idea of Revit Families is only partially true. The families you load into a project are just one type of Revit Family. In fact, almost everything you see and place in Revit is a family. The walls, the floors, the dimension strings, the railings, the text, the detail components, the viewports, the levels, the grids, etc. are all families.
Identifying Revit Family Types
Revit families come in three flavors:
1-System Families
These are the basic elements you would assemble on a construction site such as walls, roofs, floors, etc. They also include non-3D elements such as viewports, grids, dimensions, etc.
System Families are predefined inside of the project file. You cannot fundamentally change the way they are set up. You can adjust their parameters and make new types, but they cannot be otherwise altered. You cannot load a system family into the project, and they cannot be saved external to the project. They originate and are adjusted within the Revit project environment.
System Families categories all have their own icons/commands in the command ribbon.
2-Loadable Families
When people talk about “Revit Families” this is most often the type of family they are referring to. These are the elements that are created outside of the Revit project environment and then loaded in. These are typically elements you would purchase and have installed on a jobsite. They include items such as doors, windows, furniture, lights, air handlers, plumbing fixtures, etc. They can also include 2D elements like titleblocks, north symbols, key plans, and other detail components.
Loadable Families are highly customizable and are created and defined using the Revit Family editor, outside of the Revit project environment. They are saved external to the project as .RFA files, then loaded into the project. The way a Loadable Family was created determines what parameters are available for adjusting inside of the project space. Some loadable families are created to be highly adjustable and have many parameters available to change the way they look and behave. These are called parametric families. Others have few or no parameters built into them, making them a static family.
Not all Loadable Family categories have their own icons/commands in the command ribbon. Doors, windows, columns, and beams are some examples of loadable family categories with their own command while furniture, millwork, and plumbing fixtures are examples of loadable family categories that are all placed using the same “Component” command. For the majority of loadable family categories, it’s easy to identify which command to use, but others are trickier and require you to simply memorize them.
3-In-Place Families
These are unique elements that you create when it is very specific to only the current project. It is recommended to use these types of families sparingly, as they take up more computing resources than a loadable family. Typically, to warrant using an In-Place Family, a couple of things should be true: 1- To create the new family element, you’d like to reference existing geometry from the project in the context of the project. 2- The new element is not repeated much throughout the project. 3- You do not intend to use the In-Place Family in other projects.
In-Place Families are, as the name suggests, created within the project environment, in place. When you enter into the “Model In-Place” command, you are temporarily given access to parts of the family editor environment within the Revit project environment. This allows you to create a family the same way you would a Loadable Family, but within the context of your current Revit project model.
To create and place an In-Place Family, you use the “Component > Model In-Place” command.
System Families Can Contain Embedded Loadable Families
Now that you know the difference between System and Loadable families, you can understand the concept of nesting loadable families inside of system families. Modifying these types of families can be confusing if you are not consciously aware of this principle. To edit a System family with and nested Loadable family, you first edit the system type, which will allow you to change the type parameters for that family and will also give you access to adjust or replace the nested Loadable families within the System family. Confused? Let’s look at an example:
Railings are a system family, but one railing family contains multiple types of nested loadable families such as profiles, posts, balusters, and terminations.
Other examples of System Families with nested Loadable Families include: gutters, fascia, wall sweeps, slab edges, curtain wall mullions, levels, call outs, etc. Basically if it’s a System Family and editing it made you confused, it likely falls within this category.
Understanding Revit Family Hierarchy
Another concept that is important to be aware of is the relationship and differences between a category, family, type, and instance.
Take a moment to study the image above as you read about the following parts of the family hierarchy.
Categories
Are pre-defined by Revit. There are a finite number of them, and they are used to classify all the many families you will find in a project. This classification shows up in several places throughout the project. One example is in the “Visibility Graphics” dialogue where you can adjust the way your families are displayed in the view according to its category. The “Object Styles” dialogue is arranged similarly and controls the way families are displayed project wide.
Additionally, a family’s category can affect how a family behaves and what parameters it’s forced to have.
For example, if you’d like to create a family that is hosted to a surface and cuts a hole through it’s host, you could not do this with a family that is categorized as “Furniture”. The furniture category does not allow this functionality.
Another example is if you have a static corbel family that you have created. If you chose to categorize it as “Casework”, Revit forces your corbel family to have “Length”, “Width”, and “Height” parameters even though your corbel is not parametric and does not use those parameters.
Family
Is next in the hierarchy. We’ve already discussed what a family is. It’s simply a defined object that is meant to be repeated throughout a project.
Type
Inside a family, you will have one or more types. Meaning fundamentally, the object geometry and category are the same, but the types differ in one or more parameters from one to the other. Take a 6-panel door for example. One type of this door might be 36” wide, while the same door can also come in a 30” wide type. Same door family, two different types.
There can be as many or as few types of one family as you like. In fact, some families have so many types that they use what is called a Type Catalog. This is a dialog that pops up upon loading the family. This dialogue allows you to choose which of the many types of that family you would like to load into the project so that you don’t have to load them all into your project and bloat your file.
Instance
Is each time a family type is placed in the model. Continuing the example of the 6-panel door: If you placed a 36” door in the entry of a home and also at the back patio, we would say there are two instances of the 36” type door. If there were 4 bedrooms and each one had a 30” door, we would say there are 4 instances of the 30” type door.
You Can See the Hierarchy in the Project Browser
The project browser helps you understand and visualize this organization:
When you expand the family’s section of the browser, the first level you see will be the categories. If you expand a category, you will find all the families in the project that are set to that category. If you expand one of those families, you will then see all the types of that family that are loaded into the project. The project browser does not allow you to expand a family type to see all it’s instances, but you may right click on the type name and click “Select All Instance” which will then highlight all the instance of that family type either in the project, or in the view.
Instance Vs. Type Parameters
Another concept related to hierarchy that is a source of confusion for some users is the difference between instance and type parameters.
There are many things that could be said on this topic such as when a parameter should be in instance and when it should be a type, but that is a topic for another day.
What is important to note here is:
- Whether a family’s attribute is a type parameter or instance parameter is determined by the author of the family itself.
- That a parameter is simply an attribute of a family that the user is able to change within the project environment. In the example of the doors above, the door width is an example of a parameter.
Type Parameter
Is a parameter that is the same for all instances of a family type. In our door example, the width of the door is a type parameter because all instances of the 36” door had the same width parameter value. Likewise, all instances of the 30” door had the same width parameter value.
To change the value of a type parameter you must select the family and click the “Edit Type” button on the properties menu.
Instance Parameter
Is a parameter who’s value can change from instance to instance without changing the type of the family. Again, in our door example, perhaps the entry door is red while the patio door is white. Both doors are instances of the 36” type of the 6-panel door family. The only difference between them is the value of the material parameter. One being red and the other white. Changing the color of the door in this example does not change the type of door.
To change the value of an instance parameter you simply need to select the family and all its instance parameters will be displayed directly in the properties panel where you can change their respective values.







