Revit Families – Wall Layers

Last updated January 9, 2025
By Ian Story

Measurement Observations

  • Revit correctly reports the thickness of the core layer regardless of orientation.
  • Revit correctly reports the total thickness of the wall regardless of orientation.
  • For measurements spanning from the inside/outside face to the core layer, Revit reports a real measurement (not an imaginary 31/32″ value) regardless of the number of layers (even if there are no layers other than the core). However, Revit will sometimes decide to report the measurement to the opposite face of the wall instead. This means that the “exterior layers” measurement will sometimes instead be equal to the thickness of the interior layers + the core thickness (equivalently, the total wall thickness – the exterior layers thickness). And vice versa for the “interior layers” measurement. This behavior is unpredictable and needs to be buffered against (it appears to have something to do with which direction the wall was originally drawn).
    • Proposed solution: detect when the wall is in this “flipped” state by checking whether core + exterior layers + interior layers add up to the total wall thickness. If they don’t, use the available information (total thickness, reported interior layers, reported exterior layers) to calculate a fixed value for the interior and exterior layers. This appears to work:
    • Flipped = not(Measure Exterior + Measure Interior + Measure Core = Measure Total)
    • Corrected Exterior = if(Flipped, Measure Total – Measure Exterior, Measure Exterior)
    • Corrected Interior = if(Flipped, Measure Total – Measure Interior, Measure Interior)
  • Measurements involving non-core, non-edge layers are more challenging:
    • If a layer in the family wall structure is not present in the model, Revit will report the phantom value from the family wall. I take advantage of this by assigning all layers in the family wall a thickness of 31/32″. Because we never use this thickness in the model, this lets us identify imaginary layers: layers that report as 31/32″ don’t exist. Additionally, Revit will report the highest-numbered layer on each side of the core (as numbered in the “Edit Structure” dialogue box) as imaginary.
    • When there are imaginary layers, Revit selectively chooses which ones to report:
      • For both interior and exterior wall layers, Revit reports layer thicknesses from the top down (as seen in the family viewer and in the “Edit Structure” dialogue box. This corresponds to smaller numbers in the “Edit Structure” dialogue box).
      • All layers with a larger number will report with imaginary numbers (31/32″). Except that Revit also treats the highest-numbered layer on a side (interior or exterior) as imaginary. This gives us an off-by-one problem.
        • If there is only one exterior layer, all exterior layers will report as imaginary.
        • If there is only one interior layer, all interior layers will report as imaginary.
    • When the wall is in a flipped state, the outermost exterior layer (if it isn’t reporting as imaginary) will report a large value, where the actual layer thickness is equal to the total wall thickness minus the reported value.
    • Proposed solution:
      • Corrected E1 = if(Measure E1 = Imaginary, Corrected Exterior, if(Flipped, Measure Total – Measure E1, Measure E1))
      • Corrected E2 = if(Measure E2 = Imaginary, Corrected Exterior – E1, Measure E2)
      • Corrected E3 = if(Measure E3 = Imaginary, Corrected Exterior – E1 – E2, Measure E3)
      • Corrected E4 = if(Measure E4 = Imaginary, Corrected Exterior – E1 – E2 – E3, Measure E4)
      • Corrected I1 = if(Measure I1 = Imaginary, Corrected Interior, Measure I1)
      • Corrected I2 = if(Measure I2 = Imaginary, Corrected Interior – I1, Measure I2)
      • Corrected I3 = if(Measure I3 = Imaginary, Corrected Interior – I1 – I2, Measure I3)
      • Corrected I4 = if(Measure I4 = Imaginary, Corrected Interior – I1 – I2 – I3, Measure I4)
  • The above observations give us enough information to consistently identify all layer thicknesses in the wall. But we still have a problem: this gives us layer thicknesses according to the interior definition of the wall structure (as shown in the “Edit Structure” dialogue box, where exterior is up). However, we currently have no way to determine which side of the wall the user wants to put the exterior casing on. Despite the family labeling the up side as the “placement” side, we have no way of determining whether this is correct.
    • One possible solution: assume that the exterior casing should be on the exterior side of the wall, and require the user to check a box if they want to reverse this.
    • As far as I have been able to determine by research and experimentation, there is no way to detect via reporting whether a family has been mirrored or flipped. So for now, let’s have the family make an assumption and give the user a checkbox to reverse it if the family isn’t displaying correctly due to mirroring.

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed