НОМТ tower · floor 8 · measurement audit · 2026-10-10

Is the 3D model's geometry really right?

Every dimension printed on the floor-8 plan (PDF sheet p10) was read from the vector file and measured again in a copy of the model (the building file and all eight apartment FBX files), cut through at 1.2 m above the floor. The working files were not touched.

Model check and walkthrough · Apartment types A–H

Update 2026-10-11: fix applied

The fix is now in the working model. The walls are snapped to the drawing's own wall lines and the corner pillars patched. Each window is moved onto the drawing's jamb positions. The model and all eight apartment files were rebuilt, and this audit was re-run on a fresh copy.

254 / 254plan dimensions now within 10 mm (was 92 % within 15 mm). Median +0.6 mm, p95 2.9 mm, worst 9.5 mm.
0.0 mm/mwindow drift along the tower: windows now sit on their drawn jambs (was −6 → −17 mm).
8 / 8apartment files pass their checks again; walls vs the PDF linework p90 1.0–2.0 cm (was up to 2.2 cm).
Kitchensfound on the way: 7 of 8 worktops had a slanted front edge, from DWG lines chained across separate entities. They are rebuilt from per-entity linework and are now straight.

Still open: one uniform 0.03 % size offset, about 13 mm over the 41 m tower and under 2 mm across any room. It is shared with the website's plan data, and removing it means regenerating those plans as well. Also open: a 1.5 mm difference on one apartment-file dimension, and the DWG's own wall coverage (it holds only some walls as wall objects). Backups of the pre-fix files: D:\NOMT_backup_pre_fix_2026-10-11.

Answer (audit of 2026-10-10, before the fix)

Close, but not exact. The layout, openings and rooms are right. Wall faces sit a few millimetres to about 2 cm off the drawing, from three systematic causes found below. A fix has been built and tested; with it the plan dimensions match to about 3 mm.

92 %of 235 room / wall dimensions within 15 mm (median −3 mm, worst 23 mm). The usual "LOA30" grade asks for 95 %.
−6 → −17 mmwindow positions drift against their wall openings from the north to the south end of the tower (scale slip).
+6 to +9 mmwalls are drawn too thick: 100 / 120 / 200 / 240 mm walls come out ≈ 106 / 129 / 208 / 248 mm.
187 / 187dimensions measured in the apartment FBX files equal the building model (186 exactly, 1 within 1.5 mm): the export adds no error.

What was checked

StepCountResult
Dimension strings read from p10 (number + its two end ticks)363all found
The drawing against itself: drawn length vs printed number3630 differ by more than 5 mm (at the true scale, below)
Both ends on a wall face or grid axis, so they can be measured in the model254235 inside the floor, 19 facade opening chains
An end on a fixture, furniture, slope or label (not geometry)82not scored
No matching model face found12listed in audit/dimensions.json
Known drawing conflict1Flat G balcony: chain says 1980, DWG and schedule say 2000. Modelled 2000 (logged earlier).

Three causes, measured

1. Walls traced from a picture, not the lines

The wall shapes were traced from a rendered image of the PDF at 8.8 mm per pixel, then simplified with a 2-pixel tolerance. Any face can sit up to ~18 mm off and lean slightly. A 15 mm "stroke" correction was then taken off each side, but about 19 mm was needed, so walls are 6–9 mm too thick and rooms 3–12 mm too small. Median wall-thickness error against the standard sizes: 8.0 mm.

2. Drawing scale off by 0.031 %

The pipeline uses 52.92 mm per PDF point. Grid axes 4→10 measure 756.092 pt for 40 000 mm on both p10 and p11, which gives 52.9036. Walls were placed with the first number, windows from the dimension chains in true millimetres. Measured on 37 window jambs, the windows sit 6 mm (north end) to 17 mm (south end) from their drawn jambs, a steady 0.25 mm per metre with only 1.2 mm scatter.

3. Hollow columns

Hatched columns and casings traced as a 35 mm outline ring around an empty middle. They look solid in renders (they are capped top and bottom), but the geometry is hollow.

The fix, tested on the copy

tools/snap_walls.py moves every traced wall face onto the PDF's own vector wall line (Revit draws each cut wall as a 0.43–0.51 pt outline centred on the real face). It fills the hollow columns, and restores anything the snap would lose. Scored the same way as the current model:

MeasureCurrent modelWith snapped walls
Room / wall dimensions within 10 mm81 %97.9 %
… within 15 mm (LOA30 asks 95 %)92 %97.9 %
95th-percentile error17.7 mm3.2 mm
Median error−3.2 mm+0.6 mm
Facade opening chains within 1 mm—23 / 23
Wall thickness, median error vs standard size8.0 mm0.1 mm

Remaining: two pilaster faces (one each in flats B and F, mirror images) still come out 50 mm off in the prototype. They need a manual fix before rebuilding. The outer cladding face is built separately in the model, so it is not affected. The prototype is 2D: walls are vertical, so their cut at 1.2 m is the plan shape. The same 2D test on the current walls reproduces the 3D model's numbers (median −3.3 vs −3.2 mm), so the comparison is fair.

Applying it means: set the scale to 52.9036, use the snapped walls, rebuild the model and the eight apartment files, and re-run this audit. Changes of 3–20 mm do not show in the renders, so the existing 4K renders and the walkthrough can stay.

Deviation maps

within 10 mm10–15 mmover 15 mmknown drawing conflictnot scored
Floor 8 plan with every dimension coloured by how far the current 3D model is from it
Current model. Numbers are model − drawing in mm. The red bars along the bottom are the facade window chain.
The same plan scored against the snapped walls: almost all green
With the snapped walls (prototype).

Flagged items checked by eye

How it was done, and why this way

  1. The model was duplicated first (D:\NOMT_audit_copy_2026-10-10, MD5-checked). Everything was measured on the copy.
  2. Ground truth = the architect's printed dimensions, not the model's own data: 363 dimension strings and their tick marks read from the vector PDF. The drawing was checked against itself first.
  3. Each scored dimension was measured again in the model by cutting the walls at 1.2 m, in the building file and in each apartment FBX. Result: deviation per dimension, percentage within tolerance, and a colour deviation map.
  4. Graded against the USIBD Level of Accuracy bands (LOA30 = 5–15 mm at 95 % confidence). The worst flags were checked by eye on the drawing.

Sources: USIBD LOA Specification Guide C120 v2 · USIBD LOA explained · Scan-to-BIM output validation: standardized geometric quality assessment · Scan-to-BIM QC validation techniques · Scan-to-BIM quality control · Verifying 3D models with deviation maps. These are written for scan-to-BIM. Here the reference is the drawing set rather than a point cloud, so "measured" means the drawing's printed dimensions.

Tools: tools/audit_dimensions.py (Blender cut + scoring), tools/snap_walls.py (fix prototype). Full results: audit/dimensions.json, variants.json.