Skip to content
Structura v0.6.0 · the deliverable

What is in the file

One IFC file, named schema, named model view definition. Below is what a BIM manager opens it to find: the spatial spine, the entity and the geometry carried for each of the 8 element classes, the data attached to every element, and how an element keeps its identity between versions. The counts are read from the sample package on this page, not asserted.

IFC4 Reference View [ReferenceView_V1.2] 8 element classes Millimetres
Quoted from the sample file

Schema and view definition

larch-annex.ifc · STEP header
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [ReferenceView_V1.2]'),'2;1');
FILE_NAME('Larch Annex','2026-01-01T00:00:00',('Structura'),('Structura'),'structura-pipeline','structura-pipeline','none');
FILE_SCHEMA(('IFC4'));
ENDSEC;

Read from the sample you can download on this page. The same model exported twice is the same file, byte for byte — so a re-issue diffs cleanly instead of looking like a new building.

The view definition is the part most conversions leave blank.

Structura declares one and holds to it: geometry is explicit, every element is a real IFC entity of its own class, and nothing depends on a proprietary extension to be read. A receiving tool can validate the file against the named view rather than against whatever the exporter happened to emit.

Schema
IFC4
Length unit
MILLI · METRE
Area · volume unit
SQUARE_METRE · CUBIC_METRE
Spatial structure

Project, site, building, storey

  1. IfcProject
  2. └ IfcSite
  3. └ IfcBuilding
  4. └ IfcBuildingStorey
  5. └ elements
  6. └ IfcSpace

Elements hang off their storey with IfcRelContainedInSpatialStructure . Rooms cannot: an IfcSpace is itself a spatial element, so it extends the spine through IfcRelAggregates instead.

Storeys in the sample building, read from its elevation sheets

Larch Annex
Storey Elevation Height
L00 0 mm 4200 mm
L01 4450 mm 3400 mm
L02 8100 mm 3400 mm
L03 11750 mm 3400 mm
L04 15400 mm 3400 mm
L05 19050 mm 3000 mm

6 storeys reconstructed from 8 sheets, with 75 recorded assumptions travelling beside the model.

One row per class

Entity, geometry, count

Each element class, its predefined type, the kind of geometry the file carries for it and what that means for a receiving tool, and how many instances the sample contains.
Class PredefinedType Geometry · what a receiving tool gets In the sample
IfcWall SOLIDWALL Solid A wall you can section, measure and clash, with every door and window it hosts cut out of it as a real opening rather than painted on. 72
IfcDoor DOOR · SINGLE_SWING_LEFT Solid A door panel sitting in its opening and linked to the wall that holds it, so a schedule can count openings wall by wall. 55
IfcWindow WINDOW · SINGLE_PANEL Solid The same, at its measured sill height — the number a facade or daylight check reads first. 48
IfcColumn COLUMN Solid A column of the section the plan shows, standing the full storey height. Geometry and position only: nothing structural is implied. 24
IfcSlab FLOOR or ROOF Solid A floor or roof plate at its storey level, with its thickness — enough for an area take-off and a section, not a build-up. 7
IfcStair STRAIGHT_RUN_STAIR Solid A flight that lands on the storey above, so vertical circulation is present and navigable. No treads, landings or balustrade. 5
IfcRoof GABLE_ROOF Tessellated shell A faceted surface rather than a closed volume: it carries the shape of the pitched roof, and a tool expecting a watertight solid should treat it as a surface. none here
IfcSpace SPACE · CompositionType ELEMENT Solid A room volume held on its storey the way the standard says spaces are held, so a space schedule or an FM import finds it where it expects to. 54

Counts are instances of that entity in the sample you can download, which is a flat-roofed building: it carries no IfcRoof . Pitched roofs arrive on the 3D route — the class is in the file, just not in this building.

What else the file carries

  • IfcProject 1

    one, with the unit assignment

  • IfcSite 1

    one

  • IfcBuilding 1

    one

  • IfcBuildingStorey 6

    one per storey, Elevation from the elevation sheets

  • IfcOpeningElement 103

    one per hosted door and window

  • IfcPropertySet 265

    one property set per element

  • IfcElementQuantity 54

    one Qto_SpaceBaseQuantities per room

  • IfcRelVoidsElement 103

    opening cut into its host wall

  • IfcRelFillsElement 103

    door or window filling its opening

  • IfcRelAggregates 9

    site, building and the rooms on each storey

  • IfcOwnerHistory none

    omitted deliberately: it would stamp a clock into a file that has to be reproducible

