<?xml version="1.0" encoding="UTF-8"?>
<!-- Brickbox Model Requirements 1.0.0, 2026-09-07. Validate an exported model against this before uploading it for a take-off. -->
<ids:ids xmlns:ids="http://standards.buildingsmart.org/IDS" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.buildingsmart.org/IDS http://standards.buildingsmart.org/IDS/1.0/ids.xsd">
  <ids:info>
    <ids:title>Brickbox Model Requirements</ids:title>
    <ids:version>1.0.0</ids:version>
    <ids:description>Every product-bearing element carries its Brickbox identifier and its base quantities.</ids:description>
    <ids:author>info@brickbox.ee</ids:author>
    <ids:date>2026-09-07</ids:date>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Mineral Wool Insulation — Brickbox identity" ifcVersion="IFC2X3 IFC4" identifier="brickbox-mineral-wool-en13162" description="Mineraalvillsoojustus (EN 13162)" instructions="Applies to every element of this class, but the Brickbox identifier is checked only where it is present: an element without one is not reported. See the comment in the specification for why, and what has to be measured before it becomes required.">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCMATERIAL</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <!-- IfcMaterial carries the identity as optional: whether ArchiCAD 29 exports a custom property set onto a material is unmeasured (docs/plaan/03-UURING-archicad.md §2). Required, this rule would report every concrete layer, gypsum board and air gap in the model. Becomes required once the walkthrough measures that the set arrives. -->
        <ids:property dataType="IFCIDENTIFIER" cardinality="optional">
          <ids:propertySet>
            <ids:simpleValue>Pset_Brickbox</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>BrickboxId</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="BBX-[0-9A-HJKMNP-TV-Z]{6}"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <!-- IfcMaterial has no base quantity set of its own; quantities come from the elements that use the material (see Brickbox-IFC-Mapping.md §4). -->
      </ids:requirements>
    </ids:specification>
    <ids:specification name="Windows — Brickbox identity" ifcVersion="IFC2X3 IFC4" identifier="brickbox-windows-en14351" description="Aknad (EN 14351-1)" instructions="Applies to every element of this class. In a model built with the Brickbox workflow each of them comes from the registry; an element without a Brickbox identifier is either an unspecified product or one this model does not source through Brickbox.">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCWINDOW</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <ids:property dataType="IFCIDENTIFIER" cardinality="required">
          <ids:propertySet>
            <ids:simpleValue>Pset_Brickbox</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>BrickboxId</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="BBX-[0-9A-HJKMNP-TV-Z]{6}"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property dataType="IFCLENGTHMEASURE" cardinality="required">
          <ids:propertySet>
            <ids:simpleValue>Qto_WindowBaseQuantities</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Height</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property dataType="IFCLENGTHMEASURE" cardinality="required">
          <ids:propertySet>
            <ids:simpleValue>Qto_WindowBaseQuantities</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Width</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property dataType="IFCAREAMEASURE" cardinality="required">
          <ids:propertySet>
            <ids:simpleValue>Qto_WindowBaseQuantities</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Area</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property dataType="IFCLENGTHMEASURE" cardinality="required">
          <ids:propertySet>
            <ids:simpleValue>Qto_WindowBaseQuantities</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Perimeter</ids:simpleValue>
          </ids:baseName>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>
