# Brickbox IFC mapping

Kit 1.0.0, 2026-09-07. Generated from the Brickbox slot registry.

This is the mapping to enter once in the ArchiCAD IFC translator, so that the
properties imported from `Brickbox-Properties-AC29.xml` leave the model as IFC
property sets the Brickbox take-off can read.

> **Why a document and not a translator file.** Custom property sets are created in
> the translator dialog, not in an importable schema file; the exported translator is
> undocumented and version-sensitive (`docs/plaan/03-UURING-archicad.md` §1.1). A
> generated translator file would be a guess about a binary contract, so the kit ships
> the mapping instead. **Not yet walked through in ArchiCAD 29** — see the checklist at
> the end.

## 1. Set up the translator

1. `File → Interoperability → IFC → IFC Translators…`
2. Duplicate the export translator you use (do not edit the built-in one) and name the
   copy `Brickbox IFC4` (repeat later for `Brickbox IFC2x3`).
3. `Properties → Map IFC Properties for Export` — this is where the table below is entered.
4. In the same translator, switch **base quantities** on: `Geometry Conversion → …`
   `Export base quantities`. They are off by default in both ArchiCAD and Revit, and the
   Brickbox take-off falls back to derived geometry (and marks it as derived) without them.

[Screenshot: IFC Translators dialog, Property Mapping page]

## 2. Mapping — IFC4 / IFC 4.3

Map these onto **both the type and the instance** wherever ArchiCAD offers the choice.
Type → instance inheritance is where identifiers are most often lost, and every viewer
shows instance properties (`04-UURING-ifc-kogused.md` §5).

> **Apply the Brickbox classification. This is not optional.** A property is available on an
> element only through the classification item the property XML created (`IfcMaterial`,
> `IfcWindow`, …). Leave it unapplied and every Brickbox property is offered on every element,
> which is how a window property gets filled in on a wall layer and exported as if the
> manufacturer had declared it. Brickbox does not guess values, and neither should the model.
>
> Names in `Pset_BrickboxDoP` carry the category prefix on the IFC side too (`MwDoPNumber`,
> `WinDoPNumber`), so a slip there cannot silently overwrite the other category's value in the
> exported file. The standard buildingSMART sets keep their standard names — those mean one
> thing across every tool and are not ours to rename — so for them the classification is the
> only thing keeping two categories apart.

