Building smart Revit families: Reducing the size of nested families with interchangeable components
- Zoheir Taheri – Project Manager (BIM/VDC)
- July 22, 2021
While authoring content in large projects, it is extremely common to use nested Revit families with interchangeable components. In other words, nested families that carry various components and options, giving the modeler multiple choices that can be picked from at any instance are commonly used. For instance, a single hanger .rfa file could carry multiple options for strut type (7/8”, 1-5/8”, single and double strut), and number of tiers, thus having multiple options. This blog is a case study, intended to look into how the size of a hanger family, with choices of multiple strut types and tiers, can be reduced from 3.46MB to 1.64MB.
How big is too big?: When it comes to Revit family creation, the very first rule to keep in mind is that the size of the model is not directly affected by the size of the family. What does that mean? Let’s say you have to load a 4 MB family to a project, and you copy the component 10 times in the model. Save and close the model, and then check the model size. What happened? Do you see a 4×10=40 MB model? Nope. This means that the family size impacts the project size only once at the time of loading the family into the project. In other words, duplicating a Revit family in a project does not cumulatively add up to the overall file size. Duplicating a family has a minimal impact on the project file size.
This raises the following question: Why do we have to be concerned about the family if it doesn’t have a cumulative impact on the project size? The answer lies in using less storage. If you can reduce a 4MB family to a 1MB family having the same features and capabilities, why wouldn’t you? The more complex and heavier a family is, the more time it takes for a user to choose between different options a family has to offer. In other words, it makes the entire modeling experience efficient.
In this article, we are going to investigate a strut hanger family with size of 4MB and discuss some of the ways we can reduce the size and complexity of the family.
Base version of the family: This is a multi-tier strut hanger family with a size of 3.64 MB, as shown in Figure 1. The tiers can go up to 3. Each tier can have their own strut type from 1 5/8” single to 4D22 facing up or down. Below is the list of strut types used in this family:
- 1 5/8” facing up
- 1 5/8” facing down
- 1 5/8” double back to back
- 7/8” facing up
- 4D22 facing up
- 4D22 facing down
Figure 1. Base Family
This family is designed in such a way that the user has access to the family options in the properties paletTE, meaning that there is only one family type with different options in the Properties Palette, to get to a right strut hanger in terms of number if tiers and strut type for each tier. As shown in figure 2, the user can select a number from 1 to 6 each number representing a unique strut type.
Figure 2. Base Family Instance Properties
Now let’s look closely at the nested family and see how we accomplish having different strut types for each tier. As shown in Figure 3, there is a subcomponent family inside the nested family called STRUT, and this subfamily has 6 different types, each representing a strut type being used in this family, from 1 5/8” to 4D22. Each tier can have 6 types of struts, and this nested family can support up to 3 tiers. This means we have 3×6=18 instances of STRUTfamily inside the nested family, and 18 YES/NO instance parameters, with one assigned to each strong>STRUT instances to control visibility of these struts based on the user selections, as shown in Figure 4.
Figure 3. Base Family Subcomponents
Figure 4. Base Family Strut Visibility Control
Now let’s have a look inside the subcomponent family, STRUT, and see how we have different types of strut inside this family. As shown in Figure 5, STRUT family itself is a nested family that has 6 different subfamilies each representing different strut type and being controlled by YES/NO type parameters. This STRUT family itself has a 1.66 MB size.
Now that we know the way this strut hanger family is built, let’s discuss how we can reduce the size and complexity of this family. Remember, the size of the nested family was 3.46 MB and the strut subfamily was 1.66 MB.
Figure 5. STRUT nested family
Revised version of the family: Let’s discuss the STRUT subfamily first and see how we can reduce its size. As shown in figure 6, in the new revised STRUT family, instead of having 6 different subfamilies loaded we use 6 different SWEEPS each has its own PROFILE that has been loaded into the STRUT family. Also note that we are still using type parameter, to control visibility of each strut type. Using this SWEEP and PROFILE instead of creating separate families for each strut type, reduced the STRUT family size from 1.66 MB down to 856 KB, which is almost a 48% reduction in storage used.
Figure 6: SWEEPs and Profiles
Figure 7: Profile families
Now let’s look at the nested family itself and see how we can reduce its size. In the revised nested family, instead of loading the STRUT family 18 times as we did in the base version, we loaded it only 3 times using the FAMILY TYPE: ELECTRICAL FIXTURE parameter, with each load representing each tier strut, as shown in figures 8 and 9 below. Using Family Type Parameters enabled us to reduce the nested family size from 3.46 MB to 1.63 MB – which is almost a 52% reduction.
Figure 8. Family Type Parameter
Figure 9. Using Family Type Parameter to Select Different Strut Type
You can always be successful when creating nested families with interchangeable components by using the YES/NO parameter and loading different types of subcomponents into the nested family. However, this causes a heavy and complex family, which slows down the modeling speed when choosing between different options in the nested family in the model.
We have demonstrated how we can reduce the size and complexity of a family ,using FAMILY TYPE PARAMETERS, SWEEPS and PROFILES, by almost 55%. As always said, build your families smart, in the Sanveo way!