Manufacturing | Formwork - Validating Model Geometry for Formwork Automation

The Deck and Wall formwork solvers we built for this client can only run on clean geometry. We engineered the Model Error Checker, a fail-fast diagnostic tool that runs ten asynchronous geometric tests on the merged Rhino shell model extracted from Revit, detecting the minute modeling defects that would otherwise make the solvers fail or return incorrect results. Every failure is visualized in an embedded Rhino viewport and traced back to its exact location in the Revit model.

Client
Private Client
Timeline
2022

The Engineering Challenge

The Deck and Wall Solvers depend on a unified shell model: walls, slabs, beams, and columns are extracted from Revit, converted to Rhino Breps via Rhino.Inside.Revit, and merged into a single watertight solid. That merge is the foundation of automated formwork solving - without it, the solvers cannot tell which faces to pack, which edges to ignore, and which surfaces are partially exposed at junctions. But real-world Revit models rarely meet the geometric precision reliable Boolean unions demand: minute defects - 0.5mm gaps between slabs and walls, duplicate overlapping elements, non-manifold edges at complex junctions - are invisible to the naked eye, yet any one of them can make the merge fail.

When the merge fails - or succeeds over defective geometry - the Deck and Wall Solvers either stop with a warning or return an incorrect formwork solution. The client - a global leader in aluminum formwork manufacturing - needed a fail-fast diagnostic tool that could systematically check the model for every known merge-breaking condition and guide users to find and fix each defect before running a solve.

The Solution Architecture

We engineered the Model Error Checker, a WPF diagnostic application that acts as the quality gate for the formwork suite. Built on the same solver infrastructure as the Deck and Wall Solvers, it analyzes the merged shell model itself - the Rhino Breps derived from the Revit elements - checking the geometric quality of the Revit model indirectly, at the exact representation the solvers consume.

The Test Framework Pattern

We structured the tool like a unit test runner.

  • Asynchronous Analysis: When the user clicks "Analyze Shell Model," the tool rebuilds the merged model and runs ten asynchronous tests against it, ranging from simple comparisons (Duplicate Elements) to computationally intensive algorithms (Small Gap Detection). Passing tests show a green check mark; failing tests expand to a list of individual warnings.
  • Ray-Shooting Analysis: To find gaps between walls and slabs, we implemented a ray-shooting algorithm in RhinoCommon. A point grid is generated across each face and rays are fired along the face normal in parallel; any hit within the user-set gap tolerance flags a near-miss junction - the millimeter-scale placement error that breaks Boolean unions.
  • Topology Validation: The tool validates the shell model merge itself, identifying non-manifold edges (where more than two faces meet) and unmergeable tangent edges that would break the formwork solvers.
  • Complete Coverage: The ten checks span the shell model merge, gaps and voids, non-manifold edges, non-orthogonal corners, missing faces, model inaccuracies, duplicate elements, unmergeable edges, short face spans below 5mm, and unsupported curved or double-curved faces - every known condition that can break the merge. Element collection is room-driven, mirroring the solvers: a model without Revit Rooms cannot produce a shell model at all.
  • Pluggable Test Definitions: Each test is defined in external JSON - name, help text, fix suggestion, geometry type - and a factory builds its typed analyzer at runtime. The four edge checks share a single analyzer parameterized by pluggable rules via the Strategy Pattern, the same rule-engine discipline used across the solver suite.

Interactive Diagnostics

A list of errors is useless if the user can't find them. We built a bidirectional navigation system.

  • Visual Isolation: Every warning carries an Isolate button that applies a section box in Revit's 3D view, zooming the user directly to the problem area to investigate and fix the modeling error.
  • Rhino Visualization: The embedded viewport renders the merged shell model and highlights the specific failing edge or face through RhinoCommon's display pipeline, so the user understands exactly which geometry failed, not just which element.

State-Aware Analysis

The tool listens to Revit document change events. If the user modifies, adds, or deletes a building element after an analysis, a notification is posted and the analyze button switches to a red "Reanalyze Shell Model" state. This creates a tight feedback loop: Analyze → Fix → Verify, repeated until every test passes.

The Error Checker runs on the same satellite-service infrastructure as the solvers - Autofac-injected services with an analysis service orchestrating the merge rebuild and test execution - and dual-targets .NET 4.8 and .NET 8.0 from a single source, with a WPF front end built on CommunityToolkit.Mvvm and Material Design 3.

Platforms.
Revit
Rhino.Inside
Core Technology.
C#
.NET
Autofac
Design System.
WPF
Material Design

The Result

The Model Error Checker protects the formwork automation pipeline: modeling defects that once surfaced as failed or incorrect solver output are now caught, visualized, and fixed before either solver runs.

  • Rapid Defect Identification: Even the smallest model inaccuracies are identified immediately after the analysis completes, each reported as an individual warning that describes the failure - from connected-face counts to exact corner angles.
  • Synchronized with Revit: Although the tests run on Rhino Breps, every result stays synchronized with its underlying Revit elements, so each warning can be isolated and corrected directly in the Revit model - rapidly speeding up fixes.
  • Solver Protection: Merge-breaking conditions are caught before solver execution, not during it - protecting the Deck and Wall Solvers from geometry that would make them stop or produce incorrect formwork.
  • A Repeatable Verification Loop: After fixing an issue in Revit, the user re-runs the analysis and re-checks until every test passes - with document change tracking ensuring results are never out of date.

The Error Checker completes the formwork suite we delivered for this client: one infrastructure, one shell model architecture, and one design philosophy shared with the Deck and Wall Solvers - applied here to validating their inputs.

10
Asynchronous Geometric Tests
5mm
Default Gap Tolerance (Adjustable to 25mm)
90°
Corner Orthogonality Enforced
1-Click
Error Isolation in Revit

Low-quality model geometry breaking your automation?

Book a discovery call

We'll start with a short, no-obligation discovery call.