Skip to content

Detail Items and False Positives

What is OST_DetailComponents?

In Revit, Detail Items are 2D annotation-like elements used in views — section marks, hatch patterns, detail lines, and similar drafting content. In the Revit UI they appear under the category name "Detail Items".

Their internal label is OST_DetailComponents.

Despite their 2D, view-only nature, Revit classifies them as category.type = "Model". This means a broad model-category filter includes them:

$[type = "FamilySymbol" and values.category.type = "Model"]
/* OST_DetailComponents is included here */

Why they cause false positives

Detail Items behave differently from true model elements:

  • They are placed in views, not in the 3D model
  • They do not carry parameters like Mark, Level, or Assembly Code
  • They are not part of the building's physical data

When a rule checks that all model elements have a Mark or Assembly Code, Detail Item instances will always fail — not because the data is wrong, but because these elements were never intended to carry that data.

The result is a long list of reported errors for elements that are not in scope. This is a false positive: the rule flags something as an error when it is not.


The solution: explicit exclusion

Because Detail Items cannot be excluded by category.type alone, they must be removed with an explicit label exclusion:

$CategoryExclusion := ["OST_DetailComponents"];

$[
  type = "FamilySymbol"
  and values.category.type = "Model"
  and $not(values.category.label in $CategoryExclusion)
]

Using an exclusion list rather than a hardcoded != condition makes it easy to add other problematic categories later without rewriting the filter logic.


Code examples

Code examples will be added here.


Summary

Property Value
Revit UI name Detail Items
category.label OST_DetailComponents
category.type "Model"
Why excluded Carries no model data; always fails parameter checks
How to exclude $not(values.category.label in $CategoryExclusion)