| ArchiCAD property (group `Brickbox`) | IFC property set (or entity) | IFC property | Applies to | `slot_key` |
|---|---|---|---|---|
| `BrickboxId` | `Pset_Brickbox` | `BrickboxId` | IfcMaterial, IfcWindow | `identity` |
| `BrickboxURI` | `Pset_Brickbox` | `BrickboxURI` | IfcMaterial, IfcWindow | `identity` |
| `GTIN` | `Pset_Brickbox` | `GTIN` | IfcMaterial, IfcWindow | `identity` |
| `GTIN` | `Pset_ManufacturerTypeInformation` | `GlobalTradeItemNumber` | IfcMaterial, IfcWindow | `identity` |
| `GS1DigitalLink` | `Pset_Brickbox` | `GS1DigitalLink` | IfcMaterial, IfcWindow | `identity` |
| `BrickboxRevision` | `Pset_Brickbox` | `BrickboxRevision` | IfcMaterial, IfcWindow | `identity` |
| `FetchedAt` | `Pset_Brickbox` | `FetchedAt` | IfcMaterial, IfcWindow | `identity` |
| `Manufacturer` | `Pset_ManufacturerTypeInformation` | `Manufacturer` | IfcMaterial, IfcWindow | `identity` |
| `ArticleNumber` | `Pset_ManufacturerTypeInformation` | `ArticleNumber` | IfcMaterial, IfcWindow | `identity` |
| `ThermalConductivity` | `Pset_MaterialThermal` | `ThermalConductivity` | IfcMaterial | `mw.lambda_d` |
| `ThermalResistanceRd` | `Pset_BrickboxDoP` | `ThermalResistanceRd` | IfcMaterial | `mw.thermal_resistance_rd` |
| `ReactionToFireClass` | `Pset_BrickboxDoP` | `ReactionToFireClass` | IfcMaterial | `mw.reaction_to_fire` |
| `ThicknessNominal` | `Pset_BrickboxDoP` | `ThicknessNominal` | IfcMaterial | `mw.thickness_nominal` |
| `DesignationCode` | `Pset_BrickboxDoP` | `DesignationCode` | IfcMaterial | `mw.designation_code` |
| `MwDoPNumber` | `Pset_BrickboxDoP` | `MwDoPNumber` | IfcMaterial | `mw.dop_number` |
| `MwAvcpSystem` | `Pset_BrickboxDoP` | `MwAvcpSystem` | IfcMaterial | `mw.avcp_system` |
| `NotifiedBody` | `Pset_BrickboxDoP` | `NotifiedBody` | IfcMaterial | `mw.notified_body` |
| `MassDensity` | `Pset_MaterialCommon` | `MassDensity` | IfcMaterial | `mw.density` |
| `SpecificHeatCapacity` | `Pset_MaterialThermal` | `SpecificHeatCapacity` | IfcMaterial | `mw.specific_heat` |
| `VaporPermeability` | `Pset_MaterialHygroscopic` | `VaporPermeability` | IfcMaterial | `mw.vapour_resistance_mu` |
| `CompressiveStressCs10` | `Pset_BrickboxDoP` | `CompressiveStressCs10` | IfcMaterial | `mw.compressive_stress_cs10` |
| `TensileStrengthTr` | `Pset_BrickboxDoP` | `TensileStrengthTr` | IfcMaterial | `mw.tensile_strength_tr` |
| `WaterAbsorptionWs` | `Pset_BrickboxDoP` | `WaterAbsorptionWs` | IfcMaterial | `mw.water_absorption_ws` |
| `WaterAbsorptionWlp` | `Pset_BrickboxDoP` | `WaterAbsorptionWlp` | IfcMaterial | `mw.water_absorption_wlp` |
| `AirflowResistivity` | `Pset_BrickboxDoP` | `AirflowResistivity` | IfcMaterial | `mw.airflow_resistivity` |
| `DynamicStiffness` | `Pset_BrickboxDoP` | `DynamicStiffness` | IfcMaterial | `mw.dynamic_stiffness` |
| `DimensionalStabilityDs` | `Pset_BrickboxDoP` | `DimensionalStabilityDs` | IfcMaterial | `mw.dimensional_stability_ds` |
| `MwEpdReference` | `Pset_BrickboxDoP` | `MwEpdReference` | IfcMaterial | `mw.epd_reference` |
| `MeltingPoint` | `Pset_BrickboxDoP` | `MeltingPoint` | IfcMaterial | `mw.melting_point` |
| `ThermalTransmittance` | `Pset_WindowCommon` | `ThermalTransmittance` | IfcWindow | `win.u_value_w` |
| `AirPermeabilityClass` | `Pset_BrickboxDoP` | `AirPermeabilityClass` | IfcWindow | `win.air_permeability_class` |
| `WatertightnessClass` | `Pset_BrickboxDoP` | `WatertightnessClass` | IfcWindow | `win.watertightness_class` |
| `WindLoadClass` | `Pset_BrickboxDoP` | `WindLoadClass` | IfcWindow | `win.wind_load_class` |
| `AcousticRating` | `Pset_WindowCommon` | `AcousticRating` | IfcWindow | `win.acoustic_rw` |
| `WinDoPNumber` | `Pset_BrickboxDoP` | `WinDoPNumber` | IfcWindow | `win.dop_number` |
| `WinAvcpSystem` | `Pset_BrickboxDoP` | `WinAvcpSystem` | IfcWindow | `win.avcp_system` |
| `FrameMaterial` | `Pset_BrickboxDoP` | `FrameMaterial` | IfcWindow | `win.frame_material` |
| `SolarHeatGainTransmittance` | `Pset_DoorWindowGlazingType` | `SolarHeatGainTransmittance` | IfcWindow | `win.g_value` |
| `VisibleLightTransmittance` | `Pset_DoorWindowGlazingType` | `VisibleLightTransmittance` | IfcWindow | `win.light_transmittance` |
| `UValueG` | `Pset_DoorWindowGlazingType` | `UValueG` | IfcWindow | `win.u_value_g` |
| `UValueF` | `Pset_BrickboxDoP` | `UValueF` | IfcWindow | `win.u_value_f` |
| `GlazingStructure` | `Pset_BrickboxDoP` | `GlazingStructure` | IfcWindow | `win.glazing_structure` |
| `PartitioningType` | `IfcWindowType` | `PartitioningType` | IfcWindow | `win.operation_type` |
| `SecurityRating` | `Pset_WindowCommon` | `SecurityRating` | IfcWindow | `win.burglary_resistance` |
| `LoadBearingSafety` | `Pset_BrickboxDoP` | `LoadBearingSafety` | IfcWindow | `win.load_bearing_safety` |
| `DangerousSubstances` | `Pset_BrickboxDoP` | `DangerousSubstances` | IfcWindow | `win.dangerous_substances` |
| `WinEpdReference` | `Pset_BrickboxDoP` | `WinEpdReference` | IfcWindow | `win.epd_reference` |
| `MaxDimensions` | `Pset_BrickboxDoP` | `MaxDimensions` | IfcWindow | `win.max_dimensions` |
| `FireRating` | `Pset_WindowCommon` | `FireRating` | IfcWindow | `win.fire_rating` |

- IfcWindowType.PartitioningType is an IFC entity attribute, not a property set: set it on the element (or its type) in ArchiCAD rather than in the property mapping.

## 3. Mapping — IFC2x3

Same properties, two differences, both forced by the older schema:

| ArchiCAD property (group `Brickbox`) | IFC property set (or entity) | IFC property | Applies to | `slot_key` |
|---|---|---|---|---|
| `BrickboxId` | `Pset_Brickbox` | `BrickboxId` | IfcMaterial, IfcWindow | `identity` |
| `BrickboxURI` | `Pset_Brickbox` | `BrickboxURI` | IfcMaterial, IfcWindow | `identity` |
| `GTIN` | `Pset_Brickbox` | `GTIN` | IfcMaterial, IfcWindow | `identity` |
| `GS1DigitalLink` | `Pset_Brickbox` | `GS1DigitalLink` | IfcMaterial, IfcWindow | `identity` |
| `BrickboxRevision` | `Pset_Brickbox` | `BrickboxRevision` | IfcMaterial, IfcWindow | `identity` |
| `FetchedAt` | `Pset_Brickbox` | `FetchedAt` | IfcMaterial, IfcWindow | `identity` |
| `Manufacturer` | `Pset_ManufacturerTypeInformation` | `Manufacturer` | IfcMaterial, IfcWindow | `identity` |
| `ArticleNumber` | `Pset_ManufacturerTypeInformation` | `ArticleNumber` | IfcMaterial, IfcWindow | `identity` |
| `ThermalConductivity` | `Pset_MaterialThermal` | `ThermalConductivity` | IfcMaterial | `mw.lambda_d` |
| `ThermalResistanceRd` | `Pset_BrickboxDoP` | `ThermalResistanceRd` | IfcMaterial | `mw.thermal_resistance_rd` |
| `ReactionToFireClass` | `Pset_BrickboxDoP` | `ReactionToFireClass` | IfcMaterial | `mw.reaction_to_fire` |
| `ThicknessNominal` | `Pset_BrickboxDoP` | `ThicknessNominal` | IfcMaterial | `mw.thickness_nominal` |
| `DesignationCode` | `Pset_BrickboxDoP` | `DesignationCode` | IfcMaterial | `mw.designation_code` |
| `MwDoPNumber` | `Pset_BrickboxDoP` | `MwDoPNumber` | IfcMaterial | `mw.dop_number` |
| `MwAvcpSystem` | `Pset_BrickboxDoP` | `MwAvcpSystem` | IfcMaterial | `mw.avcp_system` |
| `NotifiedBody` | `Pset_BrickboxDoP` | `NotifiedBody` | IfcMaterial | `mw.notified_body` |
| `MassDensity` | `Pset_MaterialCommon` | `MassDensity` | IfcMaterial | `mw.density` |
| `SpecificHeatCapacity` | `Pset_MaterialThermal` | `SpecificHeatCapacity` | IfcMaterial | `mw.specific_heat` |
| `VaporPermeability` | `Pset_MaterialHygroscopic` | `VaporPermeability` | IfcMaterial | `mw.vapour_resistance_mu` |
| `CompressiveStressCs10` | `Pset_BrickboxDoP` | `CompressiveStressCs10` | IfcMaterial | `mw.compressive_stress_cs10` |
| `TensileStrengthTr` | `Pset_BrickboxDoP` | `TensileStrengthTr` | IfcMaterial | `mw.tensile_strength_tr` |
| `WaterAbsorptionWs` | `Pset_BrickboxDoP` | `WaterAbsorptionWs` | IfcMaterial | `mw.water_absorption_ws` |
| `WaterAbsorptionWlp` | `Pset_BrickboxDoP` | `WaterAbsorptionWlp` | IfcMaterial | `mw.water_absorption_wlp` |
| `AirflowResistivity` | `Pset_BrickboxDoP` | `AirflowResistivity` | IfcMaterial | `mw.airflow_resistivity` |
| `DynamicStiffness` | `Pset_BrickboxDoP` | `DynamicStiffness` | IfcMaterial | `mw.dynamic_stiffness` |
| `DimensionalStabilityDs` | `Pset_BrickboxDoP` | `DimensionalStabilityDs` | IfcMaterial | `mw.dimensional_stability_ds` |
| `MwEpdReference` | `Pset_BrickboxDoP` | `MwEpdReference` | IfcMaterial | `mw.epd_reference` |
| `MeltingPoint` | `Pset_BrickboxDoP` | `MeltingPoint` | IfcMaterial | `mw.melting_point` |
| `ThermalTransmittance` | `Pset_WindowCommon` | `ThermalTransmittance` | IfcWindow | `win.u_value_w` |
| `AirPermeabilityClass` | `Pset_BrickboxDoP` | `AirPermeabilityClass` | IfcWindow | `win.air_permeability_class` |
| `WatertightnessClass` | `Pset_BrickboxDoP` | `WatertightnessClass` | IfcWindow | `win.watertightness_class` |
| `WindLoadClass` | `Pset_BrickboxDoP` | `WindLoadClass` | IfcWindow | `win.wind_load_class` |
| `AcousticRating` | `Pset_WindowCommon` | `AcousticRating` | IfcWindow | `win.acoustic_rw` |
| `WinDoPNumber` | `Pset_BrickboxDoP` | `WinDoPNumber` | IfcWindow | `win.dop_number` |
| `WinAvcpSystem` | `Pset_BrickboxDoP` | `WinAvcpSystem` | IfcWindow | `win.avcp_system` |
| `FrameMaterial` | `Pset_BrickboxDoP` | `FrameMaterial` | IfcWindow | `win.frame_material` |
| `SolarHeatGainTransmittance` | `Pset_DoorWindowGlazingType` | `SolarHeatGainTransmittance` | IfcWindow | `win.g_value` |
| `VisibleLightTransmittance` | `Pset_DoorWindowGlazingType` | `VisibleLightTransmittance` | IfcWindow | `win.light_transmittance` |
| `UValueG` | `Pset_DoorWindowGlazingType` | `UValueG` | IfcWindow | `win.u_value_g` |
| `UValueF` | `Pset_BrickboxDoP` | `UValueF` | IfcWindow | `win.u_value_f` |
| `GlazingStructure` | `Pset_BrickboxDoP` | `GlazingStructure` | IfcWindow | `win.glazing_structure` |
| `PartitioningType` | `Pset_BrickboxDoP` | `PartitioningType` | IfcWindow | `win.operation_type` |
| `SecurityRating` | `Pset_WindowCommon` | `SecurityRating` | IfcWindow | `win.burglary_resistance` |
| `LoadBearingSafety` | `Pset_BrickboxDoP` | `LoadBearingSafety` | IfcWindow | `win.load_bearing_safety` |
| `DangerousSubstances` | `Pset_BrickboxDoP` | `DangerousSubstances` | IfcWindow | `win.dangerous_substances` |
| `WinEpdReference` | `Pset_BrickboxDoP` | `WinEpdReference` | IfcWindow | `win.epd_reference` |
| `MaxDimensions` | `Pset_BrickboxDoP` | `MaxDimensions` | IfcWindow | `win.max_dimensions` |
| `FireRating` | `Pset_WindowCommon` | `FireRating` | IfcWindow | `win.fire_rating` |

- IfcWindowType is an IFC4 entity attribute; IFC2x3 carries the value as a property instead.

## 4. Base quantities

Switch these on in the translator. The list covers the product entities above and the
elements that carry a layered material — a mineral wool quantity is measured from the
wall or slab the layer sits in, not from the material itself.

| Entity | IFC4 quantity set | IFC2x3 quantity set | Quantities |
|---|---|---|---|
| `IfcWindow` | `Qto_WindowBaseQuantities` | `BaseQuantities` | `Height`, `Width`, `Area`, `Perimeter` |
| `IfcWall` | `Qto_WallBaseQuantities` | `BaseQuantities` | `Length`, `Height`, `Width`, `GrossSideArea`, `NetSideArea`, `GrossVolume`, `NetVolume` |
| `IfcSlab` | `Qto_SlabBaseQuantities` | `BaseQuantities` | `Width`, `GrossArea`, `NetArea`, `GrossVolume`, `NetVolume` |

`IfcMaterial` carries no quantity set of its own: a material is
measured through the elements that use it. The take-off reads the element quantities
above and multiplies by the layer thickness.

## 5. Check the export

1. Place one product-tagged element, export IFC with the new translator.
2. Open the `.ifc` in a text editor and search for `BrickboxId` — it must appear on the
   element **and**, for a type-based element, on its type.
3. Validate the model against `Brickbox-Model-Requirements.ids`.
4. Open Brickbox → the product page → the code you exported must be the code in the file.

## 6. Not measured yet

- Whether building-material properties reach IFC as `Pset_MaterialThermal` on
  `IfcMaterial`, or as one flat property per material. This is the open question in
  `docs/plaan/03-UURING-archicad.md` §2; the walkthrough in ArchiCAD 29 answers it.
- The property-set names above are entered by hand into the translator; ArchiCAD may
  normalise or reject a name. Any correction belongs in the registry
  (`property_definitions.ifc_pset`), not in this file — the file is generated.

_Generated from Brickbox property group, kit 1.0.0._
