The Model Quality module evaluates the structural hygiene and semantic integrity of your iModel before complex geometric or clearance rules are executed. Incomplete naming conventions, duplicate geometry, unclassified physical objects, or corrupt coordinate bounding boxes degrade model trust and invalidate downstream engineering analysis.
Model Quality runs live ECSQL checks against your active changeset, categorising results into GOOD, MEDIUM, or BAD status chips, and tracking historical quality trends over time.
The 7 Core Quality Indicators
When a configuration profile (such as Hospital or Infrastructure) is activated, BIM Checker evaluates the seven foundational indicators:
1. Model Naming Conformance (Models)
Objective: Verifies that all federated discipline models follow strict project codification (e.g., WRSH_\w* for healthcare federations, or CSY01-CCS-GEN-ZZ-M3-\w* for infrastructure).
Why It Matters: Prevents unapproved scratch files, contractor sandbox imports, or temporary coordinate models from leaking into production delivery packages.
2. Category Codification (Categories)
Objective: Audits graphic and drawing categories against agreed taxonomy codes (e.g., ^[AEMLS]-\d{3}-[M]_\w*).
Why It Matters: Ensures consistent 3D visibility filtering, IFC classification export, and reliable cross-discipline layer grouping in WebGL viewports.
3. Spatial Storey Hierarchy (Floors)
Objective: Validates that all building storey elements follow standard vertical naming patterns (e.g., ^Level \d{1}$).
Why It Matters: Unstandardised intermediate level markers (e.g. Level 7A, Level 2 TOS) can cause spatial containment errors, miscalculating floor-to-soffit clearances or misallocating clinical departmental zones.
4. Spatial Location & Rooms (Rooms)
Objective: Queries bis.SpatialLocationElement instances to confirm valid room numbering and room naming (e.g., ^\d{1,3}\s.*$).
Why It Matters: Room validation is critical for statutory Gross Floor Area (GFA) reconciliations, clinical area compliance (HBN 00-01), and travel distance routing.
5. Class Conformance (Class Check)
Objective: Evaluates whether physical assets inherit dedicated schema classes (such as bis.Door, bis.Wall, bis.PipeRun) rather than the fallback Generic.PhysicalObject.
Why It Matters: Generic objects lack engineering semantic attributes, making automated firecode audits or MEP drop sweeps impossible.
6. Duplicate Bounding Boxes (BBox Duplicates)
Objective: Detects multiple distinct element instances occupying identical 3D bounding box coordinates $[X_{\min}, Y_{\min}, Z_{\min}]$ to $[X_{\max}, Y_{\max}, Z_{\max}]$.
Why It Matters: Duplicate geometry artificially inflates material quantity takeoffs, triggers false clash detection warnings, and increases WebGL draw calls.
7. Large / Extent Geometry (Large Geometry)
Objective: Flags rogue elements with extreme diagonal dimensions or elements placed at origin $(0,0,0)$ far outside project boundaries.
Why It Matters: A single rogue element located at $(0,0,0)$ when the building sits at true OS coordinates expands the camera frustum by hundreds of kilometers, making real 3D geometry invisibly small in the viewer.
Authoring Custom Quality Cards
Users with the Author entitlement can create custom Quality Cards using standardised ECSQL query templates.
Query Format Requirements
A quality indicator ECSQL query must aggregate records into three mandatory columns:
label: Descriptive grouping name (e.g., element class, discipline, storey).
elementCount: Total number of elements evaluated within that group.
goodCount: Number of elements satisfying the compliance criteria.
SELECT
label,
COUNT(instance) AS elementCount,
SUM(good) AS goodCount
FROM
(
SELECT
ec_className(e.ECClassId, 's.c') AS label,
e.ECInstanceId AS instance,
CASE
WHEN (e.UserLabel IS NOT NULL AND LENGTH(e.UserLabel) >= {minLabelLength}) THEN 1
ELSE 0
END AS good
FROM
bis.GeometricElement3d e
WHERE
e.BBoxLow IS NOT NULL
{modelFilter}
)
GROUP BY
label
Parameter Tokens & Dynamic Filters
{parameterName}: Delimited parameter tags configured in the indicator settings dialog (e.g., {minWidth}, {maxDiagonal}).
{modelFilter}: Injected dynamically by the UI when users enter a filter string in the Model Filter input.
Discipline Isolation & Model Filtering
When inspecting federated digital twins with hundreds of thousands of components:
Enter a partial model name into the Model Filter field (e.g., Mechanical, WRSH_Architectural).
Click Apply Filter.
All quality indicator cards recalculate in real-time, isolating metrics strictly to elements belonging to matching models.
Click Clear Filter to restore full-facility visibility.
Snapshot Trends & Verification History
Click Save Snapshot to capture current indicator scores against the active iModel changeset.
As design iterations progress and new changesets are ingested, the Trend Chip displays performance deltas ($\Delta +4%$, $\Delta -2%$), highlighting areas of improvement or regression.