NativeBIM by NativeCAD

NativeBIM / Demos / As-built deviation from a scan

NativeBIM by NativeCAD

IFC showcase: As-built deviation from a scan

A design is changed in known ways, scanned synthetically, rebuilt from the points and compared with the design. Deviations above a stated tolerance become BCF topics.

This model is illustrative. It is built from a script with the dimensions listed under Sources, and it does not represent an existing or as-built building.

3D model

The viewer opens as-built-deviation.glb, the glTF that NativeBIM writes from the IFC file. The IFC file is as-built-deviation.ifc.

What is in the model

ItemCount or value
Walls9
Doors6
Windows9
Slabs2
Roofs1
Spaces6
Storeys2

Requirements

The model does not yet meet every requirement of a building. Each is measured on the model’s geometry by casting rays at it from sample points 0.25 m apart.

RequirementWhat it asksResult
Every enclosed area has a floorRooms are walked on: an area walls close in at a storey level and nothing to stand on is not a room.Met
The interior is closed inWalls, doors and windows close every interior floor on all sides; a gap in the walls is a hole in the building.Not yet: 63 of 3365 samples fail
Rain from above is kept off every floorA roof over every floor, with no gaps between its planes, at its hips and valleys, or where it meets a wall.Met
There is a way inAt least one door in the envelope.Met

Drawing set

Draft drawing set generated from the model: as-built-deviation-drawings.pdf (PDF, 3 sheets).

Elevations are not generated yet, so this drawing set has plans and schedules only. Sections are not generated yet, so this drawing set has plans and schedules only.

As-built deviation from a scan

The design was perturbed with five known changes, scanned synthetically (255513 points, seed 1, 18 furniture boxes), rebuilt from the points alone and compared with the design at a tolerance of 0.05 m. Changes above the tolerance: 4, detected: 4. The change under the tolerance was not flagged. Elements without a known change that were flagged (false alarms): 2. The 6 deviations became 6 BCF topics with 6 viewpoints. Elements flagged on the unchanged design, the false-alarm floor of the method: 2. All numbers on this page are computed by the build.

Plan of the office suite with walls, doors and windows coloured green within tolerance and red over tolerance, the five known changes ringed and numbered
Deviation map. Each wall, door and window of the design is coloured by its measured deviation from the reconstruction; the five known changes are ringed. Hover an element for its deviation.
Plan view of the synthetic point cloud of the as-built building, with its walls, the furniture boxes and the scanner stations
The synthetic scan of the as-built building: 255513 points from 15 stations and 18 furniture boxes. A slice between 0.4 m and 2.2 m, as a plan.
The five known changes and what the comparison reported at a tolerance of 0.05 m. Deviation is the largest measure of the element, in metres. The last column is what owner/asbuilt.reconcile alone says of the same element.
NoKnown changeElementExpectedMeasured deviation (m)Resultowner/asbuilt.reconcile
1Wall moved 0.30 m eastOffice partition 2moved0.3detectedremoved
2Door not built, the wall is closedOffice 2 doormissingmissingdetectedremoved
3Window built 2.10 m wide instead of 1.50 mMeeting room window 1resized0.601detectedresized
4Window shifted 0.10 m along its wallOffice 3 windowmoved0.102detectedmoved
5Wall moved 0.03 m east, under the toleranceOffice partition 1not flagged0.03not flagged (under tolerance)resized
False alarms: elements with no known change that the comparison flagged in the run with the five changes (2)
ClassElementReported asDeviation (m)Measures (m)
IfcDoorEntrancemoved and resized0.442position 0.402, width 0.442, height -0.012, sill 0.012
IfcDoorOffice 1 doormissing from the reconstruction--
The floor of the method: elements flagged when the unchanged design is scanned and compared (2)
ClassElementReported asDeviation (m)Measures (m)
IfcDoorEntrancemoved and resized0.442position 0.402, width 0.442, height -0.012, sill 0.012
IfcDoorOffice 1 doormissing from the reconstruction--
Both runs: fidelity of the reconstruction against the design (3D mode, all classes), the deviations over tolerance, and what was written to BCF
RunPointsDesign elementsRebuilt elementsMatchedPrecision (percent)Recall (percent)F1 (percent)Voxel IoU (percent)Deviations over toleranceBCF topicsBCF viewpoints
No changes25581833292910087.993.691.2222
Five known changes25551333282796.481.888.588.8666