Property sets

The data attached to every element

On every element one property set

Every element carries a property set with its Structura identifier, its class, and the full record of what was measured for it — dimensions, placement, the wall an opening sits in, and the sheet it was read from. It travels inside the file, so an element selected in your viewer answers those questions without anything else being sent with it.

It is a Structura property set, not one of the buildingSMART standard ones. That matters if your systems address the standard sets by name — see what is not in the file yet.

Qto_SpaceBaseQuantities on every room

Rooms additionally carry the standard base quantity set, which an FM or space-management system reads by name without a mapping file.

Height IfcQuantityLength
room height in millimetres
GrossFloorArea IfcQuantityArea
boundary area in square metres
NetFloorArea IfcQuantityArea
the same polygon — omitted entirely when an interior hole was discarded, rather than overstating the room
GrossPerimeter IfcQuantityLength
boundary perimeter in millimetres
GrossVolume IfcQuantityVolume
area × height in cubic metres
Honest by omission
A room whose boundary swallowed an interior island gets no NetFloorArea at all. Repeating the gross figure there would overstate the room in a space schedule by exactly that island, so the quantity is left out and the reason is recorded in the assumptions register shipped beside the file.
Identity

An element keeps its identifier

An element nobody edited keeps the same GlobalId every time the model is exported. An element that genuinely moved gets a new one. That is the difference between a model you can re-issue and a model that breaks every downstream link each time it is regenerated.

  • Correcting a dimension The identifier is unchanged. A wall whose thickness you fixed is the same wall.
  • Renaming or renumbering a room Unchanged. A label is not a location, so a room that gained a name is not a new room.
  • Moving an element New identifier — for that element, and nothing else in the file.
  • Reclassifying an element New identifier. A window corrected to a door is a different IFC entity type, and pretending otherwise would be the lie.

Nothing about this depends on the order elements happened to be written in, or on the machine that wrote them. Convert the same sheets twice and you get the same file, identifiers included — which is what makes a re-issue a difference your model server can read rather than a new building.

Check it yourself
265 identifiers for 265 elements
In the sample below, no two elements share one — and the export refuses to write a file where they would.
Export twice, compare
On a trial, re-export a model you have not touched and diff the identifiers against the file you already hold. That is the demonstration, on your own building.
Sample package

Open the real output

Larch Annex, converted and exported by the product — not a mock-up. Every file below is the output of a real conversion of that building, and the checksum beside each one lets you confirm your download arrived intact. The IFC and the schedule are what a client receives; there is nothing else in the envelope.

  • larch-annex.ifc Download

    The IFC4 Reference View model

    sha256 9a2611d9bdf5e5c7…
  • schedule.xlsx Download

    Element schedule, Excel workbook

    sha256 0f1c77e8243ee937…
  • schedule.csv Download

    Element schedule, comma-separated

    sha256 66afec4349db8ea9…
Stated plainly

Not yet in the file

Owner-side systems ask for four things this file does not carry yet. They are named here rather than discovered during a handover. Each is roadmap: no date, no commitment, and nothing on this page counts it as shipped.

  • IFC type objects

    Roadmap

    Every element is authored as an occurrence. There is no type layer, so a receiving tool cannot group occurrences by a shared type definition or attach type-level properties.

    IfcWallType · IfcDoorType · IfcTypeObject

  • Standard Pset_*Common property sets

    Roadmap

    The model data travels in one Structura property set rather than the standard common sets, so a mapping file in an asset-management system that addresses standard fields will not find them.

    Pset_WallCommon and family

  • Classification references

    Roadmap

    No classification system is attached to any element, so a specification that requires a classified model has to add it downstream.

    IfcClassification · IfcClassificationReference

  • COBie handover

    Roadmap

    Storeys and rooms exist in the model, but there is no COBie export and no type or contact layer to build one from.

    Facility and Floor exist; Space, Type and Contact do not