Maybe you know the power of Revit software’s Family Editor but you’ve avoided it or it has intimidated you until now. Wait no more. This article will introduce you to the basics of Family Editor. Once you get past being intimidated, you will find that while Family Editor is extremely powerful, it can actually be great fun. In this short introduction, we will create a Revit component family complete with constraints and parameters. Don’t worry if you don’t know what a constraint or parameter is — we’ll cover that too. Whether you’ve never worked in Revit software before, or you’ve used Revit software for a while but you’ve simply avoided Family Editor, this article will teach you the basics of the Family Editor in a simple step-by-step fashion. We’ll work through the creation of a Revit component (loadable) family complete with constraints and parameters.
Even if you are completely new to Revit, you have no doubt discovered how important families and the family editor are to your success in Revit. Everything you create in Revit is part of a family — consequently, understanding families and what it takes to manipulate them is a vital part of learning the software. Beginning with the difference between System and Component families, this section will explore the critical concepts and terminology. We’ll also take a quick look at what is provided in the Revit libraries and learn about family templates. Following this brief introduction to terminology, the tutorial will focus on the component family creation procedures and strategies — presented in detailed step-by-step procedures. Using the concepts and techniques covered herein, you will learn how to begin tapping into one of the most powerful aspects of the Revit software package — the Revit Family Editor!
Everything in Revit Is Part of a Family
In order to get started with the family editor, it is important to understand some basic concepts and terminology. All elements in the Revit platform are part of a family and they fit into a clearly defined hierarchy. At the top level of this hierarchy, are Categories. Categories are pre-defined within the software and cannot be added, deleted or renamed. A wide variety of categories are included in Revit and distributed among a few overall master groups including: model and annotation (but there are a few others). Model Categories include all elements that comprise your building model such as: Walls, Doors, Floors, Stairs and Beams. Annotation categories include items like Text, Dimensions and Tags. Categories are by definition very broad. It would not be enough to simply have a Walls or Doors category. These items come in all shapes, sizes and behaviors. Therefore, the next level of the hierarchy is the Family. All Revit elements belong to a family. Families are best thought of simply as a collection of like items sharing the same overall look and behavior. Revit includes many families such as the “Basic Wall” wall family, the “Single-Flush” door family and many annotation families like “Text” or “Linear Dimension Style.” Even the views themselves like floor plans and sections are system families in Revit.
Families branch into two major kinds based on their behavior: the System Family and the Component (Loadable) Family. System families include anything that is built into the software and cannot be manipulated by the user in the interface. This can include model components like walls and floors, but also includes equally important items like floor plans, project data, and levels. System families cannot be created or deleted. Their properties are pre-defined at the “factory.” However, most system families like walls, floors and roofs can have more than one: Type. A type is our next level or hierarchy in Revit. Think of it as a collection of variables (sizes, materials or other settings) saved to certain values and given a name for ease of reuse. A Type provides a convenient way to switch several variables of a family at once. A family can contain one or more types; each with its own unique user-editable settings. So while for example we cannot create or delete wall families, we can add, delete and edit the types associated with each of the provided wall families. For example, “Basic Wall” is the most common wall family. In the out-of-the-box template files, there are several predefined Basic Wall types such as: Exterior — Brick on CMU, Generic 6″ and Interior — 5 ½″ Partition (1hr). The Basic Wall definition simply means that it is a layered wall that has the same structure along its entire length and height. The actual make-up of this structure can vary widely from type to type as the names noted here imply.
Other system families vary considerably in their specific composition and features, but at the conceptual level they share the same basic characteristics: the overall behavior of the object is defined by the system and cannot be redefined; however, the specific object-level parameters can be manipulated via the creation and application of type and/or instance variations.
As already noted, system families include both things that are part of the physical model in your Revit projects (like walls, floors and roofs) and other items that are not (like views, project data, and levels). To distinguish further, system families that also happen to be model elements are referred to as “Host” elements. A Host is an element that can receive or support or provide structure for other model elements. Hosts are often required for many of the component families like doors or windows which require wall hosts, or lighting fixtures which often require ceiling hosts.
Component (or “Loadable”) families include everything that is not a system family. Many component families are model elements, but they can also be annotation or other non-model elements as well. Component families can be “host-based” (require a host), or they can be “free-standing” (not requiring a host). Revit users can create, delete and modify component families (and their associated types). This is accomplished in the family editor and each family thus created can be saved to its own unique file (with and RFA extension). Like system families, component families can contain one or more types. They can also have instance parameters that vary from instance to instance (not part of the type). Unlike system families, they are completely customizable by the end user in the family editor.
Loadable component (model) families are the primary focus of this article.
In addition to the system and component families, there is a third type of family in Revit called the “In-Place Family.” In-place families are similar to component families in terms of creation, editing and strategy. However, an in-place family is created directly within a project (not in a separate family file as component families are) and it cannot be exported to other projects. Further, you can create in-place versions of many system family categories like walls, roofs and floors. This capability allows the creation of custom or free-form shapes not otherwise possible in pre-defined system families. You should only consider creating an in-place family for elements that are unique to a particular project with little possibility that you will ever want to reuse them in future projects. Also, in-place families as already noted, offer the only means to “customize” certain system families like walls or roofs. In-place families therefore prove effective for modeling unique existing conditions or very specialized and unique design scenarios. However, wherever possible, consider if the item you wish to create can be built using either predefined system elements or a component family first before resorting to an in-place family. Often creating an in-place element seems like a good idea at the time only to later be the source of regret. We will not be exploring in-place families in this article.
Revit and Family Terminology
Here is a brief summary of Revit for Architecture critical terminology. The illustration is borrowed from the online help file a few releases back. There is a different version in the current help system, but I prefer this illustration as I believe it still does the best job of summarizing all of the various kinds of elements in the Revit environment.
Element — Anything in your Revit Architecture project. (Elements in italic can be created and edited in the family editor.)
Model Element — Something that represents the actual geometry of your building.
Host Element — An element that can receive or support or provide structure for other model elements (built in-place construction).
Component Element — An item inserted into a project (items that are pre-manufactured, purchased and installed). Can be freestanding or require a host.
Host Based Component Element — A Component Element that must be inserted on or into a Host.
Freestanding Component Element — A Component Element that can be inserted independently without a Host.
View Element* — An item in the Revit interface that allows you to see and interact with all other elements. Views conform to the characteristics of typical architectural drawing types like plan, section, elevation and schedule. Some View Element families allow customization of Types, many do not.
Datum Element* — Include Levels, Grids and Reference Planes. These are used establish project context, limits, extents and the like. Datum Elements provide guidelines and limits for other elements within a project and can also include annotative qualities. The families and types of datum elements cannot be edited.
View-Specific Element — Something that is used to document, describe or embellish a view of your project. View-specific elements do not appear in any other views automatically. If you wish to repeat view-specific items in other views, you can copy and paste them.
Detail Element — A two-dimensional family typically representing a model element but at a level of detail that would be impractical to model. Detail elements appear only in the view in which they are added. Detail Elements remain their actual size as created and do not adjust scale with the view.
Annotation Element* — Include text, dimensions tags and symbols. These items are view-specific (appearing only in the view in which they are added) and are used to notate, embellish, describe and document design intent within a Revit Architecture project. Annotation elements maintain a constant size relative to the plotting scale of the view in order to maintain a constant size relative the sheet on which they are placed.
*Level and Grid head tags, Section and Elevation head tags, model element Tags and Symbols (Generic Annotation families) can be created and modified in the family editor. Text and Dimensions cannot.
Many of the branches in the diagram contain both system and component families. Naturally for a discussion on the family editor, we are therefore limited to considering only the non-system families. This includes all items on the Component Elements model branch, Detail Item families on the Detail Elements branch, Loaded Tags on the Annotation Elements branch and a few other miscellaneous elements as well like titleblock families or view tags and level head symbols.
Family Libraries and Resources
The first step to working in Revit in general and building families in specific is to become comfortable with this list of terms. Keep it handy as reference as you continue. But before you embark on the process of building family content, it should be noted that there are many families included with the software and many more resources available online. A quick search in Google will turn up hundreds of sites containing tips, tricks and downloadable content. Do take the time to explore the out-of-the-box offerings and some of many available sites as well if you have not already done so.
As has been noted, you cannot create or delete system families. All system families will already be in your project file. To add types that are not present to a system family, you either have to duplicate an existing type, rename and modify it, or import one from another project. To import from another project, you can use Transfer Project Standards (Manage tab) or copy and paste.
To use a component family from outside the project in your current project, you can load it from a family file (RFA) or copy and paste from another project. To load a family file, use the Load Family button on the Insert tab of the ribbon, or the contextual ribbon tab when a command is active. For example, if you click the Door tool (Architecture tab), the Load Family button will appear on the Modify | Place Door tab. This lets you load a door family and place it all in the same procedure. Also, on the Insert tab of the ribbon, on the Autodesk Seek panel, you can run a search from directly in Revit of the online Autodesk Seek website. You can also type seek.autodesk.com into your web browser.
In many cases, a family similar to the one you wish to create will already exist somewhere in the product or online in one of the myriad online resources. Most companies also maintain their own libraries of office standard content on their internal servers. Check with your CAD/BIM manager to see what your firm offers.
The Recommended Way to Get Started
Practical wisdom says that it makes more sense to begin with something in the library and either use it as-is, or modify it to suit your needs. Typically, this will be easier than starting from scratch. In your day-to-day work when you are up against deadlines, this is by far the best approach. Just be sure to take a little time to “vet” any unknown or newly downloaded content to ensure that it meets your office standards before using it on a live project.
If you are new to creating families in Revit, then I recommend that you create your first few families from scratch. By building the entire family yourself, you will learn more than simply modifying one. Furthermore, families can include very complex parameters and constraints that often link to one another in a chained and sometimes complex or even convoluted fashion. Even for seasoned family content authors, it can be difficult to dissect these often complex relationships. Therefore, to avoid becoming discouraged, it is recommended that you start with a small simple example and work your way to more complexity over time.
For example, don’t start with a Door or Window family. These are more complex than they at first seem. Begin with something small, simple and boxy: like a simple piece of furniture or equipment.
Family Creation Procedures
The basic process for creating a family is as follows: decide what type of family you need. This will include deciding what it should look like, how much detail to include and whether the graphics or level of detail should change in different views. You can start by sketching out (yes on paper) the family you intend to create and make notes about its requirements.
Next, create a new family file from the appropriate template or open an existing family file similar to the one you wish to create and save as. The choice of family template is important. The templates included with the software are provided by Autodesk with the product. Each contains basic settings, behaviors and in many cases some simple geometry or reference planes. The geometry included (like a sample length of wall) is only for reference and does not get inserted with the family when used in a project. While it is possible to change the category of family after creation, it is best to choose wisely at the start. Try to choose the most appropriate category selecting: Generic Model.rft only if no other suitable category can be determined. Unlike category, the hosting behavior of a family file cannot be changed after it is created. So if you are not certain that you want the family you are creating to require a Host, it is safer to build it without one. In other words, if you choose Casework wall based.rft as the template, the family you create will always require a wall in order to be inserted. If you think you might like to use the cabinet as a freestanding piece of casework, choose the Casework.rft template instead. You can always use the Align tool to move the non-hosted cabinet to a wall face later. You cannot later decide to detach the hosted casework item from its host wall.
Once you have decided what you want to build and created a new family file based on an existing file or the appropriate new template, you are ready to create your family reference planes, parameters and geometry. It is usually best to start with the framework. If you begin with an existing family, delete anything you don’t need first. Then in both existing and new families, add the Reference Planes you will need. Reference planes provide the skeleton for your family. Some templates already contain basic reference planes. You can use these as-is or modify them. The proper procedure is to manipulate or create reference planes, optionally constrain or assign parameters to these planes, and then create geometry and lock it to the reference planes. In this way, the reference planes actually drive the geometry. This is the most reliable, best-practice way to build your family files.
Once you have laid down your reference plane framework and assigned parameters and constraints, test the family by “flexing” it. This is done in the “Family Types” dialog which you can access from the Family Types button on the ribbon. To flex the model, simply try different values for each parameter and then apply. If the framework moves the way you expect, everything is good. Otherwise, undo, and try to fix the problem. We will see several examples below.
When all geometry and parameters have been created, applied and flexed, you are ready to save the file and load it into a test project (below I use the 100 Sandbox.rvt file for this purpose). If necessary, return to the family editor to make any adjustments and then reload, otherwise your family file is complete.
Constraints and Parameters
In its simplest form, a family can be a static graphic or symbol. Such a family would be drawn the way it was intended to look regardless of the circumstance. The out-of-the-box Chair-Breuer is one such example. There are no types or user-editable dimensions in this family. However, one of the things that make families so powerful is their ability to use variables to help them conform to varying circumstances. This is done using constraints and parameters. While each of these terms has several possible meanings, in the context of Revit the following definitions are suitable to our discussion.
Constraint — is a fixed rule that can only be manipulated by editing the family file.
Parameter — creates a rule or relationship that has user-editable properties.
Essentially each of these is a rule applied to some part of a family’s geometry or behavior, but a constraint cannot be manipulated by the end user, and a parameter can. For example, if you were working with a door family and you wanted to ensure that a vision panel was 10" from the door edge regardless of the door’s width, you would use a constraint within the family editor to achieve this. On the other hand, if you want to allow the same door family to have varying (flexible) sizes for height and width of the vision panel, these would be parameters. By making vision panel width and height parameters and using them to drive the geometry within the family, the user can exercise much greater control than would otherwise be possible. However, the location of the vision panel with respect to the door would be fixed.
Solid and Void Form Geometry Types
Geometry in families consists of solid and void forms. Solid forms represent the actual physical parts of the family and void forms are used to carve away portions of the solid forms. For example, you could create a solid form box, and then use a void form to cut a hole in it like a donut. Both solid and void forms come in five varieties. These include: Extrusion, Blend, Revolve, Sweep and Swept Blend (see Figure 1). We will use an extrusion and a blend in the tutorial.
An extrusion is a sketched shape pushed along a distance perpendicular to the sketch plane. A blend is similar accept that instead of a single shape, you have both a top and a bottom shape and the 3D form transforms (or blends) from one to the other along the perpendicular height of the form. A revolve spins a sketch shape around an axis. The revolve can be a full 360-degree or a partial arc. A sweep pushes a shape (sketch or loaded profile) along a sketched path. The shape is perpendicular to the path. A swept blend combines features of both the blend and the sweep. The form morphs between two profiles or sketches as in a blend, but can follow a nonlinear path. Unfortunately, the swept blend path can only contain one segment unlike the sweep. This means that complex forms require a spline path. Using a combination of solid and void forms you can create nearly any three-dimensional shape.
As we have already pointed out above, families can contain types. A type is a saved and named collection of values for the parameters within a family. You can add as many types as you wish. Types can be added within the family editor or even later in the project.
You can build complex forms using a combination of the solid and void forms available in the family editor as noted above. However, managing a complex form in a single family can become cumbersome. In many cases, it makes sense to break your object into discreet parts and build the parts as separate families. You can then insert these simpler families into another family that represents the whole. This is referred to as nested families. When you manage your complex families in this way, you gain more control and flexibility.
Subcategories and Visibility Parameters
Any family you create or load from a library will belong to a certain category. Each of the elements within the family can belong to a subcategory within the family. Subcategories provide an extra level of visibility and graphical control over the parts of a family. For example, in the door families included with the software, there are several pre-defined subcategories. One such subcategory is the Plan Swing. Using this subcategory, it is possible to make door plan swings a lighter pen weight across a project regardless of the specific family. This helps enforce standards and simplifies such changes.
Visibility parameters are another way to control elements within a family. Sometimes it is useful to see part of the family only in certain circumstances. For example, you could create a casework family where hardware was an optional display component. In this case, a visibility parameter would be assigned to the hardware elements within the casework family and the visibility parameter could then be toggled on or off by the user depending on whether or not the needed to show it in a given situation.
That completes the introductory materials. Download the class handout for the tutorial, which allows you to follow along with complete step-by-step instructions. Explanations are given in line with the steps, but the steps are highlighted to help them stand out. Many of the concepts discussed in the preceding topics will be showcased in the tutorial.