The design shown on this page is furnished (office furniture). The scan chain runs on its shell, the same building without the loose furniture: the as-built building is the shell with the five changes, the reconstruction is compared with the shell, and the synthetic scan adds its own furniture-like clutter boxes.

Method. The as-built building is the design built again with the five changes listed in the table of known changes (showcases/as-built-deviation/building.js). A synthetic laser scan is cast on it (seed 1, 1 degree ray step, 5 mm range noise, occlusion, missing patches, 18 furniture boxes), and an IFC is rebuilt from the points alone with the two settings that leave furniture out (levels under 2.5 m2 and wall faces under 2.4 m high are not kept). That reconstruction is compared with the design, not with the as-built building.

Deviation measures. Walls and openings are paired by position in plan, not by id. A wall is measured across its axis, its position and its thickness; its ends and its height are not compared. An opening is measured along its wall, in width, in height and in sill level. The tolerance is 0.05 m on every measure. Doors, windows and walls are compared; slabs, the roof and rooms are scored by the fidelity harness but not turned into topics.

Why the pairing is not the fidelity harness pairing. Fidelity pairs by 3D overlap of at least 0.5. The wall moved by 0.30 m is 0.15 m thick, so it no longer touches its design position: the harness reports walls missing: 1 (Office partition 2) and walls extra: 1, and the deviation measures here rest on a pairing by position. The harness remains the whole-model score in the last table.

owner/asbuilt.reconcile ran on the same two models with its types ignored (the option ignoreType, because the reconstruction makes up its own types), a minimum match score of 0.3 and the tolerance 0.05 m. It matches by signature and was built for two models from authoring tools, so on a scan it counts differences in wall length and height as resizes and holds rooms as ambiguous. Its counts for the run with changes: resized 9, moved 1, reshaped 10, property-only 1, added 4, removed 27, ambiguous 2. The topics come from the deviations of this page, written with its toBcf, and not from its own list.

Systematic bias. The reconstructed walls are on average 0.235 m lower than the design walls, and their ends differ at the corners. Both are why heights and lengths of walls are not compared: every wall would be flagged on a bias of the method.

Spread of the method on the unchanged design (compared elements: 23): the deviation is 0.009 m at the median, 0.018 m at the 95th percentile and 0.442 m at the largest. The change of 0.03 m is under the tolerance on purpose: a tolerance below the spread of the method would flag the noise.

The numbers on this page are computed by the build from the seed and the settings above, not typed in. Reproduce them with: node tools/showcase/build.js as-built-deviation. The scan and the rebuild alone: node tools/scan/scan.js roundtrip as-built-deviation --seed 1 --clutter.

The BCF files hold one topic per deviation, each with a viewpoint (camera at the element, the element selected by IfcGuid): moved, resized and extra elements refer to the reconstruction, missing ones to the design. A BCF viewer needs the matching IFC to show them, so both IFC files are below.

Real scans are noisier than the synthetic one, clutter hides walls, and a building may not match its own survey. This is a method check on a synthetic scan, not a statement about a real site.

Sources

Where each dimension comes from. Anything marked as chosen for the sample is an assumption, not a measurement.

Built 2026-10-28 with node tools/showcase/build.js as-built-deviation. Re-running the command gives the same bytes.

Notices

NativeBIM is licensed software. It does not provide design, engineering or other professional services. Outputs are drafts for review by the licensed professional of record.

Sheets are marked NOT FOR CONSTRUCTION by default.

Areas are computed by NativeBIM, not a certified BOMA measurement.

IFC and Industry Foundation Classes are marks of buildingSMART International.

NativeBIM is not affiliated with, endorsed by or sponsored by the companies and organizations named here. Product names and marks belong to their owners.

NativeBIM is provided as is, without warranty of any kind. To the extent the law allows, FeatureBoard Labs Incorporated is not liable for indirect, incidental or consequential damages, lost profits or lost data, and its total liability is limited to the license fees paid in the 12 months before the claim. Read the license.