Modelling guideline: as-built Revit models (scan2revit)

These are the rules a model made with scan2revit follows, and the ones it should follow where the code does not yet (marked open). The workflow (running the pipeline, mapping types, sending the calls) is in skills/scan-to-revit/SKILL.md; this file says what the result must be. G-0.1 When a project has its own BIM execution plan (BAP, SIA 2051) or the client's modelling rules, those come first; this guideline fills what they leave open.

G-0.2 Data first, then the modelling decision. Before anything is modelled, the available data is analysed (input reports of the scans, IFC and plans; drawings such as sections and build-up legends; documentation), and the level of detail per element class is decided from it and recorded (the project manager at gate 1, in status.md: "Modelling decisions"). The simple form is the default: a slab is one element of its full thickness (finished floor to soffit), a wall one element face to face. A slab is split into the structural slab and its floor build-up, or a wall into its layers, only where sections, build-up legends or documentation give that build-up (accepted facts, documentation/drawings-and-scans.md), never because a template or a habit offers it. (User, 25.10.2026.)

Every rule has a stable id (G-1.1, G-2.1, ...: section and number, in bold before the rule). Checks, findings and rule proposals name the rule by its id; which check tests which rule: section 14. A rule changes only when the user approved the change (proposals: documentation/agent-team.md); a new rule takes the next free number of its section, a removed rule's id is not used again.

Basis: the BIMForum Level of Development specification (LOD 200: generic elements at the right size and place), the USIBD Level of Accuracy (LOA: measured and represented accuracy kept apart), SIA 2051 / KBOB (the level of detail is set per project in the BAP), the SBB rules for building models (an as-built model holds existing elements only), the Autodesk Revit documentation (constraints, room bounding, location line, shared coordinates). No published Swiss modelling guideline for as-built models from scans was found; sources at the end.

1. Walls and slabs are generic, no construction information inside

2. Measured or assumed: say which

3. Existing elements only

4. Levels and storeys

5. Walls

6. Floors (slabs) and voids

7. Doors and windows

8. Stairs, slab openings, ramps

9. Rooms

Not modelled: what a plan carries that is not building

G-9.4 Left out of the model (machine list: scan2revit/plans/filters.json; keep both in step):

DrawnHow it is recognisedWhy left out
Built-in units, cupboards, kitchen units, shaftsa rectangle with both diagonals (crossed box), up to 3 m, not on a wallfurniture and fit-out, not structure; shafts: open (slab openings)
WC, washbasin, sink, hob, drain, washing machinefull circles and closed arcs up to 0.45 m radiussanitary and kitchen equipment
Furniture (tables, chairs, beds, sofas)line work inside a room that pairs into no wall and no openingnot building
Text masks behind stamps and labelswhite filled rectangles not on a walldrawing aid
Dimensions, levels (+3.40), areas (m2), symbol labels (EL, Dachfenster)text patterns (filters.json "texts")annotation, not a room name
Frame, title block, view numberslong lines, the box with PLAN-NR / DATUM / scalesheet, not drawing
Small symbols in wall colour outside the building (ticks, markers, a chimney ring)touching wall pieces together under 1.5 m whose middle lies outside the building outlinenot walls; listed in the QA

G-9.5 A crossed box on a wall is a window, never a cupboard. A white box on a wall is a window symbol. A gap with window lines and a swing at one end is a door beside a window (a balcony door): both are placed.

10. Coordinates and georeferencing

11. Naming

RuleElementName
G-11.1Levelstorey name (EG, 1OG, UG2) or Level n; galleries Gallery n
G-11.2Wall typescan2revit <t> mm (generic, one layer)
G-11.3Floor typescan2revit floor <t> mm (generic, one layer)
G-11.4Door / window typescan2revit <w> x <h> (copy of the nearest family type, size set)
G-11.5Roomname from the plan or IFC, else Room <storey>.<n>; number <storey><nn>
G-11.6Element ids in plan.jsonwalls W<storey>-<nn>, curved walls A.., openings O.., stairs S.., slab openings V..

12. Checks a model must pass (tools/revit_e2e.py)

G-12.1 Levels at the planned elevations; walls (straight and curved) per level and their thicknesses; walls and floors generic; doors and windows hosted and within 50 mm of their size; window sills; floors per level and their thicknesses; slab openings cut; stairs (risers, tread, levels); rooms bounded and their areas within 3 %; door swings to the scanned side; Revit warnings and the failures answered without a transaction rolled back. Each check names the rule it tests by its id; the whole list, and the rules no check covers yet: section 14.

13. Working rules

14. Rule -> check

The checks of tools/revit_e2e.py (also run by tools/revit_project.py phase check) by rule; each check's name starts with the rule's id. "Not checked": no check on the model read back from Revit yet (some are tested without Revit in tests/, or belong to the input side).

RuleCheck
G-0.1not checked (the project's BAP)
G-0.2not checked (gate 1: the modelling decisions in status.md)
G-1.1walls and floors generic (one layer, no material)
G-1.2scan2revit wall and floor types not edited into a build-up (also the unused ones)
G-1.3not checked (door and window families with fire ratings in the template: open)
G-1.4not checked in Revit (no passage family for a door: unit test)
G-2.1not checked (the flags in plan.json; in Revit: G-2.3)
G-2.2not checked (accuracy in the report)
G-2.3measured / assumed on walls, floors, doors and windows
G-3.1not checked
G-3.2every element in one phase, the existing one
G-3.3not checked (QA of the input)
G-4.1not checked (level names)
G-4.2every element on a planned level (walls, floors, doors, windows, rooms)
G-4.3levels at the planned elevations
G-4.4not checked (input side: sections)
G-5.1per level: walls (straight, curved); wall thicknesses; curved wall radius
G-5.2not checked (wall base and top)
G-5.3not checked (overlaps show in the Revit warnings)
G-5.4not checked (room bounding)
G-5.5not checked (input side)
G-5.6not checked
G-6.1per level: floors; floor thicknesses
G-6.2slab openings cut
G-6.3not checked (input side: facade)
G-6.4not checked
G-7.1per level: doors and windows hosted; in curved walls
G-7.2per level: doors and windows within 50 mm of their size; window sills
G-7.3door swings: facing points to the scanned swing side
G-8.1stair: risers, base and top level
G-8.2not checked
G-9.1per level: room areas within 3 %
G-9.2per level: rooms bounded
G-9.3per level: room departments (units)
G-9.6per level: every room tagged in the floor plans
G-9.4not checked (input side: plans filters)
G-9.5not checked (input side: plans sheet)
G-10.1not checked (survey point and true north are set by hand)
G-10.2not checked
G-11.1not checked (level names)
G-11.2wall types named by their thickness
G-11.3floor types named by their thickness
G-11.4not checked (a loaded type within 50 mm keeps its own name)
G-11.5not checked (room names and numbers)
G-11.6not checked (plan.json)
G-12.1every check of this table
G-13.1not checked in Revit (every stage deletes only its own elements: unit test)
G-13.2every stage committed without error; Revit failures and dialogs handled (no error)
G-13.3not checked
G-13.4not checked

Two checks name no rule: "every planned element was built" and "Revit warnings" (reported, never failed).

Sources