Being able to control the displayed materials and finishes of nested families is an important part of creating complex Revit families. As families are created to provide more options or be more efficient, additional families are created and placed into a Host family. The use of Nested families has a couple of key advantages:
- When the same component is used multiple times in a family, it can be advantageous to make that component a Nested family. An example of this is a wheel assembly family that is used four different times for a cart.
- When a family needs to have multiple options from which the user can choose. An example of this is a door assembly that has various door panel family options, such as full glass, half glass, solid, etc.
Before I go any further, I want to clarify the difference between a Host family and a Nested family. A Nested family is one that exists inside another family. For instance, when family F1 is loaded into F2, F2 is the Host family and F1 is the Nested family. Typically, F2 is then loaded into the Revit project file.
Anyway, as you create a family with Nested families, you want to be able to control the materials and finishes of those Nested families directly in the Host family Properties palette after it has been placed in the project file. For instance, you may want to control the material/finish/color of a door panel that is actually a nested family in a door assembly. If you don’t set the family up correctly, you will not be able to do this without opening the door panel family and changing it in the family editor. You do NOT want to be required to do this.
Let’s take a look at the steps involved in doing this process.
In the Nested family:
- Open the family that will be the Nested family.
- Add a material parameter as an Instance parameter. In this example, the parameter is named “Nested Item Material“.
- Highlight the Form component(s) (extrusion, blend, revolve, sweep, etc) that will have the same material assigned to them. Many different components can be assigned to the same material parameter.
- With the components highlighted, go to the Properties palette and pick the button to the right side of the Material parameter. (Do NOT pick the box that says “<By Category>”.)
- When the Associate Family Parameter dialog box appears, select the material parameter that you created. In this example, the parameter is named “Nested Item Material”. Pick the OK button.
- Repeat steps 2 through 5 for each different material parameter that is needed. This allows for situations similar to the wheel assembly mentioned earlier where the wheel portion is one material and the bracket portion is a different material.
In the Host family:
- Load the Nested family into this Host family.
- Add a material parameter as either a Type parameter or an Instance parameter, depending upon the control which you desire in a project file.. In this example, the parameter is named “Nested Occurrence 1“.
- Highlight the Nested family.
- With the Nested family highlighted, go to the Properties palette and pick the button to the right side of material parameter name that is contained in the nested family, which is “Nested Item Material” in this example . (Do NOT pick the box that says “<By Category>”.)
- When the Associate Family Parameter dialog box appears, select the material parameter that you created. In this example, the parameter is named “Nested Occurrence 1“. Pick the OK button.
- If the Nested family contains multiple material parameters, repeat steps 3 through 5 for each nested material parameter.
- Repeat steps 2 through 6 for each occurrence of the Nested family in the Host family.
- If Shared Parameters are used for the parameters then they can be used in tags and schedules. I tend to make most parameters like this be Shared Parameters so that I do not limit scheduling capability in the future.
- If the parameter in the Nested family is specified as an Instance parameter, each occurrence of the Nested family in the Host family can have different materials assigned to the same material parameter for each different occurrence of the Nested family. (In the four wheel example, each wheel could have different materials.)
- The material parameter in the Host family also needs to be an Instance parameter for this to work this way.
- If the parameter in the Nested family is specified as a Type parameter, each occurrence of the Nested family in the Host family will have the same material assigned to each occurrence of the Nested family.
- The Nested family may also be loaded into a project file, but if it is directly inserted in a project file then it is not a Nested family for that occurrence in the project file.