Dump skeleton structure of site
authorDion Moult <dion@thinkmoult.com>
Mon, 7 Oct 2019 20:20:16 +0000 (07:20 +1100)
committerDion Moult <dion@thinkmoult.com>
Mon, 7 Oct 2019 20:20:16 +0000 (07:20 +1100)
16 files changed:
Makefile [new file with mode: 0644]
config.sh [new file with mode: 0644]
pages/contribute/metadata.sh [new file with mode: 0644]
pages/contribute/page.html [new file with mode: 0644]
pages/download/metadata.sh [new file with mode: 0644]
pages/download/page.html [new file with mode: 0644]
pages/index/metadata.sh [new file with mode: 0644]
pages/index/page.html [new file with mode: 0644]
pages/search-ifc-class/metadata.sh [new file with mode: 0644]
pages/search-ifc-class/page.html [new file with mode: 0644]
pages/training/metadata.sh [new file with mode: 0644]
pages/training/page.html [new file with mode: 0644]
templates/footer.html [new file with mode: 0644]
templates/header.html [new file with mode: 0644]
www/assets/IFC4_extract.json [new file with mode: 0644]
www/style.css [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..ec947c4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+SHELL := /bin/bash
+
+.PHONY : pages
+pages :
+       find pages/* -type d -exec sh -c 'make page name=`basename {}`' \;
+
+.PHONY : page
+page :
+       source config.sh && source pages/$$name/metadata.sh && mo templates/header.html > www/$$name.html
+       source config.sh && source pages/$$name/metadata.sh && mo pages/$$name/page.html >> www/$$name.html 
+       source config.sh && source pages/$$name/metadata.sh && mo templates/footer.html >> www/$$name.html
diff --git a/config.sh b/config.sh
new file mode 100644 (file)
index 0000000..fb3def6
--- /dev/null
+++ b/config.sh
@@ -0,0 +1 @@
+export baseurl="http://blenderbim/"
diff --git a/pages/contribute/metadata.sh b/pages/contribute/metadata.sh
new file mode 100644 (file)
index 0000000..666df2c
--- /dev/null
@@ -0,0 +1 @@
+export description="Some metadatasecription"
diff --git a/pages/contribute/page.html b/pages/contribute/page.html
new file mode 100644 (file)
index 0000000..938f04f
--- /dev/null
@@ -0,0 +1,6 @@
+<section>
+    <h2>Contribute to the future of open-source digital engineering</h2>
+    <p>
+        BlenderBIM is based on the awesome <a href="https://github.com/IfcOpenShell/IfcOpenShell/">IfcOpenShell</a> project and built by <a href="https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/ifcblenderexport">volunteers</a>. You can be one too!
+    </p>
+</section>
diff --git a/pages/download/metadata.sh b/pages/download/metadata.sh
new file mode 100644 (file)
index 0000000..6994228
--- /dev/null
@@ -0,0 +1 @@
+export description="TODO"
diff --git a/pages/download/page.html b/pages/download/page.html
new file mode 100644 (file)
index 0000000..61935db
--- /dev/null
@@ -0,0 +1,6 @@
+<section>
+    <h2>Get BlenderBIM</h2>
+    <p>
+        <a href="https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/ifcblenderexport">Download BlenderBIM now for free</a>
+    </p>
+</section>
diff --git a/pages/index/metadata.sh b/pages/index/metadata.sh
new file mode 100644 (file)
index 0000000..7dd23de
--- /dev/null
@@ -0,0 +1 @@
+export description="foobaro"
diff --git a/pages/index/page.html b/pages/index/page.html
new file mode 100644 (file)
index 0000000..9632b6c
--- /dev/null
@@ -0,0 +1,9 @@
+<section id="blurb">
+    <p>Create beautiful, detailed, and data-rich BIM models using Blender.</p>
+    <a href="https://github.com/IfcOpenShell/IfcOpenShell/tree/v0.6.0/src/ifcblenderexport">Download BlenderBIM now for free</a>
+</section>
+<section>
+    <img src="https://via.placeholder.com/1200x300" alt="">
+    <h2>Hello, world!</h2>
+    <p>Lorum ipsum dolor sit amet.</p>
+</section>
diff --git a/pages/search-ifc-class/metadata.sh b/pages/search-ifc-class/metadata.sh
new file mode 100644 (file)
index 0000000..620ae31
--- /dev/null
@@ -0,0 +1,2 @@
+export title="Which IFC class should I use?"
+export description="Search IFC4 class categories and predefined types to find the best category for your BIM object."
diff --git a/pages/search-ifc-class/page.html b/pages/search-ifc-class/page.html
new file mode 100644 (file)
index 0000000..c857927
--- /dev/null
@@ -0,0 +1,117 @@
+<section>
+    <h2>Which IFC class should I use?</h2>
+    <p>
+        Physical objects in an IFC file must be categorised to a
+        <em>class</em> of object, which has implications on what
+        properties are expected to be found on the object. For example,
+        a wall has an IFC <em>class</em> of <code>IfcWall</code>. If
+        your BIM model has missing or incorrect <em>class</em>
+        categorisations, then your BIM model becomes difficult to use.
+    </p>
+    <p>
+        The <em>classes</em> available for you to use are different for
+        each IFC version. In general, IFC4 has many more classes, and
+        the upcoming IFC5 will include even more for infrastructure and
+        landscape projects. It is not advisable to use IFC2x3, for the
+        simple reason that it lacks many useful IFC <em>classes</em>.
+    </p>
+    <p>
+        This tool below lets you type what type of object you have, and
+        it will try and find the right IFC <em>class</em> for you. It
+        will recommend IFC4 classes. We do not encourage the use of
+        IFC2x3 files.
+    </p>
+    <p>
+        This tool is currently only in English. If you know how to code,
+        <a href="{{baseurl}}contribute.html">please contribute and improve this tool</a>! If
+        there is an object type you cannot find, please <a href="mailto:dion@thinkmoult.com">email me</a>
+        and I will add it to the list.
+    </p>
+    <p>
+        Find an IFC entity:
+        <input type="text" id="search-query" placeholder="E.g. Window / Basin / Gutter">
+    </p>
+    <div id="search-results"></div>
+</section>
+
+<script type="text/javascript">
+function loadJSON(callback) {   
+    var xobj = new XMLHttpRequest();
+        xobj.overrideMimeType("application/json");
+    xobj.open('GET', 'assets/IFC4_extract.json', true);
+    xobj.onreadystatechange = function () {
+          if (xobj.readyState == 4 && xobj.status == '200') {
+            callback(xobj.responseText);
+          }
+    };
+    xobj.send(null);  
+}
+
+String.prototype.replaceAll = function(search, replacement) {
+    var target = this;
+    return target.replace(new RegExp(search, 'g'), replacement);
+};
+
+function getResultsFromSchema(schema) {
+    var filteredResults = []
+    for (const [name, data] of Object.entries(schema)) {
+        matchedName = null;
+        matchedPredefinedTypes = [];
+        if (name.toLowerCase().includes(query.value.replaceAll(' ', '').toLowerCase())) {
+            var regex = new RegExp('(' + query.value.replaceAll(' ', '') + ')', 'gi');
+            matchedName = name.replace(regex, '<span class="highlight">$1</span>');
+        }
+        data['attributes'].forEach(function(attribute) {
+            if (attribute['name'] == 'PredefinedType'
+                && attribute['is_enum']) {
+                attribute['enum_values'].forEach(function(value) {
+                    if (value.toLowerCase().includes(query.value.replaceAll(' ', '').toLowerCase())) {
+                        var regex = new RegExp('(' + query.value.replaceAll(' ', '') + ')', 'gi');
+                        matchedPredefinedTypes.push(value.replace(regex, '<span class="highlight">$1</span>'));
+                        matchedName = name.replace(regex, '<span class="highlight">$1</span>');
+                    }
+                });
+            }
+        });
+        if (matchedName) {
+            filteredResults.push([matchedName, name.toLowerCase(), matchedPredefinedTypes, data['description']])
+        }
+    }
+    return filteredResults;
+}
+
+function appendLiFromResult(ul, item, liTemplate) {
+    var li = document.createElement('li');
+    li.innerHTML = liTemplate
+        .replace('{{name}}', item[0])
+        .replace('{{lowercase_name}}', item[1])
+        .replace('{{predefinedTypes}}', item[2].join(', '))
+        .replace('{{description}}', item[3]);
+    ul.appendChild(li);
+}
+
+function getResults(event) {
+    var filteredResults = getResultsFromSchema(document.schema);
+    var filteredAltResults = getResultsFromSchema(document.altSchema);
+    results.innerHTML = 'Query value: "' + query.value + '" - ' + filteredResults.length + ' result(s) found.';
+    var ul = document.createElement('ul');
+    filteredAltResults.forEach(function(item) { appendLiFromResult(ul, item, liAltTemplate); });
+    filteredResults.forEach(function(item) { appendLiFromResult(ul, item, liTemplate); });
+    results.appendChild(ul);
+}
+
+var query = document.getElementById('search-query')
+var results = document.getElementById('search-results');
+var liTemplate = '<span class="fa-li"><i class="fas fa-elementor"></i></span> <strong><code>{{name}}</code></strong> <em><code>{{predefinedTypes}}</code></em><br /><p>{{description}} - <a href="https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/link/{{lowercase_name}}.htm">Read more</a></p>';
+var liAltTemplate = '<span class="fa-li"><i class="fab fa-elementor"></i></span><strong>Similar names to: <code>{{name}}</code></strong> <em><code>{{predefinedTypes}}</code></em><br /><p>{{description}}</p>';
+
+loadJSON(function(response) {
+    document.schema = JSON.parse(response);
+    document.altSchema = {
+        'Glazing / Glass / Pane': { 'description': 'If you are trying to classify a single pane of glass or glazing aggregated within a larger system, consider using an IfcPlate. Otherwise, if it is an entire window, use IfcWindow. If it is a glazed wall, consider IfcWall.', 'attributes': [] }
+    }
+    query.addEventListener('change', getResults);
+    query.addEventListener('keyup', getResults);
+    getResults();
+});
+</script>
diff --git a/pages/training/metadata.sh b/pages/training/metadata.sh
new file mode 100644 (file)
index 0000000..6994228
--- /dev/null
@@ -0,0 +1 @@
+export description="TODO"
diff --git a/pages/training/page.html b/pages/training/page.html
new file mode 100644 (file)
index 0000000..81d8232
--- /dev/null
@@ -0,0 +1,4 @@
+<section>
+    <h2>Training &amp; Support</h2>
+    <p><a href="{{baseurl}}search-ifc-class.html">Which IFC class should I use?</a></p>
+</section>
diff --git a/templates/footer.html b/templates/footer.html
new file mode 100644 (file)
index 0000000..3f8afc3
--- /dev/null
@@ -0,0 +1,5 @@
+    <footer>
+        BlenderBIM is based on the awesome <a href="http://www.ifcopenshell.org/">IfcOpenShell</a> project and built by <a href="{{baseurl}}contribute.html">volunteers</a>. You can be one too!
+    </footer>
+</body>
+</html>
diff --git a/templates/header.html b/templates/header.html
new file mode 100644 (file)
index 0000000..eca1c24
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    {{#description}}
+    <meta name="description" content="{{description}}">
+    {{/description}}
+    <title>BlenderBIM{{#title}} - {{title}}{{/title}}</title>
+    <link href="https://fonts.googleapis.com/css?family=Comfortaa|Inconsolata|Open+Sans&display=swap" rel="stylesheet">
+    <script src="https://kit.fontawesome.com/b757860a3b.js" crossorigin="anonymous"></script>
+    <link rel="stylesheet" href="style.css" />
+</head>
+<body>
+    <header>
+        <h1>BlenderBIM</h1>
+        <nav>
+            <ul>
+                <li><a href="{{baseurl}}">Home</a></li>
+                <li><a href="{{baseurl}}download.html">Get BlenderBIM</a></li>
+                <li><a href="{{baseurl}}training.html">Training &amp; Support</a></li>
+                <li><a href="{{baseurl}}contribute.html">Contribute</a></li>
+            </ul>
+        </nav>
+    </header>
diff --git a/www/assets/IFC4_extract.json b/www/assets/IFC4_extract.json
new file mode 100644 (file)
index 0000000..f3eb391
--- /dev/null
@@ -0,0 +1,4570 @@
+{
+    "IfcActuator": {
+        "description": "An actuator is a mechanical device for moving or controlling a mechanism or system. An actuator takes energy, usually created by air, electricity, or liquid, and converts that into some kind of motion.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcActuatorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ELECTRICACTUATOR",
+                    "HANDOPERATEDACTUATOR",
+                    "HYDRAULICACTUATOR",
+                    "PNEUMATICACTUATOR",
+                    "THERMOSTATICACTUATOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcAirTerminal": {
+        "description": "An air terminal is a terminating or origination point for the transfer of air between distribution system(s) and one or more spaces. It can also be used for the transfer of air between adjacent spaces.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcAirTerminalTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DIFFUSER",
+                    "GRILLE",
+                    "LOUVRE",
+                    "REGISTER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcAirTerminalBox": {
+        "description": "An air terminal box typically participates in an HVAC duct distribution system and is used to control or modulate the amount of air delivered to its downstream ductwork. An air terminal box type is often referred to as an \"air flow regulator\".",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcAirTerminalBoxTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONSTANTFLOW",
+                    "VARIABLEFLOWPRESSUREDEPENDANT",
+                    "VARIABLEFLOWPRESSUREINDEPENDANT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcAirToAirHeatRecovery": {
+        "description": "An air-to-air heat recovery device employs a counter-flow heat exchanger between inbound and outbound air flow. It is typically used to transfer heat from warmer air in one chamber to cooler air in the second chamber (i.e., typically used to recover heat from the conditioned air being exhausted and the outside air being supplied to a building), resulting in energy savings from reduced heating (or cooling) requirements.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcAirToAirHeatRecoveryTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FIXEDPLATECOUNTERFLOWEXCHANGER",
+                    "FIXEDPLATECROSSFLOWEXCHANGER",
+                    "FIXEDPLATEPARALLELFLOWEXCHANGER",
+                    "ROTARYWHEEL",
+                    "RUNAROUNDCOILLOOP",
+                    "HEATPIPE",
+                    "TWINTOWERENTHALPYRECOVERYLOOPS",
+                    "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS",
+                    "THERMOSIPHONCOILTYPEHEATEXCHANGERS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcAlarm": {
+        "description": "An alarm is a device that signals the existence of a condition or situation that is outside the boundaries of normal expectation or that activates such a device.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcAlarmTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BELL",
+                    "BREAKGLASSBUTTON",
+                    "LIGHT",
+                    "MANUALPULLBOX",
+                    "SIREN",
+                    "WHISTLE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcAnnotation": {
+        "description": "       An annotation is a graphical representation within the geometric (and spatial) context       of a project, that adds a note or meaning to the objects which constitutes the project model. Annotations include       additional points, curves, text, dimensioning, hatching and other forms of graphical notes. It also include symbolic       representations of additional model components, not representing products or spatial structures, such as survey points,       contour lines or similar.     ",
+        "is_abstract": false,
+        "parent": "IfcProduct",
+        "attributes": []
+    },
+    "IfcAudioVisualAppliance": {
+        "description": "An audio-visual appliance is a device that displays, captures, transmits, or receives audio or video.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcAudioVisualApplianceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AMPLIFIER",
+                    "CAMERA",
+                    "DISPLAY",
+                    "MICROPHONE",
+                    "PLAYER",
+                    "PROJECTOR",
+                    "RECEIVER",
+                    "SPEAKER",
+                    "SWITCHER",
+                    "TELEPHONE",
+                    "TUNER",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "POLYLINE_FORM",
+                    "CIRCULAR_ARC",
+                    "ELLIPTIC_ARC",
+                    "PARABOLIC_ARC",
+                    "HYPERBOLIC_ARC",
+                    "UNSPECIFIED",
+                    "PLANE_SURF",
+                    "CYLINDRICAL_SURF",
+                    "CONICAL_SURF",
+                    "SPHERICAL_SURF",
+                    "TOROIDAL_SURF",
+                    "SURF_OF_REVOLUTION",
+                    "RULED_SURF",
+                    "GENERALISED_CONE",
+                    "QUADRIC_SURF",
+                    "SURF_OF_LINEAR_EXTRUSION",
+                    "UNSPECIFIED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBeam": {
+        "description": "An IfcBeam is a horizontal, or nearly horizontal, structural member that is capable of withstanding load primarily by resisting bending. It represents such a member from an architectural point of view. It is not required to be load bearing.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBeamTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BEAM",
+                    "JOIST",
+                    "HOLLOWCORE",
+                    "LINTEL",
+                    "SPANDREL",
+                    "T_BEAM",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBeamStandardCase": {
+        "description": "The standard beam, IfcBeamStandardCase, defines a beam with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcBeamStandardCase handles all cases of beams, that:",
+        "is_abstract": false,
+        "parent": "IfcBeam",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBeamTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BEAM",
+                    "JOIST",
+                    "HOLLOWCORE",
+                    "LINTEL",
+                    "SPANDREL",
+                    "T_BEAM",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBoiler": {
+        "description": "A boiler is a closed, pressure-rated vessel in which water or other fluid is heated using an energy source such as natural gas, heating oil, or electricity. The fluid in the vessel is then circulated out of the boiler for use in various processes or heating applications.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBoilerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "WATER",
+                    "STEAM",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "UNION",
+                    "INTERSECTION",
+                    "DIFFERENCE"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBuilding": {
+        "description": "A building represents a structure that provides shelter for its occupants or contents and stands in one place. The building is also used to provide a basic element within the spatial structure hierarchy for the components of a building project (together with site, storey, and space).",
+        "is_abstract": false,
+        "parent": "IfcSpatialStructureElement",
+        "attributes": [
+            {
+                "name": "ElevationOfRefHeight",
+                "type": "IfcLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "ElevationOfTerrain",
+                "type": "IfcLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CompositionType",
+                "type": "IfcElementCompositionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPLEX",
+                    "ELEMENT",
+                    "PARTIAL"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBuildingElementPart": {
+        "description": "IfcBuildingElementPart represents major components as subordinate parts of a building element. Typical usage examples include precast concrete sandwich walls, where the layers may have different geometry representations. In this case the layered material representation does not sufficiently describe the element. Each layer is represented by an own instance of the IfcBuildingElementPart with its own geometry description.",
+        "is_abstract": false,
+        "parent": "IfcElementComponent",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBuildingElementPartTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "INSULATION",
+                    "PRECASTPANEL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBuildingElementProxy": {
+        "description": "The IfcBuildingElementProxy is a proxy definition that provides the same functionality as subtypes of IfcBuildingElement, but without having a predefined meaning of the special type of building element, it represents.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBuildingElementProxyTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPLEX",
+                    "ELEMENT",
+                    "PARTIAL",
+                    "PROVISIONFORVOID",
+                    "PROVISIONFORSPACE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBuildingStorey": {
+        "description": "The building storey has an elevation and typically represents a (nearly) horizontal aggregation of spaces that are vertically bound.",
+        "is_abstract": false,
+        "parent": "IfcSpatialStructureElement",
+        "attributes": [
+            {
+                "name": "Elevation",
+                "type": "IfcLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CompositionType",
+                "type": "IfcElementCompositionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPLEX",
+                    "ELEMENT",
+                    "PARTIAL"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcBurner": {
+        "description": "A burner is a device that converts fuel into heat through combustion. It includes gas, oil, and wood burners.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcBurnerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCableCarrierFitting": {
+        "description": "A cable carrier fitting is a fitting that is placed at junction or transition in a cable carrier system.",
+        "is_abstract": false,
+        "parent": "IfcFlowFitting",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCableCarrierFittingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BEND",
+                    "CROSS",
+                    "REDUCER",
+                    "TEE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCableCarrierSegment": {
+        "description": "A cable carrier segment is a flow segment that is specifically used to carry and support cabling.",
+        "is_abstract": false,
+        "parent": "IfcFlowSegment",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCableCarrierSegmentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CABLELADDERSEGMENT",
+                    "CABLETRAYSEGMENT",
+                    "CABLETRUNKINGSEGMENT",
+                    "CONDUITSEGMENT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCableFitting": {
+        "description": "A cable fitting is a fitting that is placed at a junction, transition or termination in a cable system.",
+        "is_abstract": false,
+        "parent": "IfcFlowFitting",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCableFittingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONNECTOR",
+                    "ENTRY",
+                    "EXIT",
+                    "JUNCTION",
+                    "TRANSITION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCableSegment": {
+        "description": "A cable segment is a flow segment used to carry electrical power, data, or telecommunications signals.",
+        "is_abstract": false,
+        "parent": "IfcFlowSegment",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCableSegmentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BUSBARSEGMENT",
+                    "CABLESEGMENT",
+                    "CONDUCTORSEGMENT",
+                    "CORESEGMENT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcChiller": {
+        "description": "A chiller is a device used to remove heat from a liquid via a vapor-compression or absorption refrigeration cycle to cool a fluid, typically water or a mixture of water and glycol. The chilled fluid is then used to cool and dehumidify air in a building.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcChillerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRCOOLED",
+                    "WATERCOOLED",
+                    "HEATRECOVERY",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcChimney": {
+        "description": "Chimneys are typically vertical, or as near as vertical, parts of the construction of a building and part of the building fabric. Often constructed by pre-cast or insitu concrete, today seldom by bricks.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcChimneyTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCivilElement": {
+        "description": "An IfcCivilElement is a generalization of all elements within a civil engineering works. It includes in particular all occurrences of typical linear construction works, such as road segments, bridge segments, pavements, etc. Depending on the context of the construction project, included building work, such as buildings or factories, are represented as a collection of IfcBuildingElement's, distribution systems, such as piping or drainage, are represented as a collection of IfcDistributionElement's, and other geographic elements, such as trees, light posts, traffic signs etc. are represented as IfcGeographicElement's.",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCoil": {
+        "description": "A coil is a device used to provide heat transfer between non-mixing media. A common example is a cooling coil, which utilizes a finned coil in which circulates chilled water, antifreeze, or refrigerant that is used to remove heat from air moving across the surface of the coil. A coil may be used either for heating or cooling purposes by placing a series of tubes (the coil) carrying a heating or cooling fluid into an airstream. The coil may be constructed from tubes bundled in a serpentine form or from finned tubes that give a extended heat transfer surface.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCoilTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DXCOOLINGCOIL",
+                    "ELECTRICHEATINGCOIL",
+                    "GASHEATINGCOIL",
+                    "HYDRONICCOIL",
+                    "STEAMHEATINGCOIL",
+                    "WATERCOOLINGCOIL",
+                    "WATERHEATINGCOIL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcColumn": {
+        "description": "IfcColumn",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcColumnTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COLUMN",
+                    "PILASTER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcColumnStandardCase": {
+        "description": "The standard column, IfcColumnStandardCase, defines a column with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcColumnStandardCase handles all cases of columns, that:",
+        "is_abstract": false,
+        "parent": "IfcColumn",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcColumnTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COLUMN",
+                    "PILASTER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCommunicationsAppliance": {
+        "description": "A communications appliance transmits and receives electronic or digital information as data or sound.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCommunicationsApplianceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ANTENNA",
+                    "COMPUTER",
+                    "FAX",
+                    "GATEWAY",
+                    "MODEM",
+                    "NETWORKAPPLIANCE",
+                    "NETWORKBRIDGE",
+                    "NETWORKHUB",
+                    "PRINTER",
+                    "REPEATER",
+                    "ROUTER",
+                    "SCANNER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCompressor": {
+        "description": "A compressor is a device that compresses a fluid typically used in a refrigeration circuit.",
+        "is_abstract": false,
+        "parent": "IfcFlowMovingDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCompressorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DYNAMIC",
+                    "RECIPROCATING",
+                    "ROTARY",
+                    "SCROLL",
+                    "TROCHOIDAL",
+                    "SINGLESTAGE",
+                    "BOOSTER",
+                    "OPENTYPE",
+                    "HERMETIC",
+                    "SEMIHERMETIC",
+                    "WELDEDSHELLHERMETIC",
+                    "ROLLINGPISTON",
+                    "ROTARYVANE",
+                    "SINGLESCREW",
+                    "TWINSCREW",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCondenser": {
+        "description": "A condenser is a device that is used to dissipate heat, typically by condensing a substance such as a refrigerant from its gaseous to its liquid state.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCondenserTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRCOOLED",
+                    "EVAPORATIVECOOLED",
+                    "WATERCOOLED",
+                    "WATERCOOLEDBRAZEDPLATE",
+                    "WATERCOOLEDSHELLCOIL",
+                    "WATERCOOLEDSHELLTUBE",
+                    "WATERCOOLEDTUBEINTUBE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcController": {
+        "description": "A controller is a device that monitors inputs and controls outputs within a building automation system.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcControllerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLOATING",
+                    "PROGRAMMABLE",
+                    "PROPORTIONAL",
+                    "MULTIPOSITION",
+                    "TWOPOSITION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCooledBeam": {
+        "description": "A cooled beam (or chilled beam) is a device typically used to cool air by circulating a fluid such as chilled water through exposed finned tubes above a space. Typically mounted overhead near or within a ceiling, the cooled beam uses convection to cool the space below it by acting as a heat sink for the naturally rising warm air of the space. Once cooled, the air naturally drops back to the floor where the cycle begins again.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCooledBeamTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ACTIVE",
+                    "PASSIVE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCoolingTower": {
+        "description": "A cooling tower is a device which rejects heat to ambient air by circulating a fluid such as water through it to reduce its temperature by partial evaporation.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCoolingTowerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "NATURALDRAFT",
+                    "MECHANICALINDUCEDDRAFT",
+                    "MECHANICALFORCEDDRAFT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCovering": {
+        "description": "A covering is an element which covers some part of another element and is fully dependent on that other element. The IfcCovering defines the occurrence of a covering type, that (if given) is expressed by the IfcCoveringType.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCoveringTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CEILING",
+                    "FLOORING",
+                    "CLADDING",
+                    "ROOFING",
+                    "MOLDING",
+                    "SKIRTINGBOARD",
+                    "INSULATION",
+                    "MEMBRANE",
+                    "SLEEVING",
+                    "WRAPPING",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcCurtainWall": {
+        "description": "A curtain wall is an exterior wall of a building which is an assembly of components, hung from the edge of the floor/roof structure rather than bearing on a floor. Curtain wall is represented as a building element assembly and implemented as a subtype of IfcBuildingElement that uses an IfcRelAggregates relationship.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcCurtainWallTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDamper": {
+        "description": "A damper typically participates in an HVAC duct distribution system and is used to control or modulate the flow of air.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDamperTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BACKDRAFTDAMPER",
+                    "BALANCINGDAMPER",
+                    "BLASTDAMPER",
+                    "CONTROLDAMPER",
+                    "FIREDAMPER",
+                    "FIRESMOKEDAMPER",
+                    "FUMEHOODEXHAUST",
+                    "GRAVITYDAMPER",
+                    "GRAVITYRELIEFDAMPER",
+                    "RELIEFDAMPER",
+                    "SMOKEDAMPER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDiscreteAccessory": {
+        "description": "A discrete accessory is a representation of different kinds of accessories included in or added to elements. ",
+        "is_abstract": false,
+        "parent": "IfcElementComponent",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDiscreteAccessoryTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ANCHORPLATE",
+                    "BRACKET",
+                    "SHOE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDistributionChamberElement": {
+        "description": "A distribution chamber element defines a place at which distribution systems and their constituent elements may be inspected or through which they may travel.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDistributionChamberElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FORMEDDUCT",
+                    "INSPECTIONCHAMBER",
+                    "INSPECTIONPIT",
+                    "MANHOLE",
+                    "METERCHAMBER",
+                    "SUMP",
+                    "TRENCH",
+                    "VALVECHAMBER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDistributionControlElement": {
+        "description": "The distribution element IfcDistributionControlElement defines occurrence elements of a building automation control system that are used to impart control over elements of a distribution system.",
+        "is_abstract": false,
+        "parent": "IfcDistributionElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDistributionElement": {
+        "description": "This IfcDistributionElement is a generalization of all elements that participate in a distribution system. Typical examples of IfcDistributionElement's are (among others):",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDistributionFlowElement": {
+        "description": "The distribution element IfcDistributionFlowElement defines occurrence elements of a distribution system that facilitate the distribution of energy or matter, such as air, water or power.",
+        "is_abstract": false,
+        "parent": "IfcDistributionElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDistributionPort": {
+        "description": "A distribution port is an inlet or outlet of a product through which a particular substance may flow.",
+        "is_abstract": false,
+        "parent": "IfcPort",
+        "attributes": [
+            {
+                "name": "FlowDirection",
+                "type": "IfcFlowDirectionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SOURCE",
+                    "SINK",
+                    "SOURCEANDSINK",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcDistributionPortTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CABLE",
+                    "CABLECARRIER",
+                    "DUCT",
+                    "PIPE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "SystemType",
+                "type": "IfcDistributionSystemEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRCONDITIONING",
+                    "AUDIOVISUAL",
+                    "CHEMICAL",
+                    "CHILLEDWATER",
+                    "COMMUNICATION",
+                    "COMPRESSEDAIR",
+                    "CONDENSERWATER",
+                    "CONTROL",
+                    "CONVEYING",
+                    "DATA",
+                    "DISPOSAL",
+                    "DOMESTICCOLDWATER",
+                    "DOMESTICHOTWATER",
+                    "DRAINAGE",
+                    "EARTHING",
+                    "ELECTRICAL",
+                    "ELECTROACOUSTIC",
+                    "EXHAUST",
+                    "FIREPROTECTION",
+                    "FUEL",
+                    "GAS",
+                    "HAZARDOUS",
+                    "HEATING",
+                    "LIGHTING",
+                    "LIGHTNINGPROTECTION",
+                    "MUNICIPALSOLIDWASTE",
+                    "OIL",
+                    "OPERATIONAL",
+                    "POWERGENERATION",
+                    "RAINWATER",
+                    "REFRIGERATION",
+                    "SECURITY",
+                    "SEWAGE",
+                    "SIGNAL",
+                    "STORMWATER",
+                    "TELEPHONE",
+                    "TV",
+                    "VACUUM",
+                    "VENT",
+                    "VENTILATION",
+                    "WASTEWATER",
+                    "WATERSUPPLY",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            }
+        ]
+    },
+    "IfcDoor": {
+        "description": "The door is a building element that is predominately used to provide controlled access for people and goods. It includes constructions with hinged, pivoted, sliding, and additionally revolving and folding operations. A door consists of a lining and one or several panels.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "OverallHeight",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "OverallWidth",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcDoorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DOOR",
+                    "GATE",
+                    "TRAPDOOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "OperationType",
+                "type": "IfcDoorTypeOperationEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SINGLE_SWING_LEFT",
+                    "SINGLE_SWING_RIGHT",
+                    "DOUBLE_DOOR_SINGLE_SWING",
+                    "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",
+                    "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",
+                    "DOUBLE_SWING_LEFT",
+                    "DOUBLE_SWING_RIGHT",
+                    "DOUBLE_DOOR_DOUBLE_SWING",
+                    "SLIDING_TO_LEFT",
+                    "SLIDING_TO_RIGHT",
+                    "DOUBLE_DOOR_SLIDING",
+                    "FOLDING_TO_LEFT",
+                    "FOLDING_TO_RIGHT",
+                    "DOUBLE_DOOR_FOLDING",
+                    "REVOLVING",
+                    "ROLLINGUP",
+                    "SWING_FIXED_LEFT",
+                    "SWING_FIXED_RIGHT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "UserDefinedOperationType",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDoorStandardCase": {
+        "description": "The standard door, IfcDoorStandardCase, defines a door with certain constraints for the provision of operation types, opening directions, frame and lining parameters, and with certain constraints for the geometric representation. The IfcDoorStandardCase handles all cases of doors, that:",
+        "is_abstract": false,
+        "parent": "IfcDoor",
+        "attributes": [
+            {
+                "name": "OverallHeight",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "OverallWidth",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcDoorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DOOR",
+                    "GATE",
+                    "TRAPDOOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "OperationType",
+                "type": "IfcDoorTypeOperationEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SINGLE_SWING_LEFT",
+                    "SINGLE_SWING_RIGHT",
+                    "DOUBLE_DOOR_SINGLE_SWING",
+                    "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",
+                    "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",
+                    "DOUBLE_SWING_LEFT",
+                    "DOUBLE_SWING_RIGHT",
+                    "DOUBLE_DOOR_DOUBLE_SWING",
+                    "SLIDING_TO_LEFT",
+                    "SLIDING_TO_RIGHT",
+                    "DOUBLE_DOOR_SLIDING",
+                    "FOLDING_TO_LEFT",
+                    "FOLDING_TO_RIGHT",
+                    "DOUBLE_DOOR_FOLDING",
+                    "REVOLVING",
+                    "ROLLINGUP",
+                    "SWING_FIXED_LEFT",
+                    "SWING_FIXED_RIGHT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "UserDefinedOperationType",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDuctFitting": {
+        "description": "A duct fitting is a junction or transition in a ducted flow distribution system or used to connect duct segments, resulting in changes in flow characteristics to the fluid such as direction and flow rate.",
+        "is_abstract": false,
+        "parent": "IfcFlowFitting",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDuctFittingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BEND",
+                    "CONNECTOR",
+                    "ENTRY",
+                    "EXIT",
+                    "JUNCTION",
+                    "OBSTRUCTION",
+                    "TRANSITION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDuctSegment": {
+        "description": "A duct segment is used to typically join two sections of duct network.",
+        "is_abstract": false,
+        "parent": "IfcFlowSegment",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDuctSegmentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "RIGIDSEGMENT",
+                    "FLEXIBLESEGMENT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcDuctSilencer": {
+        "description": "A duct silencer is a device that is typically installed inside a duct distribution system for the purpose of reducing the noise levels from air movement, fan noise, etc. in the adjacent space or downstream of the duct silencer device.",
+        "is_abstract": false,
+        "parent": "IfcFlowTreatmentDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcDuctSilencerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLATOVAL",
+                    "RECTANGULAR",
+                    "ROUND",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricAppliance": {
+        "description": "An electric appliance is a device intended for consumer usage that is powered by electricity.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricApplianceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DISHWASHER",
+                    "ELECTRICCOOKER",
+                    "FREESTANDINGELECTRICHEATER",
+                    "FREESTANDINGFAN",
+                    "FREESTANDINGWATERHEATER",
+                    "FREESTANDINGWATERCOOLER",
+                    "FREEZER",
+                    "FRIDGE_FREEZER",
+                    "HANDDRYER",
+                    "KITCHENMACHINE",
+                    "MICROWAVE",
+                    "PHOTOCOPIER",
+                    "REFRIGERATOR",
+                    "TUMBLEDRYER",
+                    "VENDINGMACHINE",
+                    "WASHINGMACHINE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricDistributionBoard": {
+        "description": "A distribution board is a flow controller in which instances of electrical devices are brought together at a single place for a particular purpose.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricDistributionBoardTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONSUMERUNIT",
+                    "DISTRIBUTIONBOARD",
+                    "MOTORCONTROLCENTRE",
+                    "SWITCHBOARD",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricFlowStorageDevice": {
+        "description": "An electric flow storage device is a device in which electrical energy is stored and from which energy may be progressively released.",
+        "is_abstract": false,
+        "parent": "IfcFlowStorageDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricFlowStorageDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BATTERY",
+                    "CAPACITORBANK",
+                    "HARMONICFILTER",
+                    "INDUCTORBANK",
+                    "UPS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricGenerator": {
+        "description": "An electric generator is an engine that is a machine for converting mechanical energy into electrical energy.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricGeneratorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CHP",
+                    "ENGINEGENERATOR",
+                    "STANDALONE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricMotor": {
+        "description": "An electric motor is an engine that is a machine for converting electrical energy into mechanical energy.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricMotorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DC",
+                    "INDUCTION",
+                    "POLYPHASE",
+                    "RELUCTANCESYNCHRONOUS",
+                    "SYNCHRONOUS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElectricTimeControl": {
+        "description": "An electric time control is a device that applies control to the provision or flow of electrical energy over time.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcElectricTimeControlTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "TIMECLOCK",
+                    "TIMEDELAY",
+                    "RELAY",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcElementAssembly": {
+        "description": "The IfcElementAssembly represents complex element assemblies aggregated from several elements, such as discrete elements, building elements, or other elements.",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "AssemblyPlace",
+                "type": "IfcAssemblyPlaceEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SITE",
+                    "FACTORY",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcElementAssemblyTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ACCESSORY_ASSEMBLY",
+                    "ARCH",
+                    "BEAM_GRID",
+                    "BRACED_FRAME",
+                    "GIRDER",
+                    "REINFORCEMENT_UNIT",
+                    "RIGID_FRAME",
+                    "SLAB_FIELD",
+                    "TRUSS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcEnergyConversionDevice": {
+        "description": "The distribution flow element IfcEnergyConversionDevice defines      the occurrence of a device used to perform     energy conversion or heat transfer and typically participates     in a flow distribution system. Its type is defined by IfcEnergyConversionDeviceType      or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcEngine": {
+        "description": "An engine is a device that converts fuel into mechanical energy through combustion.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcEngineTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "EXTERNALCOMBUSTION",
+                    "INTERNALCOMBUSTION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcEvaporativeCooler": {
+        "description": "An evaporative cooler is a device that cools air by saturating it with water vapor.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcEvaporativeCoolerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER",
+                    "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER",
+                    "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER",
+                    "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER",
+                    "DIRECTEVAPORATIVEAIRWASHER",
+                    "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER",
+                    "INDIRECTEVAPORATIVEWETCOIL",
+                    "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER",
+                    "INDIRECTDIRECTCOMBINATION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcEvaporator": {
+        "description": "An evaporator is a device in which a liquid refrigerent is vaporized and absorbs heat from the surrounding fluid.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcEvaporatorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DIRECTEXPANSION",
+                    "DIRECTEXPANSIONSHELLANDTUBE",
+                    "DIRECTEXPANSIONTUBEINTUBE",
+                    "DIRECTEXPANSIONBRAZEDPLATE",
+                    "FLOODEDSHELLANDTUBE",
+                    "SHELLANDCOIL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcExternalSpatialElement": {
+        "description": "The external spatial element defines external regions at the building site. Those regions can be defined:",
+        "is_abstract": false,
+        "parent": "IfcExternalSpatialStructureElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcExternalSpatialElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "EXTERNAL",
+                    "EXTERNAL_EARTH",
+                    "EXTERNAL_WATER",
+                    "EXTERNAL_FIRE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFan": {
+        "description": "A fan is a device which imparts mechanical work on a gas. A typical usage of a fan is to induce airflow in a building services air distribution system.",
+        "is_abstract": false,
+        "parent": "IfcFlowMovingDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFanTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CENTRIFUGALFORWARDCURVED",
+                    "CENTRIFUGALRADIAL",
+                    "CENTRIFUGALBACKWARDINCLINEDCURVED",
+                    "CENTRIFUGALAIRFOIL",
+                    "TUBEAXIAL",
+                    "VANEAXIAL",
+                    "PROPELLORAXIAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFastener": {
+        "description": "Representations of fixing parts which are used as fasteners to connect or join elements with other elements.  Excluded are mechanical fasteners which are modeled by a separate entity (IfcMechanicalFastener).",
+        "is_abstract": false,
+        "parent": "IfcElementComponent",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFastenerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLUE",
+                    "MORTAR",
+                    "WELD",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFilter": {
+        "description": "A filter is an apparatus used to remove particulate or gaseous matter from fluids and gases.",
+        "is_abstract": false,
+        "parent": "IfcFlowTreatmentDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFilterTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRPARTICLEFILTER",
+                    "COMPRESSEDAIRFILTER",
+                    "ODORFILTER",
+                    "OILFILTER",
+                    "STRAINER",
+                    "WATERFILTER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFireSuppressionTerminal": {
+        "description": "A fire suppression terminal has the purpose of delivering a fluid (gas or liquid) that will suppress a fire.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFireSuppressionTerminalTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BREECHINGINLET",
+                    "FIREHYDRANT",
+                    "HOSEREEL",
+                    "SPRINKLER",
+                    "SPRINKLERDEFLECTOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowController": {
+        "description": "The distribution flow element IfcFlowController defines     the occurrence of elements of a distribution system that      are used to regulate flow through a distribution system.      Examples include dampers, valves, switches, and relays. Its type is defined by      IfcFlowControllerType or subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowFitting": {
+        "description": "The distribution flow element IfcFlowFitting defines the occurrence of a junction or transition in a flow distribution system, such as an elbow or tee. Its type is defined by IfcFlowFittingType or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowInstrument": {
+        "description": "A flow instrument reads and displays the value of a particular property of a system at a point, or displays the difference in the value of a property between two points.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFlowInstrumentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PRESSUREGAUGE",
+                    "THERMOMETER",
+                    "AMMETER",
+                    "FREQUENCYMETER",
+                    "POWERFACTORMETER",
+                    "PHASEANGLEMETER",
+                    "VOLTMETER_PEAK",
+                    "VOLTMETER_RMS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowMeter": {
+        "description": "A flow meter is a device that is used to measure the flow rate in a system.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFlowMeterTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ENERGYMETER",
+                    "GASMETER",
+                    "OILMETER",
+                    "WATERMETER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowMovingDevice": {
+        "description": "The distribution flow element IfcFlowMovingDevice defines the occurrence of an apparatus used to distribute, circulate or perform conveyance of fluids, including liquids and gases (such as a pump or fan), and typically participates in a flow distribution system. Its type is defined by IfcFlowMovingDeviceType or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowSegment": {
+        "description": "The distribution flow element IfcFlowSegment defines the occurrence of a segment of a flow distribution system.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowStorageDevice": {
+        "description": "The distribution flow element IfcFlowStorageDevice defines the occurrence of a device that participates in a distribution system and is used for temporary storage (such as a tank). Its type is defined by IfcFlowStorageDeviceType or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowTerminal": {
+        "description": "The distribution flow element IfcFlowTerminal defines the occurrence of a permanently attached element that acts as a terminus or beginning of a distribution system (such as an air outlet, drain, water closet, or sink). A terminal is typically a point at which a system interfaces with an external environment. Its type is defined by IfcFlowTerminalType or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFlowTreatmentDevice": {
+        "description": "The distribution flow element IfcFlowTreatmentDevice defines the occurrence of a device typically used to remove unwanted matter from a fluid, either liquid or gas, and typically participates in a flow distribution system.  Its type is defined by IfcFlowTreatmentDeviceType or its subtypes.",
+        "is_abstract": false,
+        "parent": "IfcDistributionFlowElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFooting": {
+        "description": "A footing is a part of the foundation of a structure that spreads and transmits the load to the soil. A footing is also characterized as shallow foundation, where the loads are transfered to the ground near the surface.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFootingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CAISSON_FOUNDATION",
+                    "FOOTING_BEAM",
+                    "PAD_FOOTING",
+                    "PILE_CAP",
+                    "STRIP_FOOTING",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFurnishingElement": {
+        "description": "A furnishing element is a generalization of all furniture related objects. Furnishing objects are characterized as being",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcFurniture": {
+        "description": "Furniture defines complete furnishings such as a table, desk, chair, or cabinet, which may or may not be permanently attached to a building structure.",
+        "is_abstract": false,
+        "parent": "IfcFurnishingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcFurnitureTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CHAIR",
+                    "TABLE",
+                    "DESK",
+                    "BED",
+                    "FILECABINET",
+                    "SHELF",
+                    "SOFA",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcGeographicElement": {
+        "description": "       An IfcGeographicElement is a generalization of all       elements within a geographical landscape. It includes       occurrences of typical geographical elements, often referred       to as features, such as trees or terrain. Common type       information behind several occurrences of       IfcGeographicElement is provided by the       IfcGeographicElementType.     ",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcGeographicElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "TERRAIN",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcGrid": {
+        "description": " IfcGrid ia a planar design grid defined in 3D space       used as an aid in locating structural and design elements.       The position of the grid (ObjectPlacement) is defined       by a 3D coordinate system (and thereby the design grid can be       used in plan, section or in any position relative to the       world coordinate system). The position can be relative to the       object placement of other products or grids. The XY plane of       the 3D coordinate system is used to place the grid axes,       which are 2D curves (for example, line, circle, arc,       polyline).     ",
+        "is_abstract": false,
+        "parent": "IfcProduct",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcGridTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "RECTANGULAR",
+                    "RADIAL",
+                    "TRIANGULAR",
+                    "IRREGULAR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            }
+        ]
+    },
+    "IfcHeatExchanger": {
+        "description": "A heat exchanger is a device used to provide heat transfer between non-mixing media such as plate and shell and tube heat exchangers.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcHeatExchangerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PLATE",
+                    "SHELLANDTUBE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcHumidifier": {
+        "description": "A humidifier is a device that adds moisture into the air.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcHumidifierTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "STEAMINJECTION",
+                    "ADIABATICAIRWASHER",
+                    "ADIABATICPAN",
+                    "ADIABATICWETTEDELEMENT",
+                    "ADIABATICATOMIZING",
+                    "ADIABATICULTRASONIC",
+                    "ADIABATICRIGIDMEDIA",
+                    "ADIABATICCOMPRESSEDAIRNOZZLE",
+                    "ASSISTEDELECTRIC",
+                    "ASSISTEDNATURALGAS",
+                    "ASSISTEDPROPANE",
+                    "ASSISTEDBUTANE",
+                    "ASSISTEDSTEAM",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcInterceptor": {
+        "description": "An interceptor is a device designed and installed in order to separate and retain deleterious, hazardous or undesirable matter while permitting normal sewage or liquids to discharge into a collection system by gravity.",
+        "is_abstract": false,
+        "parent": "IfcFlowTreatmentDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcInterceptorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CYCLONIC",
+                    "GREASE",
+                    "OIL",
+                    "PETROL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcJunctionBox": {
+        "description": "A junction box is an enclosure within which cables are connected.",
+        "is_abstract": false,
+        "parent": "IfcFlowFitting",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcJunctionBoxTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "DATA",
+                    "POWER",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "UNIFORM_KNOTS",
+                    "QUASI_UNIFORM_KNOTS",
+                    "PIECEWISE_BEZIER_KNOTS",
+                    "UNSPECIFIED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcLamp": {
+        "description": "A lamp is an artificial light source such as a light bulb or tube.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcLampTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPACTFLUORESCENT",
+                    "FLUORESCENT",
+                    "HALOGEN",
+                    "HIGHPRESSUREMERCURY",
+                    "HIGHPRESSURESODIUM",
+                    "LED",
+                    "METALHALIDE",
+                    "OLED",
+                    "TUNGSTENFILAMENT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcLightFixture": {
+        "description": "A light fixture is a container that is designed for the purpose of housing one or more lamps and optionally devices that control, restrict or vary their emission.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcLightFixtureTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "POINTSOURCE",
+                    "DIRECTIONSOURCE",
+                    "SECURITYLIGHTING",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcMechanicalFastener": {
+        "description": "A mechanical fasteners connecting building elements mechanically.  A single instance of this class may represent one or many of actual mechanical fasteners, for example an array of bolts or a row of nails.",
+        "is_abstract": false,
+        "parent": "IfcElementComponent",
+        "attributes": [
+            {
+                "name": "NominalDiameter",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "NominalLength",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcMechanicalFastenerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ANCHORBOLT",
+                    "BOLT",
+                    "DOWEL",
+                    "NAIL",
+                    "NAILPLATE",
+                    "RIVET",
+                    "SCREW",
+                    "SHEARCONNECTOR",
+                    "STAPLE",
+                    "STUDSHEARCONNECTOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcMedicalDevice": {
+        "description": "A medical device is attached to a medical piping system and operates upon medical gases to perform a specific function. Medical gases include medical air, medical vacuum, oxygen, carbon dioxide, nitrogen, and nitrous oxide.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcMedicalDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRSTATION",
+                    "FEEDAIRUNIT",
+                    "OXYGENGENERATOR",
+                    "OXYGENPLANT",
+                    "VACUUMSTATION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcMember": {
+        "description": "An IfcMember is a structural member designed to carry loads between or beyond points of support. It is not required to be load bearing. The orientation of the member (being horizontal, vertical or sloped) is not relevant to its definition (in contrary to IfcBeam and IfcColumn). An IfcMember represents a linear structural element from an architectural or structural modeling point of view and shall be used if it cannot be expressed more specifically as either an IfcBeam or an IfcColumn.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BRACE",
+                    "CHORD",
+                    "COLLAR",
+                    "MEMBER",
+                    "MULLION",
+                    "PLATE",
+                    "POST",
+                    "PURLIN",
+                    "RAFTER",
+                    "STRINGER",
+                    "STRUT",
+                    "STUD",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcMemberStandardCase": {
+        "description": "The standard member, IfcMemberStandardCase, defines a member with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcMemberStandardCase handles all cases of members, that:",
+        "is_abstract": false,
+        "parent": "IfcMember",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BRACE",
+                    "CHORD",
+                    "COLLAR",
+                    "MEMBER",
+                    "MULLION",
+                    "PLATE",
+                    "POST",
+                    "PURLIN",
+                    "RAFTER",
+                    "STRINGER",
+                    "STRUT",
+                    "STUD",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcMotorConnection": {
+        "description": "A motor connection provides the means for connecting a motor as the driving device to the driven device.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcMotorConnectionTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BELTDRIVE",
+                    "COUPLING",
+                    "DIRECTDRIVE",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "NULL"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcOpeningElement": {
+        "description": "The opening element stands for opening, recess or chase, all reflecting voids. It represents a void within any element that has physical manifestation. Openings can be inserted into walls, slabs, beams, columns, or other elements.",
+        "is_abstract": false,
+        "parent": "IfcFeatureElementSubtraction",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcOpeningElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "OPENING",
+                    "RECESS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcOpeningStandardCase": {
+        "description": "The standard opening, IfcOpeningStandardCase, defines an opening with certain constraints for the dimension parameters, position within the voided element, and with certain constraints for the geometric representation. The IfcOpeningStandardCase handles all cases of openings, that:",
+        "is_abstract": false,
+        "parent": "IfcOpeningElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcOpeningElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "OPENING",
+                    "RECESS",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcOutlet": {
+        "description": "An outlet is a device installed at a point to receive one or more inserted plugs for electrical power or communications.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcOutletTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AUDIOVISUALOUTLET",
+                    "COMMUNICATIONSOUTLET",
+                    "POWEROUTLET",
+                    "DATAOUTLET",
+                    "TELEPHONEOUTLET",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPile": {
+        "description": "A pile is a slender timber, concrete, or steel structural element, driven, jetted, or otherwise embedded on end in the ground for the purpose of supporting a load. A pile is also characterized as deep foundation, where the loads are transfered to deeper subsurface layers.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPileTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BORED",
+                    "DRIVEN",
+                    "JETGROUTING",
+                    "COHESION",
+                    "FRICTION",
+                    "SUPPORT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "ConstructionType",
+                "type": "IfcPileConstructionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CAST_IN_PLACE",
+                    "COMPOSITE",
+                    "PRECAST_CONCRETE",
+                    "PREFAB_STEEL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPipeFitting": {
+        "description": "A pipe fitting is a junction or transition in a piping flow distribution system used to connect pipe segments, resulting in changes in flow characteristics to the fluid such as direction or flow rate.",
+        "is_abstract": false,
+        "parent": "IfcFlowFitting",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPipeFittingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BEND",
+                    "CONNECTOR",
+                    "ENTRY",
+                    "EXIT",
+                    "JUNCTION",
+                    "OBSTRUCTION",
+                    "TRANSITION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPipeSegment": {
+        "description": "A pipe segment is used to typically join two sections of a piping network.",
+        "is_abstract": false,
+        "parent": "IfcFlowSegment",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPipeSegmentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CULVERT",
+                    "FLEXIBLESEGMENT",
+                    "RIGIDSEGMENT",
+                    "GUTTER",
+                    "SPOOL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPlate": {
+        "description": "An IfcPlate is a planar and often flat part with constant thickness. A plate may carry loads between or beyond points of support, or provide stiffening. The location of the plate (being horizontal, vertical or sloped) is not relevant to its definition (in contrary to IfcWall and IfcSlab (as floor slab)).\u00a0",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPlateTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CURTAIN_PANEL",
+                    "SHEET",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "CURVE3D",
+                    "PCURVE_S1",
+                    "PCURVE_S2"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPlateStandardCase": {
+        "description": "The standard plate, IfcPlateStandardCase, defines a plate with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcPlateStandardCase handles all cases of plates, that:",
+        "is_abstract": false,
+        "parent": "IfcPlate",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPlateTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CURTAIN_PANEL",
+                    "SHEET",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "CURVE3D",
+                    "PCURVE_S1",
+                    "PCURVE_S2"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcProjectionElement": {
+        "description": "The projection element is a specialization of the general feature element to represent projections applied to building elements. It represents a solid attached to any element that has physical manifestation.",
+        "is_abstract": false,
+        "parent": "IfcFeatureElementAddition",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcProjectionElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcProtectiveDevice": {
+        "description": "A protective device breaks an electrical circuit when a stated electric current that passes through it is exceeded.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcProtectiveDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CIRCUITBREAKER",
+                    "EARTHLEAKAGECIRCUITBREAKER",
+                    "EARTHINGSWITCH",
+                    "FUSEDISCONNECTOR",
+                    "RESIDUALCURRENTCIRCUITBREAKER",
+                    "RESIDUALCURRENTSWITCH",
+                    "VARISTOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcProtectiveDeviceTrippingUnit": {
+        "description": "A protective device tripping unit breaks an electrical circuit at a separate breaking unit when a stated electric current that passes through the unit is exceeded.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcProtectiveDeviceTrippingUnitTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ELECTRONIC",
+                    "ELECTROMAGNETIC",
+                    "RESIDUALCURRENT",
+                    "THERMAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcProxy": {
+        "description": "IfcProxy is intended to be a kind of a container for wrapping objects which are defined by associated properties, which may or may not have a geometric representation and placement in space. A proxy may have a semantic meaning, defined by the Name attribute, and property definitions, attached through the property assignment relationship, which definition may be outside of the definitions given by the current release of IFC.",
+        "is_abstract": false,
+        "parent": "IfcProduct",
+        "attributes": [
+            {
+                "name": "ProxyType",
+                "type": "IfcObjectTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PRODUCT",
+                    "PROCESS",
+                    "CONTROL",
+                    "RESOURCE",
+                    "ACTOR",
+                    "GROUP",
+                    "PROJECT",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcPump": {
+        "description": "A pump is a device which imparts mechanical work on fluids or slurries to move them through a channel or pipeline. A typical use of a pump is to circulate chilled water or heating hot water in a building services distribution system.",
+        "is_abstract": false,
+        "parent": "IfcFlowMovingDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcPumpTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CIRCULATOR",
+                    "ENDSUCTION",
+                    "SPLITCASE",
+                    "SUBMERSIBLEPUMP",
+                    "SUMPPUMP",
+                    "VERTICALINLINE",
+                    "VERTICALTURBINE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcRailing": {
+        "description": "The railing is a frame assembly adjacent to human circulation spaces and at some space boundaries where it is used in lieu of walls or to compliment walls. Designed to aid humans, either as an optional physical support, or to prevent injury by falling.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcRailingTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "HANDRAIL",
+                    "GUARDRAIL",
+                    "BALUSTRADE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcRamp": {
+        "description": "A ramp is a vertical passageway which provides a human circulation link between one floor level and another floor level at a different elevation. It may include a landing as an intermediate floor slab. A ramp normally does not include steps.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcRampTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "STRAIGHT_RUN_RAMP",
+                    "TWO_STRAIGHT_RUN_RAMP",
+                    "QUARTER_TURN_RAMP",
+                    "TWO_QUARTER_TURN_RAMP",
+                    "HALF_TURN_RAMP",
+                    "SPIRAL_RAMP",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcRampFlight": {
+        "description": "A ramp comprises a single inclined segment, or several inclined segments that are connected by a horizontal segment, refered to as a landing. A ramp flight is the single inclined segment and part of the ramp construction. In case of single flight ramps, the ramp flight and the ramp are identical.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcRampFlightTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "STRAIGHT",
+                    "SPIRAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcReinforcingBar": {
+        "description": "A reinforcing bar is usually made of steel with manufactured deformations in the surface, and used in concrete and masonry construction to provide additional strength.  A single instance of this class may represent one or many of actual rebars, for example a row of rebars.",
+        "is_abstract": false,
+        "parent": "IfcReinforcingElement",
+        "attributes": [
+            {
+                "name": "NominalDiameter",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CrossSectionArea",
+                "type": "IfcAreaMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "BarLength",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcReinforcingBarTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ANCHORING",
+                    "EDGE",
+                    "LIGATURE",
+                    "MAIN",
+                    "PUNCHING",
+                    "RING",
+                    "SHEAR",
+                    "STUD",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "BarSurface",
+                "type": "IfcReinforcingBarSurfaceEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PLAIN",
+                    "TEXTURED"
+                ]
+            },
+            {
+                "name": "SteelGrade",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcReinforcingMesh": {
+        "description": "A reinforcing mesh is a series of longitudinal and transverse wires or bars of various gauges, arranged at right angles to each other and welded at all points of intersection; usually used for concrete slab reinforcement. It is also known as welded wire fabric. In scope are plane meshes as well as bent meshes.",
+        "is_abstract": false,
+        "parent": "IfcReinforcingElement",
+        "attributes": [
+            {
+                "name": "MeshLength",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "MeshWidth",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "LongitudinalBarNominalDiameter",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "TransverseBarNominalDiameter",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "LongitudinalBarCrossSectionArea",
+                "type": "IfcAreaMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "TransverseBarCrossSectionArea",
+                "type": "IfcAreaMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "LongitudinalBarSpacing",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "TransverseBarSpacing",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcReinforcingMeshTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "SteelGrade",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcRoof": {
+        "description": "A roof is the covering of the top part of a building, it protects the building against the effects of wheather.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcRoofTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLAT_ROOF",
+                    "SHED_ROOF",
+                    "GABLE_ROOF",
+                    "HIP_ROOF",
+                    "HIPPED_GABLE_ROOF",
+                    "GAMBREL_ROOF",
+                    "MANSARD_ROOF",
+                    "BARREL_ROOF",
+                    "RAINBOW_ROOF",
+                    "BUTTERFLY_ROOF",
+                    "PAVILION_ROOF",
+                    "DOME_ROOF",
+                    "FREEFORM",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "EXA",
+                    "PETA",
+                    "TERA",
+                    "GIGA",
+                    "MEGA",
+                    "KILO",
+                    "HECTO",
+                    "DECA",
+                    "DECI",
+                    "CENTI",
+                    "MILLI",
+                    "MICRO",
+                    "NANO",
+                    "PICO",
+                    "FEMTO",
+                    "ATTO",
+                    "AMPERE",
+                    "BECQUEREL",
+                    "CANDELA",
+                    "COULOMB",
+                    "CUBIC_METRE",
+                    "DEGREE_CELSIUS",
+                    "FARAD",
+                    "GRAM",
+                    "GRAY",
+                    "HENRY",
+                    "HERTZ",
+                    "JOULE",
+                    "KELVIN",
+                    "LUMEN",
+                    "LUX",
+                    "METRE",
+                    "MOLE",
+                    "NEWTON",
+                    "OHM",
+                    "PASCAL",
+                    "RADIAN",
+                    "SECOND",
+                    "SIEMENS",
+                    "SIEVERT",
+                    "SQUARE_METRE",
+                    "STERADIAN",
+                    "TESLA",
+                    "VOLT",
+                    "WATT",
+                    "WEBER"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSanitaryTerminal": {
+        "description": "A sanitary terminal is a fixed appliance or terminal usually supplied with water and used for drinking, cleaning or foul water disposal or that is an item of equipment directly used with such an appliance or terminal.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSanitaryTerminalTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BATH",
+                    "BIDET",
+                    "CISTERN",
+                    "SHOWER",
+                    "SINK",
+                    "SANITARYFOUNTAIN",
+                    "TOILETPAN",
+                    "URINAL",
+                    "WASHHANDBASIN",
+                    "WCSEAT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSensor": {
+        "description": "A sensor is a device that measures a physical quantity and converts it into a signal which can be read by an observer or by an instrument.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSensorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COSENSOR",
+                    "CO2SENSOR",
+                    "CONDUCTANCESENSOR",
+                    "CONTACTSENSOR",
+                    "FIRESENSOR",
+                    "FLOWSENSOR",
+                    "FROSTSENSOR",
+                    "GASSENSOR",
+                    "HEATSENSOR",
+                    "HUMIDITYSENSOR",
+                    "IDENTIFIERSENSOR",
+                    "IONCONCENTRATIONSENSOR",
+                    "LEVELSENSOR",
+                    "LIGHTSENSOR",
+                    "MOISTURESENSOR",
+                    "MOVEMENTSENSOR",
+                    "PHSENSOR",
+                    "PRESSURESENSOR",
+                    "RADIATIONSENSOR",
+                    "RADIOACTIVITYSENSOR",
+                    "SMOKESENSOR",
+                    "SOUNDSENSOR",
+                    "TEMPERATURESENSOR",
+                    "WINDSENSOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcShadingDevice": {
+        "description": "Shading devices are purpose built devices to protect from the sunlight, from natural light, or screening them from view. Shading devices can form part of the facade or can be mounted inside the building, they can be fixed or operable.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcShadingDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "JALOUSIE",
+                    "SHUTTER",
+                    "AWNING",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSite": {
+        "description": "A site is a defined area of land, possibly covered with water, on which the project construction is to be completed. A site may be used to erect, retrofit or turn down building(s), or for other construction related developments.",
+        "is_abstract": false,
+        "parent": "IfcSpatialStructureElement",
+        "attributes": [
+            {
+                "name": "RefLatitude",
+                "type": "List-IfcCompoundPlaneAngleMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "RefLongitude",
+                "type": "List-IfcCompoundPlaneAngleMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "RefElevation",
+                "type": "IfcLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "LandTitleNumber",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CompositionType",
+                "type": "IfcElementCompositionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPLEX",
+                    "ELEMENT",
+                    "PARTIAL"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSlab": {
+        "description": "A slab is a component of the construction that normally encloses a space vertically. The slab may provide the lower support (floor) or upper construction (roof slab) in any space in a building.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSlabTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLOOR",
+                    "ROOF",
+                    "LANDING",
+                    "BASESLAB",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSlabElementedCase": {
+        "description": "The IfcSlabElementedCase defines a slab with certain constraints for the provision of its components. The IfcSlabElementedCase handles all cases of slabs, that are decomposed into parts:\u00a0",
+        "is_abstract": false,
+        "parent": "IfcSlab",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSlabTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLOOR",
+                    "ROOF",
+                    "LANDING",
+                    "BASESLAB",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSlabStandardCase": {
+        "description": "The standard slab, IfcSlabStandardCase, defines a slab with certain constraints for the provision of material usage, parameters and with certain constraints for the geometric representation. The IfcSlabStandardCase handles all cases of slabs, that:",
+        "is_abstract": false,
+        "parent": "IfcSlab",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSlabTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLOOR",
+                    "ROOF",
+                    "LANDING",
+                    "BASESLAB",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSolarDevice": {
+        "description": "A solar device converts solar radiation into other energy such as electric current or thermal energy.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSolarDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SOLARCOLLECTOR",
+                    "SOLARPANEL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSpace": {
+        "description": "A space represents an area or volume bounded actually or theoretically. Spaces are areas or volumes that provide for certain functions within a building.",
+        "is_abstract": false,
+        "parent": "IfcSpatialStructureElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSpaceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SPACE",
+                    "PARKING",
+                    "GFA",
+                    "INTERNAL",
+                    "EXTERNAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "ElevationWithFlooring",
+                "type": "IfcLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CompositionType",
+                "type": "IfcElementCompositionEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPLEX",
+                    "ELEMENT",
+                    "PARTIAL"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSpaceHeater": {
+        "description": "Space heaters utilize a combination of radiation and/or natural convection using a heating source such as electricity, steam or hot water to heat a limited space or area. Examples of space heaters include radiators, convectors, baseboard and finned-tube heaters.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSpaceHeaterTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONVECTOR",
+                    "RADIATOR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSpatialZone": {
+        "description": "A spatial zone is a non-hierarchical and potentially overlapping decomposition of the project under some functional consideration. A spatial zone might be used to represent a thermal zone, a construction zone, a lighting zone, a usable area zone. A spatial zone might have its independent placement and shape representation. ",
+        "is_abstract": false,
+        "parent": "IfcSpatialElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSpatialZoneTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONSTRUCTION",
+                    "FIRESAFETY",
+                    "LIGHTING",
+                    "OCCUPANCY",
+                    "SECURITY",
+                    "THERMAL",
+                    "TRANSPORT",
+                    "VENTILATION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "LongName",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStackTerminal": {
+        "description": "A stack terminal is placed at the top of a ventilating stack (such as to prevent ingress by birds or rainwater) or rainwater pipe (to act as a collector or hopper for discharge from guttering).",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStackTerminalTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BIRDCAGE",
+                    "COWL",
+                    "RAINWATERHOPPER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStair": {
+        "description": "A stair is a vertical passageway allowing occupants to walk (step) from one floor level to another floor level at a different elevation. It may include a landing as an intermediate floor slab.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStairTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "STRAIGHT_RUN_STAIR",
+                    "TWO_STRAIGHT_RUN_STAIR",
+                    "QUARTER_WINDING_STAIR",
+                    "QUARTER_TURN_STAIR",
+                    "HALF_WINDING_STAIR",
+                    "HALF_TURN_STAIR",
+                    "TWO_QUARTER_WINDING_STAIR",
+                    "TWO_QUARTER_TURN_STAIR",
+                    "THREE_QUARTER_WINDING_STAIR",
+                    "THREE_QUARTER_TURN_STAIR",
+                    "SPIRAL_STAIR",
+                    "DOUBLE_RETURN_STAIR",
+                    "CURVED_RUN_STAIR",
+                    "TWO_CURVED_RUN_STAIR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStairFlight": {
+        "description": "A stair flight is an assembly of building components in a single \"run\" of stair steps (not interrupted by a landing). The stair steps and any stringers are included in the stair flight. A winder is also regarded a part of a stair flight.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "NumberOfRisers",
+                "type": "IfcInteger",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "NumberOfTreads",
+                "type": "IfcInteger",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "RiserHeight",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "TreadLength",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcStairFlightTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "STRAIGHT",
+                    "WINDER",
+                    "SPIRAL",
+                    "CURVED",
+                    "FREEFORM",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStructuralCurveAction": {
+        "description": "A structural curve action defines an action which is distributed over a curve. A curve action may be connected with a curve member or curve connection, or surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralAction",
+        "attributes": [
+            {
+                "name": "ProjectedOrTrue",
+                "type": "IfcProjectedOrTrueLengthEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PROJECTED_LENGTH",
+                    "TRUE_LENGTH"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralCurveActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "LINEAR",
+                    "POLYGONAL",
+                    "EQUIDISTANT",
+                    "SINUS",
+                    "PARABOLA",
+                    "DISCRETE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "DestabilizingLoad",
+                "type": "IfcBoolean",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralCurveConnection": {
+        "description": "Instances of IfcStructuralCurveConnection describe edge 'nodes', i.e. edges where two or more surface members are joined, or edge supports.  Edge curves may be straight or curved.",
+        "is_abstract": false,
+        "parent": "IfcStructuralConnection",
+        "attributes": []
+    },
+    "IfcStructuralCurveMember": {
+        "description": "Instances of IfcStructuralCurveMember describe edge members, i.e. structural analysis idealizations of beams, columns, rods etc..  Curve members may be straight or curved.",
+        "is_abstract": false,
+        "parent": "IfcStructuralMember",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralCurveMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "RIGID_JOINED_MEMBER",
+                    "PIN_JOINED_MEMBER",
+                    "CABLE",
+                    "TENSION_MEMBER",
+                    "COMPRESSION_MEMBER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralCurveMemberVarying": {
+        "description": "This entity describes edge members with varying profile properties.  Each instance of IfcStructuralCurveMemberVarying is composed of two or more instances of IfcStructuralCurveMember with differing profile properties.  These subordinate members relate to the instance of IfcStructuralCurveMemberVarying by IfcRelAggregates.",
+        "is_abstract": false,
+        "parent": "IfcStructuralCurveMember",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralCurveMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "RIGID_JOINED_MEMBER",
+                    "PIN_JOINED_MEMBER",
+                    "CABLE",
+                    "TENSION_MEMBER",
+                    "COMPRESSION_MEMBER",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralCurveReaction": {
+        "description": "This entity defines a reaction which occurs distributed over a curve. A curve reaction may be connected with a curve member or curve connection, or surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralReaction",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralCurveActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "LINEAR",
+                    "POLYGONAL",
+                    "EQUIDISTANT",
+                    "SINUS",
+                    "PARABOLA",
+                    "DISCRETE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralLinearAction": {
+        "description": "This entity defines an action with constant value which is distributed over a curve.",
+        "is_abstract": false,
+        "parent": "IfcStructuralCurveAction",
+        "attributes": [
+            {
+                "name": "ProjectedOrTrue",
+                "type": "IfcProjectedOrTrueLengthEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PROJECTED_LENGTH",
+                    "TRUE_LENGTH"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralCurveActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "LINEAR",
+                    "POLYGONAL",
+                    "EQUIDISTANT",
+                    "SINUS",
+                    "PARABOLA",
+                    "DISCRETE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "DestabilizingLoad",
+                "type": "IfcBoolean",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralPlanarAction": {
+        "description": "This entity defines an action with constant value which is distributed over a surface.",
+        "is_abstract": false,
+        "parent": "IfcStructuralSurfaceAction",
+        "attributes": [
+            {
+                "name": "ProjectedOrTrue",
+                "type": "IfcProjectedOrTrueLengthEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PROJECTED_LENGTH",
+                    "TRUE_LENGTH"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralSurfaceActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "BILINEAR",
+                    "DISCRETE",
+                    "ISOCONTOUR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "DestabilizingLoad",
+                "type": "IfcBoolean",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralPointAction": {
+        "description": "This entity defines an action which acts on a point. A point action is typically connected with a point connection. It may also be connected with a curve member or curve connection, or surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralAction",
+        "attributes": [
+            {
+                "name": "DestabilizingLoad",
+                "type": "IfcBoolean",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralPointConnection": {
+        "description": "Instances of IfcStructuralPointConnection describe structural nodes or point supports.",
+        "is_abstract": false,
+        "parent": "IfcStructuralConnection",
+        "attributes": []
+    },
+    "IfcStructuralPointReaction": {
+        "description": "This entity defines a reaction which occurs at a point. A point reaction is typically connected with a point connection. It may also be connected with a curve member or curve connection, or surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralReaction",
+        "attributes": [
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralSurfaceAction": {
+        "description": "This entity defines an action which is distributed over a surface. A surface action may be connected with a surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralAction",
+        "attributes": [
+            {
+                "name": "ProjectedOrTrue",
+                "type": "IfcProjectedOrTrueLengthEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PROJECTED_LENGTH",
+                    "TRUE_LENGTH"
+                ]
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralSurfaceActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "BILINEAR",
+                    "DISCRETE",
+                    "ISOCONTOUR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "DestabilizingLoad",
+                "type": "IfcBoolean",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcStructuralSurfaceConnection": {
+        "description": "Instances of IfcStructuralSurfaceConnection describe face 'nodes', i.e. faces where two or more surface members are joined, or face supports.  Face surfaces may be planar or curved.",
+        "is_abstract": false,
+        "parent": "IfcStructuralConnection",
+        "attributes": []
+    },
+    "IfcStructuralSurfaceMember": {
+        "description": "Instances of IfcStructuralSurfaceMember describe face members, that is, structural analysis idealizations of slabs, walls, and shells.  Surface members may be planar or curved.",
+        "is_abstract": false,
+        "parent": "IfcStructuralMember",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralSurfaceMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BENDING_ELEMENT",
+                    "MEMBRANE_ELEMENT",
+                    "SHELL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Thickness",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStructuralSurfaceMemberVarying": {
+        "description": "This entity describes surface members with varying section properties.  The properties are provided by means of Pset_StructuralSurfaceMemberVaryingThickness via IfcRelDefinesByProperties, or by means of aggregation:  An instance of IfcStructuralSurfaceMemberVarying may be composed of two or more instances of IfcStructuralSurfaceMember with differing section properties.  These subordinate members relate to the instance of IfcStructuralSurfaceMemberVarying by IfcRelAggregates.",
+        "is_abstract": false,
+        "parent": "IfcStructuralSurfaceMember",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralSurfaceMemberTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BENDING_ELEMENT",
+                    "MEMBRANE_ELEMENT",
+                    "SHELL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Thickness",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcStructuralSurfaceReaction": {
+        "description": "This entity defines a reaction which occurs distributed over a surface.  A surface reaction may be connected with a surface member or surface connection.",
+        "is_abstract": false,
+        "parent": "IfcStructuralReaction",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcStructuralSurfaceActivityTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONST",
+                    "BILINEAR",
+                    "DISCRETE",
+                    "ISOCONTOUR",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "GlobalOrLocal",
+                "type": "IfcGlobalOrLocalEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "GLOBAL_COORDS",
+                    "LOCAL_COORDS"
+                ]
+            }
+        ]
+    },
+    "IfcSurfaceFeature": {
+        "description": "A surface feature is a modification at (onto, or into) of the surface of an element.  Parts of the surface of the entire surface may be affected.  The volume and mass of the element may be increased, remain unchanged, or be decreased by the surface feature, depending on manufacturing technology.  However, any increase or decrease of volume is small compared to the total volume of the element.",
+        "is_abstract": false,
+        "parent": "IfcFeatureElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSurfaceFeatureTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "MARK",
+                    "TAG",
+                    "TREATMENT",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "POSITIVE",
+                    "NEGATIVE",
+                    "BOTH"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSwitchingDevice": {
+        "description": "A switch is used in a cable distribution system (electrical circuit) to control or modulate the flow of electricity.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSwitchingDeviceTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CONTACTOR",
+                    "DIMMERSWITCH",
+                    "EMERGENCYSTOP",
+                    "KEYPAD",
+                    "MOMENTARYSWITCH",
+                    "SELECTORSWITCH",
+                    "STARTER",
+                    "SWITCHDISCONNECTOR",
+                    "TOGGLESWITCH",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcSystemFurnitureElement": {
+        "description": "A system furniture element defines components of modular furniture which are not directly placed in a building structure but aggregated inside furniture.",
+        "is_abstract": false,
+        "parent": "IfcFurnishingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcSystemFurnitureElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "PANEL",
+                    "WORKSURFACE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTank": {
+        "description": "A tank is a vessel or container in which a fluid or gas is stored for later use.",
+        "is_abstract": false,
+        "parent": "IfcFlowStorageDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTankTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BASIN",
+                    "BREAKPRESSURE",
+                    "EXPANSION",
+                    "FEEDANDEXPANSION",
+                    "PRESSUREVESSEL",
+                    "STORAGE",
+                    "VESSEL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTendon": {
+        "description": "A tendon is a steel element such as a wire, cable, bar, rod, or strand used to impart prestress to concrete when the element is tensioned.",
+        "is_abstract": false,
+        "parent": "IfcReinforcingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTendonTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "BAR",
+                    "COATED",
+                    "STRAND",
+                    "WIRE",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "LEFT",
+                    "RIGHT",
+                    "UP",
+                    "DOWN"
+                ]
+            },
+            {
+                "name": "NominalDiameter",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "CrossSectionArea",
+                "type": "IfcAreaMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "TensionForce",
+                "type": "IfcForceMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PreStress",
+                "type": "IfcPressureMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "FrictionCoefficient",
+                "type": "IfcNormalisedRatioMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "AnchorageSlip",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "MinCurvatureRadius",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "SteelGrade",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTendonAnchor": {
+        "description": "A tendon anchor is the end connection for tendons in prestressed or posttensioned concrete.",
+        "is_abstract": false,
+        "parent": "IfcReinforcingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTendonAnchorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COUPLER",
+                    "FIXED_END",
+                    "TENSIONING_END",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "SteelGrade",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTransformer": {
+        "description": "A transformer is an inductive stationary device that transfers electrical energy from one circuit to another.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTransformerTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CURRENT",
+                    "FREQUENCY",
+                    "INVERTER",
+                    "RECTIFIER",
+                    "VOLTAGE",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "DISCONTINUOUS",
+                    "CONTINUOUS",
+                    "CONTSAMEGRADIENT",
+                    "CONTSAMEGRADIENTSAMECURVATURE"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTransportElement": {
+        "description": "       A transport element is a generalization of all transport related objects that move       people, animals or goods within a building or building       complex. The IfcTransportElement defines the       occurrence of a transport element, that (if given), is       expressed by the IfcTransportElementType.     ",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTransportElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ELEVATOR",
+                    "ESCALATOR",
+                    "MOVINGWALKWAY",
+                    "CRANEWAY",
+                    "LIFTINGGEAR",
+                    "USERDEFINED",
+                    "NOTDEFINED",
+                    "CARTESIAN",
+                    "PARAMETER",
+                    "UNSPECIFIED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcTubeBundle": {
+        "description": "A tube bundle is a device consisting of tubes and bundles of tubes used for heat transfer and contained typically within other energy conversion devices, such as a chiller or coil.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcTubeBundleTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FINNED",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcUnitaryControlElement": {
+        "description": "A unitary control element combines a number of control components into a single product, such as a thermostat or humidistat.",
+        "is_abstract": false,
+        "parent": "IfcDistributionControlElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcUnitaryControlElementTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "ALARMPANEL",
+                    "CONTROLPANEL",
+                    "GASDETECTIONPANEL",
+                    "INDICATORPANEL",
+                    "MIMICPANEL",
+                    "HUMIDISTAT",
+                    "THERMOSTAT",
+                    "WEATHERSTATION",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcUnitaryEquipment": {
+        "description": "Unitary equipment typically combine a number of components into a single product, such as air handlers, pre-packaged rooftop air-conditioning units, heat pumps, and split systems.",
+        "is_abstract": false,
+        "parent": "IfcEnergyConversionDevice",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcUnitaryEquipmentTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRHANDLER",
+                    "AIRCONDITIONINGUNIT",
+                    "DEHUMIDIFIER",
+                    "SPLITSYSTEM",
+                    "ROOFTOPUNIT",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcValve": {
+        "description": "A valve is used in a building services piping distribution system to control or modulate the flow of the fluid.",
+        "is_abstract": false,
+        "parent": "IfcFlowController",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcValveTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "AIRRELEASE",
+                    "ANTIVACUUM",
+                    "CHANGEOVER",
+                    "CHECK",
+                    "COMMISSIONING",
+                    "DIVERTING",
+                    "DRAWOFFCOCK",
+                    "DOUBLECHECK",
+                    "DOUBLEREGULATING",
+                    "FAUCET",
+                    "FLUSHING",
+                    "GASCOCK",
+                    "GASTAP",
+                    "ISOLATING",
+                    "MIXING",
+                    "PRESSUREREDUCING",
+                    "PRESSURERELIEF",
+                    "REGULATING",
+                    "SAFETYCUTOFF",
+                    "STEAMTRAP",
+                    "STOPCOCK",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcVibrationIsolator": {
+        "description": "A vibration isolator is a device used to minimize the effects of vibration transmissibility in a building.",
+        "is_abstract": false,
+        "parent": "IfcElementComponent",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcVibrationIsolatorTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "COMPRESSION",
+                    "SPRING",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcVirtualElement": {
+        "description": "A virtual element is a special element used to provide imaginary boundaries, such as between two adjacent, but not separated, spaces. Virtual elements are usually not displayed and does not have quantities and other measures. Therefore IfcVirtualElement does not have material information and quantities attached.",
+        "is_abstract": false,
+        "parent": "IfcElement",
+        "attributes": [
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcVoidingFeature": {
+        "description": "A voiding feature is a modification of an element which reduces its volume.  Such a feature may be manufactured in different ways, for example by cutting, drilling, or milling of members made of various materials, or by inlays into the formwork of cast members made of materials such as concrete.",
+        "is_abstract": false,
+        "parent": "IfcFeatureElementSubtraction",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcVoidingFeatureTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "CUTOUT",
+                    "NOTCH",
+                    "HOLE",
+                    "MITER",
+                    "CHAMFER",
+                    "EDGE",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWall": {
+        "description": "The wall represents a vertical construction that bounds or subdivides spaces. Wall are usually vertical, or nearly vertical, planar elements, often designed to bear structural loads. A wall is however\u00a0not required to be load bearing.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcWallTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "MOVABLE",
+                    "PARAPET",
+                    "PARTITIONING",
+                    "PLUMBINGWALL",
+                    "SHEAR",
+                    "SOLIDWALL",
+                    "STANDARD",
+                    "POLYGONAL",
+                    "ELEMENTEDWALL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWallElementedCase": {
+        "description": "The IfcWallElementedCase defines a wall with certain constraints for the provision of its components. The IfcWallElementedCase handles all cases of walls, that are decomposed into parts: ",
+        "is_abstract": false,
+        "parent": "IfcWall",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcWallTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "MOVABLE",
+                    "PARAPET",
+                    "PARTITIONING",
+                    "PLUMBINGWALL",
+                    "SHEAR",
+                    "SOLIDWALL",
+                    "STANDARD",
+                    "POLYGONAL",
+                    "ELEMENTEDWALL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWallStandardCase": {
+        "description": "The IfcWallStandardCase defines a wall with certain constraints for the provision of parameters and with certain constraints for the geometric representation. The IfcWallStandardCase handles all cases of walls, that are extruded vertically:",
+        "is_abstract": false,
+        "parent": "IfcWall",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcWallTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "MOVABLE",
+                    "PARAPET",
+                    "PARTITIONING",
+                    "PLUMBINGWALL",
+                    "SHEAR",
+                    "SOLIDWALL",
+                    "STANDARD",
+                    "POLYGONAL",
+                    "ELEMENTEDWALL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWasteTerminal": {
+        "description": "A waste terminal has the purpose of collecting or intercepting waste from one or more sanitary terminals or other fluid waste generating equipment and discharging it into a single waste/drainage system.",
+        "is_abstract": false,
+        "parent": "IfcFlowTerminal",
+        "attributes": [
+            {
+                "name": "PredefinedType",
+                "type": "IfcWasteTerminalTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "FLOORTRAP",
+                    "FLOORWASTE",
+                    "GULLYSUMP",
+                    "GULLYTRAP",
+                    "ROOFDRAIN",
+                    "WASTEDISPOSALUNIT",
+                    "WASTETRAP",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWindow": {
+        "description": "The window is a building element that is predominately used to provide natural light and fresh air. It includes vertical opening but also horizontal opening such as skylights or light domes. It includes constructions with swinging, pivoting, sliding, or revolving panels and fixed panels. A window consists of a lining and one or several panels.",
+        "is_abstract": false,
+        "parent": "IfcBuildingElement",
+        "attributes": [
+            {
+                "name": "OverallHeight",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "OverallWidth",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcWindowTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "WINDOW",
+                    "SKYLIGHT",
+                    "LIGHTDOME",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "PartitioningType",
+                "type": "IfcWindowTypePartitioningEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SINGLE_PANEL",
+                    "DOUBLE_PANEL_VERTICAL",
+                    "DOUBLE_PANEL_HORIZONTAL",
+                    "TRIPLE_PANEL_VERTICAL",
+                    "TRIPLE_PANEL_BOTTOM",
+                    "TRIPLE_PANEL_TOP",
+                    "TRIPLE_PANEL_LEFT",
+                    "TRIPLE_PANEL_RIGHT",
+                    "TRIPLE_PANEL_HORIZONTAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "UserDefinedPartitioningType",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    },
+    "IfcWindowStandardCase": {
+        "description": "The standard window, IfcWindowStandardCase, defines a window with certain constraints for the provision of operation types, opening directions, frame and lining parameters, construction types and with certain constraints for the geometric representation. The IfcWindowStandardCase handles all cases of windows, that:",
+        "is_abstract": false,
+        "parent": "IfcWindow",
+        "attributes": [
+            {
+                "name": "OverallHeight",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "OverallWidth",
+                "type": "IfcPositiveLengthMeasure",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "PredefinedType",
+                "type": "IfcWindowTypeEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "WINDOW",
+                    "SKYLIGHT",
+                    "LIGHTDOME",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "PartitioningType",
+                "type": "IfcWindowTypePartitioningEnum",
+                "is_enum": true,
+                "enum_values": [
+                    "SINGLE_PANEL",
+                    "DOUBLE_PANEL_VERTICAL",
+                    "DOUBLE_PANEL_HORIZONTAL",
+                    "TRIPLE_PANEL_VERTICAL",
+                    "TRIPLE_PANEL_BOTTOM",
+                    "TRIPLE_PANEL_TOP",
+                    "TRIPLE_PANEL_LEFT",
+                    "TRIPLE_PANEL_RIGHT",
+                    "TRIPLE_PANEL_HORIZONTAL",
+                    "USERDEFINED",
+                    "NOTDEFINED"
+                ]
+            },
+            {
+                "name": "UserDefinedPartitioningType",
+                "type": "IfcLabel",
+                "is_enum": false,
+                "enum_values": []
+            },
+            {
+                "name": "Tag",
+                "type": "IfcIdentifier",
+                "is_enum": false,
+                "enum_values": []
+            }
+        ]
+    }
+}
diff --git a/www/style.css b/www/style.css
new file mode 100644 (file)
index 0000000..3609a8e
--- /dev/null
@@ -0,0 +1,116 @@
+html {
+    background-color: #FFFFFF;
+    font-family: 'Open Sans', sans-serif;
+    color: #444;
+    margin: 0px;
+    padding: 0px;
+}
+
+header {
+    font-family: 'Comfortaa';
+    background-color: #424B54;
+    height: 100px;
+    margin: 0px;
+}
+
+section {
+    background-color: #FFFFFF;
+    max-width: 1200px;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+section#blurb {
+    background-color: #EEE;
+    height: 50px;
+    padding-left: 20px;
+    padding-right: 20px;
+}
+
+section#blurb p {
+    line-height: 50px;
+    margin: 0px;
+    padding: 0px;
+    display: inline-block;
+    float: left;
+}
+
+section#blurb a {
+    float: right;
+    line-height: 50px;
+}
+
+nav {
+    float: right;
+}
+
+nav ul {
+    margin: 0px;
+    padding: 0px;
+}
+
+nav ul li {
+    display: inline-block;
+    height: 100px;
+    border-left: 1px solid #333333;
+    padding-left: 30px;
+    padding-right: 30px;
+    line-height: 100px;
+    float: left;
+}
+
+nav ul li a {
+    color: #FFF;
+    text-decoration: none;
+}
+
+nav ul li a:hover {
+    color: #AAA;
+}
+
+body {
+    margin: 0px;
+    padding: 0px;
+}
+
+h1 {
+    color: #93A8AC;
+    display: inline-block;
+    float: left;
+    line-height: 100px;
+    padding: 0px;
+    margin: 0px;
+    margin-left: 30px;
+}
+
+a {
+    color: #9B6A6C;
+}
+
+a:hover {
+    color: #E2B4BD;
+}
+
+code {
+    font-family: 'Inconsolata';
+}
+
+#search-query {
+    border: 2px solid #EEE;
+    border-radius: 10px;
+    height: 30px;
+    width: 500px;
+    padding-left: 10px;
+    padding-right: 10px;
+}
+
+span.highlight {
+    background-color: #fbeea2;
+}
+
+footer {
+    padding-left: 20px;
+    padding-right: 20px;
+    border-top: 1px solid #eee;
+    line-height: 50px;
+}