Door Family
Last updated March 31, 2025
By Ian Story
This page documents how the Door family is set up. This family is one of the fundamental library parts we use in all our projects – this one parent family covers nearly all the door openings we use in a project.
This page includes documentation on Revit’s quirks and odd behavior. These observations are noted in italics to separate them from the family-specific documentation.
Nested Family Structure
- Door
- Bundled Studs* (Left and Right) [see Posts family group]
- Door Opening Mask
- Door Casing* (Interior / Exterior side, selected via the “Interior Casing” or “Exterior Casing” parameters, respectively)
- (individual casing families, e.g. Exterior Door Casing – Box, Interior Door Casing – Flat Mitered)
- (detail mask families)
- (individual casing families, e.g. Exterior Door Casing – Box, Interior Door Casing – Flat Mitered)
- (various Door System families, selected via the “Door System” parameter)*
- (individual door units, typically representing door panel designs)*
- (optional) Door Swing Symbol
- (optional) (corresponding Door Frame family)*
- (individual door units, typically representing door panel designs)*
* Families marked with asterisks are Shared families. Some of their type settings can be controlled separately from the parent door, and they can be selected, hidden, joined, and cut separately from the parent door and from each other. They can also be updated independently from the parent door.
Door Family
This is the parent family that holds all of the nested subfamilies. Most of the door parameters are entered here and passed down to the subcomponents. This family includes the calculations for determining wall layers and positioning components at the appropriate positions within the wall. It also determines fine-tuning adjustments for things like casing reveals based on the selected door system type.
Wall Layer Calculations
One whole category of parameters is dedicated to collecting reporting information from the wall and parsing it for layer thicknesses: the “Layers” parameter category.
Door Systems
The Door family currently supports the following system types:
- Cased Door Opening (empty opening)
- Closet Bypass Door
- Exterior Double Slab Door
- Exterior Flanged Door
- Exterior Slab Door
- Interior Slab Door
- Single Pocket Door
The following parameters are influenced by the chosen door system. Every time a new system type is added to the Door family, the if statements for all of these parameters will need to be updated to include the new door system:
- Layers Parameters
- Assumed Exterior Sheathing Layers
- Assumed Interior Sheathing Layers
- Assumed Max Exterior Layers to Cut
- Assumed Max Interior Layers to Cut
- Visibility Parameters
- Centerline Offset
- Exterior Casing Clear Height
- Exterior Casing Clear Width
- Exterior Casing Return
- Exterior Casing Rough Height
- Exterior Casing Rough Width
- Exterior Frame Casing Reveal
- Frame Thickness Head
- Frame Thickness Jamb
- Frame Thickness Threshold
- Interior Casing Clear Height
- Interior Casing Clear Width
- Interior Casing Return
- Interior Casing Rough Height
- Interior Casing Rough Width
- Interior Frame Casing Reveal
- Jamb Depth
- Panel Height
- Panel Width
Key Revit Tips and Tricks
Revit Observation: when a Revit family (or nested shared family) participates in a Join operation, any masking regions within that family go haywire (they disappear or behave oddly, and any sketch lines defining the masking region switch to unexpected line weights).
Workaround: create the masking regions in a Detail Item family. Nest this detail item within the family and pass down any parameters required to define the masking region. Set the masking region families to Show in Foreground, and uncheck the box for Show Only If Instance is Cut in Visibility/Graphics Overrides. For whatever reason, this issue with masking regions does not apply to Detail Item families with this setting. Draw the masking region edges as invisible lines in the Detail Item family, and use a different set of symbolic lines in the main family to define the edges (this allows the lines to use the categories of the main family, instead of showing up as a Detail Object Style).
Revit Observation: masking regions don’t respond to Object Style subtype control. You cannot hide a masking region without hiding the entire category.
Workaround: because we don’t use Detail Levels (Coarse/Medium/Fine) for any other purpose in our graphic standards, set masking regions to only display on Fine detail level. This allows us to switch off masking regions in pared-down views like site plans and structural plans. To make this work, only use invisible lines for the edge of masking regions. Layer additional, separate symbolic lines on top to define the edges so that the symbolic lines don’t automatically disappear when the Detail Level filter turns off the masking region.
Revit Observation: after lots of research and experimentation, we have found no way to detect which side of its host a wall-based family is placed on. We can differentiate exterior vs interior wall layers, but we cannot determine which direction a door is facing. Similarly, we cannot determine from within a family whether the family instance has been mirrored or not.
Workaround: require the user to be rigorous about specifying which way a door is facing and making sure it is not mirrored. We do this by including invisible lines within the family spelling out text (LEFT in the case of doors). This text only shows up when the door is selected and all the lines turn blue. If the text is mirrored, this is a clue to the user that the door is inverted and may behave unexpectedly. Similarly, the text’s ‘up’ direction should always point toward the exterior face of the wall to avoid issues. Using this technique, the user can no longer rotate, mirror, or flip a door to change the handedness or swing direction. Instead, we have to add Yes/No parameters to flip the swing direction and flip the handedness, and resolve the required mirroring operations within the family parameter calculations. This technique has a bonus side effect of automatically identifying the correct handedness of doors in a door schedule, as long as the user is rigorous about maintaining the correct orientation of the hidden text.
Revit Observation: when reporting the number and thickness of wall layers, Revit has several eccentric behaviors that make it challenging to accurately extract info on host wall layer thicknesses.
1) If you use a reporting dimension to measure the position of a layer dividing line that does not exist in the model, Revit will report the position of that line based on its thickness as defined in the family’s reference wall, giving an incorrect length.
2) Following from point #1, Revit will not tell you whether a layer defined in the family’s reference wall is missing in the actual model.
3) In order to report a wall layer’s thickness, that layer must be present in the family’s reference wall. This means you need at least as many layers in the family’s reference wall as you want to support in use.
4) Occasionally, and without a discernable pattern, Revit will flip the reporting measurements for dimensions that measure from a core line to a face line. For example, take a 2×6 wall with 1/2″ gypsum board on the interior and 1 1/8″ of exterior sheathing and siding. The total exterior layers thickness (measuring from outside face of core to outside face of wall) is 1 1/8″, but Revit will occasionally report this as 6″, measuring from outside face of core to inside face of wall.
5) When the number of layers in the model is less than the number of layers in the family’s reference wall, the layers that will be reported correctly are the lowest-numbered layers (also, one fewer layer will be reported than actually exists). In the “Edit Assembly” dialog, Revit numbers each layer, starting with 1 for the exterior finish and increasing toward the interior of the wall. Say you have a wall with 6 layers: exterior siding (1), rigid insulation (2), exterior sheathing (3), wall studs (4), resilient channels (5), and interior gypsum board (6). If the family’s reference wall has 4 layers in the exterior and 4 layers on the interior, the outermost 2 exterior layers (1 and 2) will report correctly (3 layers present, -1 for Revit quirk), and the innermost 1 interior layer (5) will report correctly (2 layers present, -1 for Revit quirk). The core layer(s) (4 in this example) will also report correctly. All the other layers (3 and 6) will report the thickness defined in the family’s reference wall, which may not match the actual model. If there are 1 or fewer layers on a given side of the wall, none of the reporting dimensions on that side will report correctly (though a measurement between the core layer and face layer will still be correct).
Workarounds: to deal with points #1, #2, and #3, set the family reference wall’s default thickness for non-core layers to an unusual dimension that will never be used in actual practice (we chose 31/32″ for this purpose). Then, whenever a reporting dimension reports 31/32″, we can use if statements to flag that layer as missing. We use 4 interior and 4 exterior layers to handle every wall type we are likely to encounter in practice.
To deal with point #4, we detect whether the wall has been flipped into this incorrect state. We do this by checking whether the total interior layer thickness + the total exterior layer thickness is greater than the total thickness of the wall. If the wall is flipped, then we correct the interior layer thickness and exterior layer thickness by subtracting each from the total wall thickness.
To deal with point #5, we first use the available information to determine the count of exterior layers and the count of interior layers. This is equal to the number of non-missing exterior/interior layers (where missing is determined according to the 31/32″ rule), then add one if the total exterior/interior thickness is greater than zero. Then, we calculate the thickness of the final layer that has missing data by subtracting the sum of the known exterior/interior layer thicknesses from the total exterior/interior layer thickness. For example, say we have 3 exterior layers with the following thicknesses: 5/8″, 2″, 1/2″. The total exterior layer thickness is 3 1/8″. Revit will report the thickness of the outermost 2 layers (5/8″ and 2″), while the third layer will report as missing (31/32″). We know there are 3 layers because 5/8″ + 2″ doesn’t add up to 3 1/8″, and we can calculate the missing third layer thickness by subtracting (5/8″ + 2″) from 3 1/8″.
Revit Observation: locking dimensions between reference planes to create guidelines and snap points sometimes creates formula-breaking errors when the dimension chain ultimately ties back to reference wall geometry. Additionally, the only layers that appear to behave consistently as a snap point for dimensions are the interior and exterior face layers.
Workaround: use Reference Lines instead of reference planes, and calculate all dimensions as offsets from the exterior face of wall or from other pre-established reference lines. Don’t attempt to dimension directly from other layers (this comes up a lot for elements that need to be aligned with face of core. You need to separately calculate the total thickness of the exterior layers and place a reference line offset that distance from the exterior wall face).
Revit Observation: masking regions can be set to Display in Foreground. When this setting is activated, they will cover up any model geometry, including cut fills. When multiple nested families have masking regions, the display order is determined according to the highest point within each family.
Use: we make use of this property to cover up continuous shear walls in architectural plan views. The masking regions can be turned off in structural views (using the Detail Level setting) to show that the shear wall is continuous. To stack the display orders correctly, we carefully control the highest point within each nested family component, based on the following categories (we use invisible lines to set the highest point. Also, note that every family with masking regions or symbolic lines needs to have an invisible line to set the highest point and needs data on the door rough opening, including deeply nested elements like the door swing arc family):
- Door Swings: 10″ above R.O.
- Door Units: 10″ above R.O.
- Door Frames: 9.5″ above R.O.
- Door Casings: 9″ above R.O.
- Door Opening Mask: 0″ above R.O.
Additionally, when a family uses masking regions, you also need to include symbolic lines to cover up the edges of the masking regions. Because the masking regions cover up the model geometry, model-generated lines will no longer look correct if there is even a single masking region in the family. Once you commit to symbolic representation, you have to go all the way for plan views.
Recent Posts
Categories
- Annotation Templates (1)
- Building Code (1)
- Calculation Templates (2)
- Civil Engineering (3)
- Derivations (8)
- Drafting Standards (17)
- Geotechnical Engineering (1)
- IT & Software Setup (5)
- Product Knowledge (9)
- Production Tutorial (7)
- Research Notes (9)
- Research Tips (1)
- Revit Families (2)
- Revit Tips (5)
- Standard Operating Procedures (5)
- Stormwater (4)
- Structural Calculators (4)
- Structural Engineering (28)
- Structural General (11)
- Uncategorized (31)