diff --git a/src/Mod/Arch/ArchBuildingPart.py b/src/Mod/Arch/ArchBuildingPart.py
index 9d942f56f7..9c86c826aa 100644
--- a/src/Mod/Arch/ArchBuildingPart.py
+++ b/src/Mod/Arch/ArchBuildingPart.py
@@ -22,7 +22,7 @@
#* *
#***************************************************************************
-import FreeCAD,Draft,ArchCommands,DraftVecUtils,sys
+import FreeCAD,Draft,ArchCommands,DraftVecUtils,sys,ArchIFC
if FreeCAD.GuiUp:
import FreeCADGui
from PySide import QtCore, QtGui
@@ -320,6 +320,7 @@ class BuildingPart:
self.setProperties(obj)
def setProperties(self,obj):
+ ArchIFC.setProperties(obj)
pl = obj.PropertiesList
if not "Height" in pl:
@@ -362,7 +363,7 @@ class BuildingPart:
self.oldPlacement = FreeCAD.Placement(obj.Placement)
def onChanged(self,obj,prop):
-
+ ArchIFC.onChanged(obj, prop)
if prop == "Height":
for child in obj.Group:
if Draft.getType(child) in ["Wall","Structure"]:
diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py
index a953fc202d..f511b3436a 100644
--- a/src/Mod/Arch/ArchComponent.py
+++ b/src/Mod/Arch/ArchComponent.py
@@ -25,62 +25,7 @@ __title__="FreeCAD Arch Component"
__author__ = "Yorik van Havre"
__url__ = "http://www.freecadweb.org"
-# IFC types
-
-IFCTYPES = ["IfcActuator", "IfcAirTerminal", "IfcAirTerminalBox", "IfcAirToAirHeatRecovery",
-"IfcAlarm", "IfcAnnotation", "IfcAudioVisualAppliance", "IfcBeam", "IfcBeamStandardCase",
-"IfcBoiler", "IfcBuilding", "IfcBuildingElement", "IfcBuildingElementPart", "IfcBuildingElementProxy",
-"IfcBuildingStorey", "IfcBurner", "IfcCableCarrierFitting", "IfcCableCarrierSegment",
-"IfcCableFitting", "IfcCableSegment", "IfcChiller", "IfcChimney", "IfcCivilElement",
-"IfcCoil", "IfcColumn", "IfcColumnStandardCase", "IfcCommunicationsAppliance", "IfcCompressor",
-"IfcCondenser", "IfcController", "IfcCooledBeam", "IfcCoolingTower", "IfcCovering",
-"IfcCurtainWall", "IfcDamper", "IfcDiscreteAccessory", "IfcDistributionChamberElement",
-"IfcDistributionControlElement", "IfcDistributionElement", "IfcDistributionFlowElement",
-"IfcDistributionPort", "IfcDoor", "IfcDoorStandardCase", "IfcDuctFitting", "IfcDuctSegment",
-"IfcDuctSilencer", "IfcElectricAppliance", "IfcElectricDistributionBoard", "IfcElectricFlowStorageDevice",
-"IfcElectricGenerator", "IfcElectricMotor", "IfcElectricTimeControl",
-"IfcElementAssembly", "IfcElementComponent", "IfcEnergyConversionDevice", "IfcEngine",
-"IfcEvaporativeCooler", "IfcEvaporator", "IfcExternalSpatialElement", "IfcExternalSpatialStructureElement",
-"IfcFan", "IfcFastener", "IfcFeatureElement", "IfcFeatureElementAddition", "IfcFeatureElementSubtraction",
-"IfcFilter", "IfcFireSuppressionTerminal", "IfcFlowController", "IfcFlowFitting", "IfcFlowInstrument",
-"IfcFlowMeter", "IfcFlowMovingDevice", "IfcFlowSegment", "IfcFlowStorageDevice", "IfcFlowTerminal",
-"IfcFlowTreatmentDevice", "IfcFooting", "IfcFurnishingElement", "IfcFurniture", "IfcGeographicElement",
-"IfcGrid", "IfcHeatExchanger", "IfcHumidifier", "IfcInterceptor", "IfcJunctionBox", "IfcLamp",
-"IfcLightFixture", "IfcMechanicalFastener", "IfcMedicalDevice", "IfcMember", "IfcMemberStandardCase",
-"IfcMotorConnection", "IfcOpeningElement", "IfcOpeningStandardCase", "IfcOutlet", "IfcPile",
-"IfcPipeFitting", "IfcPipeSegment", "IfcPlate", "IfcPlateStandardCase",
-"IfcProjectionElement", "IfcProtectiveDevice", "IfcProtectiveDeviceTrippingUnit",
-"IfcProxy", "IfcPump", "IfcRailing", "IfcRamp", "IfcRampFlight", "IfcReinforcingBar",
-"IfcReinforcingMesh", "IfcRoof", "IfcSanitaryTerminal",
-"IfcSensor", "IfcShadingDevice", "IfcSite", "IfcSlab", "IfcSlabElementedCase", "IfcSlabStandardCase",
-"IfcSolarDevice", "IfcSpace", "IfcSpaceHeater",
-"IfcSpatialZone", "IfcStackTerminal", "IfcStair", "IfcStairFlight",
-"IfcStructuralCurveAction",
-"IfcStructuralCurveConnection", "IfcStructuralCurveMember", "IfcStructuralCurveMemberVarying",
-"IfcStructuralCurveReaction", "IfcStructuralLinearAction",
-"IfcStructuralPlanarAction", "IfcStructuralPointAction",
-"IfcStructuralPointConnection", "IfcStructuralPointReaction",
-"IfcStructuralSurfaceAction", "IfcStructuralSurfaceConnection", "IfcStructuralSurfaceMember",
-"IfcStructuralSurfaceMemberVarying", "IfcStructuralSurfaceReaction", "IfcSurfaceFeature",
-"IfcSwitchingDevice", "IfcSystemFurnitureElement", "IfcTank", "IfcTendon", "IfcTendonAnchor",
-"IfcTransformer", "IfcTransportElement", "IfcTubeBundle", "IfcUnitaryControlElement",
-"IfcUnitaryEquipment", "IfcValve", "IfcVibrationIsolator", "IfcVirtualElement", "IfcVoidingFeature",
-"IfcWall", "IfcWallElementedCase", "IfcWallStandardCase", "IfcWasteTerminal", "IfcWindow",
-"IfcWindowStandardCase"]
-
-# Possible roles for FreeCAD BIM objects
-IfcRoles = ['Undefined']+[''.join(map(lambda x: x if x.islower() else " "+x, t[3:]))[1:] for t in IFCTYPES]
-
-# Property types
-SimplePropertyTypes = ["IfcInteger","IfcReal","IfcBoolean","IfcIdentifier","IfcText","IfcLabel","IfcLogical"]
-MeasurePropertyTypes = ["IfcVolumeMeasure","IfcTimeMeasure","IfcThermodynamicTemperatureMeasure","IfcSolidAngleMeasure",
- "IfcPositiveRatioMeasure","IfcRatioMeasure","IfcPositivePlaneAngleMeasure","IfcPlaneAngleMeasure",
- "IfcParameterValue","IfcNumericMeasure","IfcMassMeasure","IfcPositiveLengthMeasure",
- "IfcLengthMeasure","IfcElectricCurrentMeasure","IfcDescriptiveMeasure","IfcCountMeasure",
- "IfcContextDependentMeasure","IfcAreaMeasure","IfcAmountOfSubstanceMeasure",
- "IfcLuminousIntensityMeasure","IfcNormalisedRatioMeasure","IfcComplexNumber"]
-
-import FreeCAD,Draft,ArchCommands,math,sys
+import FreeCAD,Draft,ArchCommands,math,sys,json,os,ArchIFC,ArchIFCSchema
from FreeCAD import Vector
if FreeCAD.GuiUp:
import FreeCADGui
@@ -102,7 +47,7 @@ else:
# This module provides the base Arch component class, that
# is shared by all of the Arch BIM objects
-
+IfcRoles = ['Undefined']+[''.join(map(lambda x: x if x.islower() else " "+x, t[3:]))[1:] for t in ArchIFCSchema.IfcProducts.keys()]
def convertOldComponents(objs=[]):
@@ -222,7 +167,7 @@ class Component:
self.Type = "Component"
def setProperties(self,obj):
-
+ ArchIFC.setProperties(obj)
pl = obj.PropertiesList
if not "Base" in pl:
obj.addProperty("App::PropertyLink","Base","Component",QT_TRANSLATE_NOOP("App::Property","The base object this component is built upon"))
@@ -238,8 +183,6 @@ class Component:
obj.addProperty("App::PropertyString","Tag","Component",QT_TRANSLATE_NOOP("App::Property","An optional tag for this component"))
if not "StandardCode" in pl:
obj.addProperty("App::PropertyString","StandardCode","Component",QT_TRANSLATE_NOOP("App::Property","An optional standard (OmniClass, etc...) code for this component"))
- if not "IfcAttributes" in pl:
- obj.addProperty("App::PropertyMap","IfcAttributes","Component",QT_TRANSLATE_NOOP("App::Property","Custom IFC properties and attributes"))
if not "Material" in pl:
obj.addProperty("App::PropertyLink","Material","Component",QT_TRANSLATE_NOOP("App::Property","A material for this object"))
if "BaseMaterial" in pl:
@@ -317,6 +260,7 @@ class Component:
self.oldPlacement = FreeCAD.Placement(obj.Placement)
def onChanged(self,obj,prop):
+ ArchIFC.onChanged(obj, prop)
if prop == "Placement":
if hasattr(self,"oldPlacement"):
@@ -1255,10 +1199,10 @@ class ComponentTaskPanel:
return
if not isinstance(self.obj.IfcProperties,dict):
return
- import Arch_rc,csv,os
+ import Arch_rc, csv, os, ArchIFCSchema
# get presets
- self.ptypes = SimplePropertyTypes + MeasurePropertyTypes
+ self.ptypes = ArchIFCSchema.IfcTypes.keys()
self.plabels = [''.join(map(lambda x: x if x.islower() else " "+x, t[3:]))[1:] for t in self.ptypes]
self.psetdefs = {}
psetspath = os.path.join(FreeCAD.getResourceDir(),"Mod","Arch","Presets","pset_definitions.csv")
@@ -1286,8 +1230,8 @@ class ComponentTaskPanel:
self.ifcEditor.comboPset.addItems([QtGui.QApplication.translate("Arch", "Add property set...", None),
QtGui.QApplication.translate("Arch", "New...", None)]+self.psetkeys)
# set UUID
- if "IfcUID" in self.obj.IfcAttributes:
- self.ifcEditor.labelUUID.setText(self.obj.IfcAttributes["IfcUID"])
+ if "IfcUID" in self.obj.IfcData:
+ self.ifcEditor.labelUUID.setText(self.obj.IfcData["IfcUID"])
# fill the tree
psets = {}
for pname,value in self.obj.IfcProperties.items():
@@ -1333,10 +1277,10 @@ class ComponentTaskPanel:
QtCore.QObject.connect(self.ifcEditor.buttonDelete, QtCore.SIGNAL("clicked()"), self.removeIfcProperty)
self.ifcEditor.treeProperties.setSortingEnabled(True)
# set checkboxes
- if "FlagForceBrep" in self.obj.IfcAttributes:
- self.ifcEditor.checkBrep.setChecked(self.obj.IfcAttributes["FlagForceBrep"] == "True")
- if "FlagParametric" in self.obj.IfcAttributes:
- self.ifcEditor.checkParametric.setChecked(self.obj.IfcAttributes["FlagParametric"] == "True")
+ if "FlagForceBrep" in self.obj.IfcData:
+ self.ifcEditor.checkBrep.setChecked(self.obj.IfcData["FlagForceBrep"] == "True")
+ if "FlagParametric" in self.obj.IfcData:
+ self.ifcEditor.checkParametric.setChecked(self.obj.IfcData["FlagParametric"] == "True")
self.ifcEditor.show()
def acceptIfcProperties(self):
@@ -1358,16 +1302,16 @@ class ComponentTaskPanel:
else:
# keys cannot be unicode
ifcdict[prop.encode("utf8")] = pset+";;"+ptype+";;"+pvalue
- ifcattrs = self.obj.IfcAttributes
- ifcattrs["IfcUID"] = self.ifcEditor.labelUUID.text()
- ifcattrs["FlagForceBrep"] = str(self.ifcEditor.checkBrep.isChecked())
- ifcattrs["FlagParametric"] = str(self.ifcEditor.checkParametric.isChecked())
- if (ifcdict != self.obj.IfcProperties) or (ifcattrs != self.obj.IfcAttributes):
+ ifcData = self.obj.IfcData
+ ifcData["IfcUID"] = self.ifcEditor.labelUUID.text()
+ ifcData["FlagForceBrep"] = str(self.ifcEditor.checkBrep.isChecked())
+ ifcData["FlagParametric"] = str(self.ifcEditor.checkParametric.isChecked())
+ if (ifcdict != self.obj.IfcProperties) or (ifcData != self.obj.IfcData):
FreeCAD.ActiveDocument.openTransaction("Change Ifc Properties")
if ifcdict != self.obj.IfcProperties:
self.obj.IfcProperties = ifcdict
- if ifcattrs != self.obj.IfcAttributes:
- self.obj.IfcAttributes = ifcattrs
+ if ifcData != self.obj.IfcData:
+ self.obj.IfcData = ifcData
FreeCAD.ActiveDocument.commitTransaction()
del self.ifcEditor
@@ -1531,10 +1475,3 @@ if FreeCAD.GuiUp:
else:
model.setData(index,editor.text())
self.dialog.update()
-
-
-
-
-
-
-
diff --git a/src/Mod/Arch/ArchIFC.py b/src/Mod/Arch/ArchIFC.py
new file mode 100644
index 0000000000..15d025b8d1
--- /dev/null
+++ b/src/Mod/Arch/ArchIFC.py
@@ -0,0 +1,109 @@
+import FreeCAD, os, json
+
+if FreeCAD.GuiUp:
+ from PySide.QtCore import QT_TRANSLATE_NOOP
+
+def setProperties(obj):
+ if not "IfcData" in obj.PropertiesList:
+ obj.addProperty("App::PropertyMap","IfcData","Component",QT_TRANSLATE_NOOP("App::Property","IFC data"))
+ migrateDeprecatedAttributes(obj)
+
+def onChanged(obj, prop):
+ if prop == "IfcRole":
+ setupIfcAttributes(obj)
+ if obj.getGroupOfProperty(prop) == "IFC Attributes":
+ setObjIfcAttributeValue(obj, prop, obj.getPropertyByName(prop))
+
+def getIfcProduct(IfcRole):
+ import ArchIFCSchema
+ name = "Ifc" + IfcRole.replace(" ", "")
+ if name in ArchIFCSchema.IfcProducts:
+ return ArchIFCSchema.IfcProducts[name]
+
+def getIfcProductAttribute(ifcProduct, name):
+ for attribute in ifcProduct["attributes"]:
+ if attribute["name"].replace(' ', '') == name:
+ return attribute
+ return None
+
+def setupIfcAttributes(obj):
+ ifcProduct = getIfcProduct(obj.IfcRole)
+ if ifcProduct is None:
+ return
+ purgeUnusedIfcAttributesFromPropertiesList(ifcProduct, obj)
+ addIfcProductAttributesToObj(ifcProduct, obj)
+
+def addIfcProductAttributesToObj(ifcProduct, obj):
+ for attribute in ifcProduct["attributes"]:
+ if attribute["name"] in obj.PropertiesList \
+ or attribute["name"] == "RefLatitude" \
+ or attribute["name"] == "RefLongitude":
+ continue
+ addIfcProductAttribute(obj, attribute)
+ addIfcAttributeValueExpressions(obj, attribute)
+
+def addIfcProductAttribute(obj, attribute):
+ IfcData = obj.IfcData
+ if "attributes" not in IfcData:
+ IfcData["attributes"] = "{}"
+ IfcAttributes = json.loads(IfcData["attributes"])
+ IfcAttributes[attribute["name"]] = attribute
+ IfcData["attributes"] = json.dumps(IfcAttributes)
+ obj.IfcData = IfcData
+ if attribute["is_enum"]:
+ obj.addProperty("App::PropertyEnumeration", attribute["name"], "IFC Attributes", QT_TRANSLATE_NOOP("App::Property", "Description of IFC attributes are not yet implemented"))
+ setattr(obj, attribute["name"], attribute["enum_values"])
+ else:
+ propertyType = "App::" + ArchIFCSchema.IfcTypes[attribute["type"]]["property"]
+ obj.addProperty(propertyType, attribute["name"], "IFC Attributes", QT_TRANSLATE_NOOP("App::Property", "Description of IFC attributes are not yet implemented"))
+
+def addIfcAttributeValueExpressions(obj, attribute):
+ if obj.getGroupOfProperty(attribute["name"]) != "Ifc Attributes":
+ return
+ if attribute["name"] == "OverallWidth":
+ if hasattr(obj, "Length"):
+ obj.setExpression("OverallWidth", "Length.Value")
+ elif hasattr(obj, "Width"):
+ obj.setExpression("OverallWidth", "Width.Value")
+ elif obj.Shape.BoundBox.XLength > obj.Shape.BoundBox.YLength:
+ obj.setExpression("OverallWidth", "Shape.BoundBox.XLength")
+ else:
+ obj.setExpression("OverallWidth", "Shape.BoundBox.YLength")
+ elif attribute["name"] == "OverallHeight":
+ if hasattr(obj, "Height"):
+ obj.setExpression("OverallHeight", "Height.Value")
+ else:
+ obj.setExpression("OverallHeight", "Shape.BoundBox.ZLength")
+ elif attribute["name"] == "ElevationWithFlooring":
+ obj.setExpression("ElevationWithFlooring", "Shape.BoundBox.ZMin")
+ elif attribute["name"] == "Elevation":
+ obj.setExpression("Elevation", "Placement.Base.z")
+ elif attribute["name"] == "NominalDiameter":
+ obj.setExpression("NominalDiameter", "Diameter.Value")
+ elif attribute["name"] == "BarLength":
+ obj.setExpression("BarLength", "Length.Value")
+ elif attribute["name"] == "RefElevation":
+ obj.setExpression("RefElevation", "Elevation.Value")
+
+def setObjIfcAttributeValue(obj, attributeName, value):
+ IfcData = obj.IfcData
+ IfcAttributes = json.loads(IfcData["attributes"])
+ if isinstance(value, FreeCAD.Units.Quantity):
+ value = float(value)
+ IfcAttributes[attributeName]["value"] = value
+ IfcData["attributes"] = json.dumps(IfcAttributes)
+ obj.IfcData = IfcData
+
+def purgeUnusedIfcAttributesFromPropertiesList(ifcProduct, obj):
+ for property in obj.PropertiesList:
+ if obj.getGroupOfProperty(property) != "IFC Attributes":
+ continue
+ ifcProductAttribute = getIfcProductAttribute(ifcProduct, property)
+ if ifcProductAttribute is None or ifcProductAttribute["is_enum"] is True:
+ obj.removeProperty(property)
+
+def migrateDeprecatedAttributes(obj):
+ # FreeCAD <= 0.17 stored IFC data in IfcAttributes
+ if hasattr(obj, "IfcAttributes"):
+ obj.IfcData = obj.IfcAttributes
+ obj.removeProperty("IfcAttributes")
diff --git a/src/Mod/Arch/ArchIFCSchema.py b/src/Mod/Arch/ArchIFCSchema.py
new file mode 100644
index 0000000000..98eabcde87
--- /dev/null
+++ b/src/Mod/Arch/ArchIFCSchema.py
@@ -0,0 +1,12 @@
+import FreeCAD, os, json
+
+ifcVersions = ["IFC4", "IFC2X3"]
+IfcVersion = ifcVersions[FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetInt("IfcVersion",0)]
+
+with open(os.path.join(FreeCAD.getResourceDir(), "Mod", "Arch", "Presets",
+"ifc_products_" + IfcVersion + ".json")) as f:
+ IfcProducts = json.load(f)
+
+with open(os.path.join(FreeCAD.getResourceDir(), "Mod", "Arch", "Presets",
+"ifc_types_" + IfcVersion + ".json")) as f:
+ IfcTypes = json.load(f)
diff --git a/src/Mod/Arch/ArchSite.py b/src/Mod/Arch/ArchSite.py
index e86da64af4..f1148c758f 100644
--- a/src/Mod/Arch/ArchSite.py
+++ b/src/Mod/Arch/ArchSite.py
@@ -23,7 +23,7 @@
#* *
#***************************************************************************
-import FreeCAD,Draft,ArchCommands,ArchFloor,math,re,datetime
+import FreeCAD,Draft,ArchCommands,ArchFloor,math,re,datetime,ArchIFC
if FreeCAD.GuiUp:
import FreeCADGui
from PySide import QtCore, QtGui
@@ -324,7 +324,7 @@ class _Site(ArchFloor._Floor):
obj.IfcRole = "Site"
def setProperties(self,obj):
-
+ ArchIFC.setProperties(obj)
pl = obj.PropertiesList
if not "Terrain" in pl:
obj.addProperty("App::PropertyLink","Terrain","Site",QT_TRANSLATE_NOOP("App::Property","The base terrain of this site"))
@@ -424,6 +424,7 @@ class _Site(ArchFloor._Floor):
self.computeAreas(obj)
def onChanged(self,obj,prop):
+ ArchIFC.onChanged(obj, prop)
ArchFloor._Floor.onChanged(self,obj,prop)
if prop == "Terrain":
diff --git a/src/Mod/Arch/CMakeLists.txt b/src/Mod/Arch/CMakeLists.txt
index 1b5128d630..d529a22e7e 100644
--- a/src/Mod/Arch/CMakeLists.txt
+++ b/src/Mod/Arch/CMakeLists.txt
@@ -6,6 +6,7 @@ SET(Arch_SRCS
Init.py
InitGui.py
ArchComponent.py
+ ArchIFC.py
ArchWall.py
importIFC.py
importIFClegacy.py
@@ -53,6 +54,10 @@ SET(Dice3DS_SRCS
SET(Arch_presets
Presets/profiles.csv
Presets/pset_definitions.csv
+ Presets/ifc_products_IFC2X3.json
+ Presets/ifc_products_IFC4.json
+ Presets/ifc_types_IFC2X3.json
+ Presets/ifc_types_IFC4.json
)
SOURCE_GROUP("" FILES ${Arch_SRCS})
diff --git a/src/Mod/Arch/Presets/ifc_products_IFC2X3.json b/src/Mod/Arch/Presets/ifc_products_IFC2X3.json
new file mode 100644
index 0000000000..915389672f
--- /dev/null
+++ b/src/Mod/Arch/Presets/ifc_products_IFC2X3.json
@@ -0,0 +1,163 @@
+{
+"IfcActuator": { "attributes": [] },
+"IfcAirTerminal": { "attributes": [] },
+"IfcAirTerminalBox": { "attributes": [] },
+"IfcAirToAirHeatRecovery": { "attributes": [] },
+"IfcAlarm": { "attributes": [] },
+"IfcAnnotation": { "attributes": [] },
+"IfcAudioVisualAppliance": { "attributes": [] },
+"IfcBeam": { "attributes": [] },
+"IfcBeamStandardCase": { "attributes": [] },
+"IfcBoiler": { "attributes": [] },
+"IfcBuilding": { "attributes": [] },
+"IfcBuildingElement": { "attributes": [] },
+"IfcBuildingElementPart": { "attributes": [] },
+"IfcBuildingElementProxy": { "attributes": [] },
+"IfcBuildingStorey": { "attributes": [] },
+"IfcBurner": { "attributes": [] },
+"IfcCableCarrierFitting": { "attributes": [] },
+"IfcCableCarrierSegment": { "attributes": [] },
+"IfcCableFitting": { "attributes": [] },
+"IfcCableSegment": { "attributes": [] },
+"IfcChiller": { "attributes": [] },
+"IfcChimney": { "attributes": [] },
+"IfcCivilElement": { "attributes": [] },
+"IfcCoil": { "attributes": [] },
+"IfcColumn": { "attributes": [] },
+"IfcColumnStandardCase": { "attributes": [] },
+"IfcCommunicationsAppliance": { "attributes": [] },
+"IfcCompressor": { "attributes": [] },
+"IfcCondenser": { "attributes": [] },
+"IfcController": { "attributes": [] },
+"IfcCooledBeam": { "attributes": [] },
+"IfcCoolingTower": { "attributes": [] },
+"IfcCovering": { "attributes": [] },
+"IfcCurtainWall": { "attributes": [] },
+"IfcDamper": { "attributes": [] },
+"IfcDiscreteAccessory": { "attributes": [] },
+"IfcDistributionChamberElement": { "attributes": [] },
+"IfcDistributionControlElement": { "attributes": [] },
+"IfcDistributionElement": { "attributes": [] },
+"IfcDistributionFlowElement": { "attributes": [] },
+"IfcDistributionPort": { "attributes": [] },
+"IfcDoor": { "attributes": [] },
+"IfcDoorStandardCase": { "attributes": [] },
+"IfcDuctFitting": { "attributes": [] },
+"IfcDuctSegment": { "attributes": [] },
+"IfcDuctSilencer": { "attributes": [] },
+"IfcElectricAppliance": { "attributes": [] },
+"IfcElectricDistributionBoard": { "attributes": [] },
+"IfcElectricFlowStorageDevice": { "attributes": [] },
+"IfcElectricGenerator": { "attributes": [] },
+"IfcElectricMotor": { "attributes": [] },
+"IfcElectricTimeControl": { "attributes": [] },
+"IfcElementAssembly": { "attributes": [] },
+"IfcElementComponent": { "attributes": [] },
+"IfcEnergyConversionDevice": { "attributes": [] },
+"IfcEngine": { "attributes": [] },
+"IfcEvaporativeCooler": { "attributes": [] },
+"IfcEvaporator": { "attributes": [] },
+"IfcExternalSpatialElement": { "attributes": [] },
+"IfcExternalSpatialStructureElement": { "attributes": [] },
+"IfcFan": { "attributes": [] },
+"IfcFastener": { "attributes": [] },
+"IfcFeatureElement": { "attributes": [] },
+"IfcFeatureElementAddition": { "attributes": [] },
+"IfcFeatureElementSubtraction": { "attributes": [] },
+"IfcFilter": { "attributes": [] },
+"IfcFireSuppressionTerminal": { "attributes": [] },
+"IfcFlowController": { "attributes": [] },
+"IfcFlowFitting": { "attributes": [] },
+"IfcFlowInstrument": { "attributes": [] },
+"IfcFlowMeter": { "attributes": [] },
+"IfcFlowMovingDevice": { "attributes": [] },
+"IfcFlowSegment": { "attributes": [] },
+"IfcFlowStorageDevice": { "attributes": [] },
+"IfcFlowTerminal": { "attributes": [] },
+"IfcFlowTreatmentDevice": { "attributes": [] },
+"IfcFooting": { "attributes": [] },
+"IfcFurnishingElement": { "attributes": [] },
+"IfcFurniture": { "attributes": [] },
+"IfcGeographicElement": { "attributes": [] },
+"IfcGrid": { "attributes": [] },
+"IfcHeatExchanger": { "attributes": [] },
+"IfcHumidifier": { "attributes": [] },
+"IfcInterceptor": { "attributes": [] },
+"IfcJunctionBox": { "attributes": [] },
+"IfcLamp": { "attributes": [] },
+"IfcLightFixture": { "attributes": [] },
+"IfcMechanicalFastener": { "attributes": [] },
+"IfcMedicalDevice": { "attributes": [] },
+"IfcMember": { "attributes": [] },
+"IfcMemberStandardCase": { "attributes": [] },
+"IfcMotorConnection": { "attributes": [] },
+"IfcOpeningElement": { "attributes": [] },
+"IfcOpeningStandardCase": { "attributes": [] },
+"IfcOutlet": { "attributes": [] },
+"IfcPile": { "attributes": [] },
+"IfcPipeFitting": { "attributes": [] },
+"IfcPipeSegment": { "attributes": [] },
+"IfcPlate": { "attributes": [] },
+"IfcPlateStandardCase": { "attributes": [] },
+"IfcProjectionElement": { "attributes": [] },
+"IfcProtectiveDevice": { "attributes": [] },
+"IfcProtectiveDeviceTrippingUnit": { "attributes": [] },
+"IfcProxy": { "attributes": [] },
+"IfcPump": { "attributes": [] },
+"IfcRailing": { "attributes": [] },
+"IfcRamp": { "attributes": [] },
+"IfcRampFlight": { "attributes": [] },
+"IfcReinforcingBar": { "attributes": [] },
+"IfcReinforcingMesh": { "attributes": [] },
+"IfcRoof": { "attributes": [] },
+"IfcSanitaryTerminal": { "attributes": [] },
+"IfcSensor": { "attributes": [] },
+"IfcShadingDevice": { "attributes": [] },
+"IfcSite": { "attributes": [] },
+"IfcSlab": { "attributes": [] },
+"IfcSlabElementedCase": { "attributes": [] },
+"IfcSlabStandardCase": { "attributes": [] },
+"IfcSolarDevice": { "attributes": [] },
+"IfcSpace": { "attributes": [] },
+"IfcSpaceHeater": { "attributes": [] },
+"IfcSpatialZone": { "attributes": [] },
+"IfcStackTerminal": { "attributes": [] },
+"IfcStair": { "attributes": [] },
+"IfcStairFlight": { "attributes": [] },
+"IfcStructuralCurveAction": { "attributes": [] },
+"IfcStructuralCurveConnection": { "attributes": [] },
+"IfcStructuralCurveMember": { "attributes": [] },
+"IfcStructuralCurveMemberVarying": { "attributes": [] },
+"IfcStructuralCurveReaction": { "attributes": [] },
+"IfcStructuralLinearAction": { "attributes": [] },
+"IfcStructuralPlanarAction": { "attributes": [] },
+"IfcStructuralPointAction": { "attributes": [] },
+"IfcStructuralPointConnection": { "attributes": [] },
+"IfcStructuralPointReaction": { "attributes": [] },
+"IfcStructuralSurfaceAction": { "attributes": [] },
+"IfcStructuralSurfaceConnection": { "attributes": [] },
+"IfcStructuralSurfaceMember": { "attributes": [] },
+"IfcStructuralSurfaceMemberVarying": { "attributes": [] },
+"IfcStructuralSurfaceReaction": { "attributes": [] },
+"IfcSurfaceFeature": { "attributes": [] },
+"IfcSwitchingDevice": { "attributes": [] },
+"IfcSystemFurnitureElement": { "attributes": [] },
+"IfcTank": { "attributes": [] },
+"IfcTendon": { "attributes": [] },
+"IfcTendonAnchor": { "attributes": [] },
+"IfcTransformer": { "attributes": [] },
+"IfcTransportElement": { "attributes": [] },
+"IfcTubeBundle": { "attributes": [] },
+"IfcUnitaryControlElement": { "attributes": [] },
+"IfcUnitaryEquipment": { "attributes": [] },
+"IfcValve": { "attributes": [] },
+"IfcVibrationIsolator": { "attributes": [] },
+"IfcVirtualElement": { "attributes": [] },
+"IfcVoidingFeature": { "attributes": [] },
+"IfcWall": { "attributes": [] },
+"IfcWallElementedCase": { "attributes": [] },
+"IfcWallStandardCase": { "attributes": [] },
+"IfcWasteTerminal": { "attributes": [] },
+"IfcWindow": { "attributes": [] },
+"IfcWindowStandardCase": { "attributes": [] }
+}
diff --git a/src/Mod/Arch/Presets/ifc_products_IFC4.json b/src/Mod/Arch/Presets/ifc_products_IFC4.json
new file mode 100644
index 0000000000..5202ba2dc3
--- /dev/null
+++ b/src/Mod/Arch/Presets/ifc_products_IFC4.json
@@ -0,0 +1,4324 @@
+{
+ "IfcActuator": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcProduct",
+ "attributes": []
+ },
+ "IfcAudioVisualAppliance": {
+ "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"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcBeam": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcEnergyConversionDevice",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcBoilerTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "WATER",
+ "STEAM",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcBuilding": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcCoil": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcDistributionElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcDistributionElement": {
+ "is_abstract": false,
+ "parent": "IfcElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcDistributionFlowElement": {
+ "is_abstract": false,
+ "parent": "IfcDistributionElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcDistributionPort": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcEngine": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowFitting": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowInstrument": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowSegment": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowStorageDevice": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowTerminal": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFlowTreatmentDevice": {
+ "is_abstract": false,
+ "parent": "IfcDistributionFlowElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFooting": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcFurniture": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcProduct",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcGridTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "RECTANGULAR",
+ "RADIAL",
+ "TRIANGULAR",
+ "IRREGULAR",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ }
+ ]
+ },
+ "IfcHeatExchanger": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcFlowFitting",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcJunctionBoxTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "DATA",
+ "POWER",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcLamp": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcEnergyConversionDevice",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcMotorConnectionTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "BELTDRIVE",
+ "COUPLING",
+ "DIRECTDRIVE",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcOpeningElement": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcBuildingElement",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcPlateTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "CURTAIN_PANEL",
+ "SHEET",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcPlateStandardCase": {
+ "is_abstract": false,
+ "parent": "IfcPlate",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcPlateTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "CURTAIN_PANEL",
+ "SHEET",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcProjectionElement": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcSanitaryTerminal": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcStructuralConnection",
+ "attributes": []
+ },
+ "IfcStructuralCurveMember": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcStructuralConnection",
+ "attributes": []
+ },
+ "IfcStructuralPointReaction": {
+ "is_abstract": false,
+ "parent": "IfcStructuralReaction",
+ "attributes": [
+ {
+ "name": "GlobalOrLocal",
+ "type": "IfcGlobalOrLocalEnum",
+ "is_enum": true,
+ "enum_values": [
+ "GLOBAL_COORDS",
+ "LOCAL_COORDS"
+ ]
+ }
+ ]
+ },
+ "IfcStructuralSurfaceAction": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcStructuralConnection",
+ "attributes": []
+ },
+ "IfcStructuralSurfaceMember": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcFeatureElement",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcSurfaceFeatureTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "MARK",
+ "TAG",
+ "TREATMENT",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcSwitchingDevice": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcReinforcingElement",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcTendonTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "BAR",
+ "COATED",
+ "STRAND",
+ "WIRE",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcEnergyConversionDevice",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcTransformerTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "CURRENT",
+ "FREQUENCY",
+ "INVERTER",
+ "RECTIFIER",
+ "VOLTAGE",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcTransportElement": {
+ "is_abstract": false,
+ "parent": "IfcElement",
+ "attributes": [
+ {
+ "name": "PredefinedType",
+ "type": "IfcTransportElementTypeEnum",
+ "is_enum": true,
+ "enum_values": [
+ "ELEVATOR",
+ "ESCALATOR",
+ "MOVINGWALKWAY",
+ "CRANEWAY",
+ "LIFTINGGEAR",
+ "USERDEFINED",
+ "NOTDEFINED"
+ ]
+ },
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcTubeBundle": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "is_abstract": false,
+ "parent": "IfcElement",
+ "attributes": [
+ {
+ "name": "Tag",
+ "type": "IfcIdentifier",
+ "is_enum": false,
+ "enum_values": []
+ }
+ ]
+ },
+ "IfcVoidingFeature": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": {
+ "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": []
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/Mod/Arch/Presets/ifc_types_IFC2X3.json b/src/Mod/Arch/Presets/ifc_types_IFC2X3.json
new file mode 100644
index 0000000000..dc13d74bff
--- /dev/null
+++ b/src/Mod/Arch/Presets/ifc_types_IFC2X3.json
@@ -0,0 +1,31 @@
+{
+"IfcInteger": {},
+"IfcReal": {},
+"IfcBoolean": {},
+"IfcIdentifier": {},
+"IfcText": {},
+"IfcLabel": {},
+"IfcLogical": {},
+"IfcVolumeMeasure": {},
+"IfcTimeMeasure": {},
+"IfcThermodynamicTemperatureMeasure": {},
+"IfcSolidAngleMeasure": {},
+"IfcPositiveRatioMeasure": {},
+"IfcRatioMeasure": {},
+"IfcPositivePlaneAngleMeasure": {},
+"IfcPlaneAngleMeasure": {},
+"IfcParameterValue": {},
+"IfcNumericMeasure": {},
+"IfcMassMeasure": {},
+"IfcPositiveLengthMeasure": {},
+"IfcLengthMeasure": {},
+"IfcElectricCurrentMeasure": {},
+"IfcDescriptiveMeasure": {},
+"IfcCountMeasure": {},
+"IfcContextDependentMeasure": {},
+"IfcAreaMeasure": {},
+"IfcAmountOfSubstanceMeasure": {},
+"IfcLuminousIntensityMeasure": {},
+"IfcNormalisedRatioMeasure": {},
+"IfcComplexNumber": {}
+}
diff --git a/src/Mod/Arch/Presets/ifc_types_IFC4.json b/src/Mod/Arch/Presets/ifc_types_IFC4.json
new file mode 100644
index 0000000000..8f8800dbaa
--- /dev/null
+++ b/src/Mod/Arch/Presets/ifc_types_IFC4.json
@@ -0,0 +1,558 @@
+{
+ "IfcBSplineCurveForm": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcBSplineSurfaceForm": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcBooleanOperator": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcKnotType": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcNullStyle": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcPreferredSurfaceCurveRepresentation": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcSIPrefix": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcSIUnitName": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcSurfaceSide": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcTextPath": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcTransitionCode": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcTrimmingPreference": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ },
+ "IfcAbsorbedDoseMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcAccelerationMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcAmountOfSubstanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcAngularVelocityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcAreaDensityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcAreaMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcBoolean": {
+ "base": "xs:boolean",
+ "property": "PropertyBool"
+ },
+ "IfcBoxAlignment": {
+ "base": "ifc:IfcLabel",
+ "property": "PropertyString"
+ },
+ "IfcCardinalPointReference": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcContextDependentMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcCountMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcCurvatureMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcDate": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcDateTime": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcDayInMonthNumber": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcDayInWeekNumber": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcDescriptiveMeasure": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcDimensionCount": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcDoseEquivalentMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcDuration": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcDynamicViscosityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricCapacitanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricChargeMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricConductanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricCurrentMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricResistanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcElectricVoltageMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcEnergyMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcFontStyle": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcFontVariant": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcFontWeight": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcForceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcFrequencyMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcGloballyUniqueId": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcHeatFluxDensityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcHeatingValueMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcIdentifier": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcIlluminanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcInductanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcInteger": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcIntegerCountRateMeasure": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcIonConcentrationMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcIsothermalMoistureCapacityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcKinematicViscosityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLabel": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcLanguageId": {
+ "base": "ifc:IfcIdentifier",
+ "property": "PropertyString"
+ },
+ "IfcLengthMeasure": {
+ "base": "xs:double",
+ "property": "PropertyLength"
+ },
+ "IfcLinearForceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLinearMomentMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLinearStiffnessMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLinearVelocityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLogical": {
+ "base": "ifc:logical",
+ "property": "PropertyBool"
+ },
+ "IfcLuminousFluxMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLuminousIntensityDistributionMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcLuminousIntensityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMagneticFluxDensityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMagneticFluxMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMassDensityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMassFlowRateMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMassMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMassPerLengthMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcModulusOfElasticityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcModulusOfLinearSubgradeReactionMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcModulusOfRotationalSubgradeReactionMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcModulusOfSubgradeReactionMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMoistureDiffusivityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMolecularWeightMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMomentOfInertiaMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMonetaryMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcMonthInYearNumber": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcNonNegativeLengthMeasure": {
+ "base": "ifc:IfcLengthMeasure",
+ "property": "PropertyLength"
+ },
+ "IfcNormalisedRatioMeasure": {
+ "base": "ifc:IfcRatioMeasure",
+ "property": "PropertyFloat"
+ },
+ "IfcNumericMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcPHMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcParameterValue": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcPlanarForceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcPlaneAngleMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcPositiveInteger": {
+ "base": "ifc:IfcInteger",
+ "property": "PropertyInteger"
+ },
+ "IfcPositiveLengthMeasure": {
+ "base": "ifc:IfcLengthMeasure",
+ "property": "PropertyLength"
+ },
+ "IfcPositivePlaneAngleMeasure": {
+ "base": "ifc:IfcPlaneAngleMeasure",
+ "property": "PropertyFloat"
+ },
+ "IfcPositiveRatioMeasure": {
+ "base": "ifc:IfcRatioMeasure",
+ "property": "PropertyFloat"
+ },
+ "IfcPowerMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcPresentableText": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcPressureMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcRadioActivityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcRatioMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcReal": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcRotationalFrequencyMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcRotationalMassMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcRotationalStiffnessMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSectionModulusMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSectionalAreaIntegralMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcShearModulusMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSolidAngleMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSoundPowerLevelMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSoundPowerMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSoundPressureLevelMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSoundPressureMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSpecificHeatCapacityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSpecularExponent": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcSpecularRoughness": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcTemperatureGradientMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcTemperatureRateOfChangeMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcText": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcTextAlignment": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcTextDecoration": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcTextFontName": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcTextTransformation": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcThermalAdmittanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcThermalConductivityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcThermalExpansionCoefficientMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcThermalResistanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcThermalTransmittanceMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcThermodynamicTemperatureMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcTime": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcTimeMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcTimeStamp": {
+ "base": "xs:long",
+ "property": "PropertyFloat"
+ },
+ "IfcTorqueMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcURIReference": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "IfcVaporPermeabilityMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcVolumeMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcVolumetricFlowRateMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcWarpingConstantMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "IfcWarpingMomentMeasure": {
+ "base": "xs:double",
+ "property": "PropertyFloat"
+ },
+ "aggregateType": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "logical": {
+ "base": "xs:normalizedString",
+ "property": "PropertyString"
+ },
+ "List-IfcCompoundPlaneAngleMeasure": {
+ "base": "xs:string",
+ "property": "PropertyString"
+ }
+}
diff --git a/src/Mod/Arch/Resources/ui/preferences-arch.ui b/src/Mod/Arch/Resources/ui/preferences-arch.ui
index d258ea6498..8b070cd0da 100644
--- a/src/Mod/Arch/Resources/ui/preferences-arch.ui
+++ b/src/Mod/Arch/Resources/ui/preferences-arch.ui
@@ -17,16 +17,7 @@
6
-
- 9
-
-
- 9
-
-
- 9
-
-
+
9
-
@@ -226,6 +217,69 @@
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ IFC version
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ The IFC version will change which attributes and products are supported
+
+
+ IfcVersion
+
+
+ Mod/Arch
+
+
-
+
+ IFC4
+
+
+ -
+
+ IFC2X3
+
+
+
+
+
+
@@ -708,6 +762,11 @@
QCheckBox
+
+ Gui::PrefComboBox
+ QComboBox
+
+
Gui::PrefLineEdit
QLineEdit
diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py
index 6a4b0f3624..619ff54293 100644
--- a/src/Mod/Arch/importIFC.py
+++ b/src/Mod/Arch/importIFC.py
@@ -31,6 +31,7 @@ import six
import os,time,tempfile,uuid,FreeCAD,Part,Draft,Arch,math,DraftVecUtils,sys
from DraftGeomUtils import vec
+from ArchIFC import ifcProducts
## @package importIFC
# \ingroup ARCH
@@ -842,10 +843,13 @@ def insert(filename,docname,skip=[],only=[],root=None):
# setting uid
- if hasattr(obj,"IfcAttributes"):
- a = obj.IfcAttributes
+ if hasattr(obj,"IfcData"):
+ a = obj.IfcData
a["IfcUID"] = str(guid)
- obj.IfcAttributes = a
+ obj.IfcData = a
+ for attribute in ifcProducts[product.is_a()]["attributes"]:
+ if hasattr(product, attribute["name"]) and getattr(product, attribute["name"]):
+ setattr(obj, attribute["name"], getattr(product, attribute["name"]))
if obj:
s = ""
@@ -888,10 +892,10 @@ def insert(filename,docname,skip=[],only=[],root=None):
obj.Role = r
except:
print("Unable to give IFC role ",ptype," to object ",obj.Label)
- if hasattr(obj,"IfcAttributes"):
- a = obj.IfcAttributes
+ if hasattr(obj,"IfcData"):
+ a = obj.IfcData
a["IfcUID"] = str(guid)
- obj.IfcAttributes = a
+ obj.IfcData = a
elif (MERGE_MODE_ARCH == 2 and archobj) or (MERGE_MODE_STRUCT == 1 and not archobj):
@@ -993,17 +997,17 @@ def insert(filename,docname,skip=[],only=[],root=None):
#print("adding property: ",pname,ptype,pvalue," pset ",psetname)
obj.IfcProperties = d
- elif hasattr(obj,"IfcAttributes"):
+ elif hasattr(obj,"IfcData"):
- # 0.17: properties are saved as type(value) in IfcAttributes
+ # 0.17: properties are saved as type(value) in IfcData
- a = obj.IfcAttributes
+ a = obj.IfcData
for c in properties[pid].keys():
for p in properties[pid][c]:
l = ifcfile[p]
if l.is_a("IfcPropertySingleValue"):
a[l.Name.encode("utf8")] = str(l.NominalValue) # no py3 support here
- obj.IfcAttributes = a
+ obj.IfcData = a
# color
@@ -1664,37 +1668,22 @@ def export(exportList,filename):
# getting uid
uid = None
- if hasattr(obj,"IfcAttributes"):
- if "IfcUID" in obj.IfcAttributes.keys():
- uid = str(obj.IfcAttributes["IfcUID"])
+ if hasattr(obj,"IfcData"):
+ if "IfcUID" in obj.IfcData.keys():
+ uid = str(obj.IfcData["IfcUID"])
if not uid:
uid = ifcopenshell.guid.compress(uuid.uuid1().hex)
# storing the uid for further use
- if STORE_UID and hasattr(obj,"IfcAttributes"):
- d = obj.IfcAttributes
+ if STORE_UID and hasattr(obj,"IfcData"):
+ d = obj.IfcData
d["IfcUID"] = uid
- obj.IfcAttributes = d
+ obj.IfcData = d
- # setting the IFC type + name conversions
+ ifctype = getIfcRoleFromObj(obj)
- if hasattr(obj,"IfcRole"):
- ifctype = obj.IfcRole.replace(" ","")
- elif hasattr(obj,"Role"):
- ifctype = obj.Role.replace(" ","")
- else:
- ifctype = Draft.getType(obj)
- if ifctype in translationtable.keys():
- ifctype = translationtable[ifctype]
- ifctype = "Ifc" + ifctype
- if ifctype == "IfcVisGroup":
- ifctype = "IfcGroup"
if ifctype == "IfcGroup":
groups[obj.Name] = [o.Name for o in obj.Group]
continue
- if (Draft.getType(obj) == "BuildingPart") and hasattr(obj,"IfcRole") and (obj.IfcRole == "Undefined"):
- ifctype = "IfcBuildingStorey" # export BuildingParts as Storeys if their type wasn't explicitly set
- if (Draft.getType(obj) == "BuildingPart") and hasattr(obj,"IfcRole") and (obj.IfcRole == "Building"):
- ifctype = "IfcBuilding"
# export grids
@@ -1755,16 +1744,15 @@ def export(exportList,filename):
count += 1
continue
- from ArchComponent import IFCTYPES
- if ifctype not in IFCTYPES:
+ if ifctype not in ifcProducts.keys():
ifctype = "IfcBuildingElementProxy"
# getting the "Force BREP" flag
brepflag = False
- if hasattr(obj,"IfcAttributes"):
- if "FlagForceBrep" in obj.IfcAttributes.keys():
- if obj.IfcAttributes["FlagForceBrep"] == "True":
+ if hasattr(obj,"IfcData"):
+ if "FlagForceBrep" in obj.IfcData.keys():
+ if obj.IfcData["FlagForceBrep"] == "True":
brepflag = True
# getting the representation
@@ -1777,53 +1765,15 @@ def export(exportList,filename):
kwargs = {"GlobalId": uid, "OwnerHistory": history, "Name": name,
"Description": description, "ObjectPlacement": placement, "Representation": representation}
- if ifctype in ["IfcSlab","IfcFooting","IfcRoof"]:
- kwargs.update({"PredefinedType": "NOTDEFINED"})
- elif ifctype in ["IfcWindow","IfcDoor"]:
- if hasattr(obj,"Width") and hasattr(obj,"Height"):
- kwargs.update({"OverallHeight": obj.Width.Value/1000.0,
- "OverallWidth": obj.Height.Value/1000.0})
- else:
- if obj.Shape.BoundBox.XLength > obj.Shape.BoundBox.YLength:
- l = obj.Shape.BoundBox.XLength
- else:
- l = obj.Shape.BoundBox.YLength
- kwargs.update({"OverallHeight": l/1000.0,
- "OverallWidth": obj.Shape.BoundBox.ZLength/1000.0})
- elif ifctype == "IfcSpace":
- internal = "NOTDEFINED"
- if hasattr(obj,"Internal"):
- if obj.Internal:
- internal = "INTERNAL"
- else:
- internal = "EXTERNAL"
- if schema == "IFC2X3":
- kwargs.update({"CompositionType": "ELEMENT",
- "InteriorOrExteriorSpace": internal,
- "ElevationWithFlooring": obj.Shape.BoundBox.ZMin/1000.0})
- else:
- kwargs.update({"CompositionType": "ELEMENT",
- "PredefinedType": internal,
- "ElevationWithFlooring": obj.Shape.BoundBox.ZMin/1000.0})
- elif ifctype == "IfcBuildingElementProxy":
- if schema == "IFC4":
- kwargs.update({"PredefinedType": "ELEMENT"})
- else:
- kwargs.update({"CompositionType": "ELEMENT"})
- elif ifctype == "IfcSite":
+ if ifctype == "IfcSite":
kwargs.update({"RefLatitude":dd2dms(obj.Latitude),
"RefLongitude":dd2dms(obj.Longitude),
"RefElevation":obj.Elevation.Value/1000.0,
"SiteAddress":buildAddress(obj,ifcfile),
"CompositionType": "ELEMENT"})
- elif ifctype == "IfcBuilding":
- kwargs.update({"CompositionType": "ELEMENT"})
- elif ifctype == "IfcBuildingStorey":
- kwargs.update({"CompositionType": "ELEMENT",
- "Elevation": obj.Placement.Base.z/1000.0})
- elif ifctype == "IfcReinforcingBar":
- kwargs.update({"NominalDiameter": obj.Diameter.Value,
- "BarLength": obj.Length.Value})
+ if ifcopenshell.schema_identifier == "IFC2X3":
+ kwargs = exportIFC2X3Attributes(obj, kwargs)
+ kwargs = exportIfcAttributes(obj, kwargs)
# creating the product
@@ -1987,18 +1937,18 @@ def export(exportList,filename):
pset = ifcfile.createIfcPropertySet(ifcopenshell.guid.compress(uuid.uuid1().hex),history,cat,None,props)
ifcfile.createIfcRelDefinesByProperties(ifcopenshell.guid.compress(uuid.uuid1().hex),history,None,None,[product],pset)
- if hasattr(obj,"IfcAttributes"):
+ if hasattr(obj,"IfcData"):
- if obj.IfcAttributes:
+ if obj.IfcData:
ifcprop = True
#if DEBUG : print(" adding ifc attributes")
props = []
- for key in obj.IfcAttributes:
+ for key in obj.IfcData:
if not (key in ["IfcUID","FlagForceBrep"]):
- # (deprecated) properties in IfcAttributes dict are stored as "key":"type(value)"
+ # (deprecated) properties in IfcData dict are stored as "key":"type(value)"
- r = obj.IfcAttributes[key].strip(")").split("(")
+ r = obj.IfcData[key].strip(")").split("(")
if len(r) == 1:
tp = "IfcText"
val = r[0]
@@ -2031,19 +1981,19 @@ def export(exportList,filename):
# Quantities
- if hasattr(obj,"IfcAttributes"):
+ if hasattr(obj,"IfcData"):
quantities = []
- if ("ExportHeight" in obj.IfcAttributes) and obj.IfcAttributes["ExportHeight"] and hasattr(obj,"Height"):
+ if ("ExportHeight" in obj.IfcData) and obj.IfcData["ExportHeight"] and hasattr(obj,"Height"):
quantities.append(ifcfile.createIfcQuantityLength('Height',None,None,obj.Height.Value/1000.0))
- if ("ExportWidth" in obj.IfcAttributes) and obj.IfcAttributes["ExportWidth"] and hasattr(obj,"Width"):
+ if ("ExportWidth" in obj.IfcData) and obj.IfcData["ExportWidth"] and hasattr(obj,"Width"):
quantities.append(ifcfile.createIfcQuantityLength('Width',None,None,obj.Width.Value/1000.0))
- if ("ExportLength" in obj.IfcAttributes) and obj.IfcAttributes["ExportLength"] and hasattr(obj,"Length"):
+ if ("ExportLength" in obj.IfcData) and obj.IfcData["ExportLength"] and hasattr(obj,"Length"):
quantities.append(ifcfile.createIfcQuantityLength('Length',None,None,obj.Length.Value/1000.0))
- if ("ExportHorizontalArea" in obj.IfcAttributes) and obj.IfcAttributes["ExportHorizontalArea"] and hasattr(obj,"HorizontalArea"):
+ if ("ExportHorizontalArea" in obj.IfcData) and obj.IfcData["ExportHorizontalArea"] and hasattr(obj,"HorizontalArea"):
quantities.append(ifcfile.createIfcQuantityArea('HorizontalArea',None,None,obj.HorizontalArea.Value/1000000.0))
- if ("ExportVerticalArea" in obj.IfcAttributes) and obj.IfcAttributes["ExportVerticalArea"] and hasattr(obj,"VerticalArea"):
+ if ("ExportVerticalArea" in obj.IfcData) and obj.IfcData["ExportVerticalArea"] and hasattr(obj,"VerticalArea"):
quantities.append(ifcfile.createIfcQuantityArea('VerticalArea',None,None,obj.VerticalArea.Value/1000000.0))
- if ("ExportVolume" in obj.IfcAttributes) and obj.IfcAttributes["ExportVolume"] and obj.isDerivedFrom("Part::Feature"):
+ if ("ExportVolume" in obj.IfcData) and obj.IfcData["ExportVolume"] and obj.isDerivedFrom("Part::Feature"):
quantities.append(ifcfile.createIfcQuantityVolume('Volume',None,None,obj.Shape.Volume/1000000000.0))
if quantities:
eltq = ifcfile.createIfcElementQuantity(ifcopenshell.guid.compress(uuid.uuid1().hex),history,"ElementQuantities",None,"FreeCAD",quantities)
@@ -2068,7 +2018,7 @@ def export(exportList,filename):
for realm,ctx in sets:
if ctx:
for prop in ctx.PropertiesList:
- if not(prop in ["IfcProperties","IfcAttributes","Shape","Proxy","ExpressionEngine","AngularDeflection","BoundingBox"]):
+ if not(prop in ["IfcProperties","IfcData","Shape","Proxy","ExpressionEngine","AngularDeflection","BoundingBox"]):
try:
ptype = ctx.getTypeIdOfProperty(prop)
except AttributeError:
@@ -2417,6 +2367,59 @@ def export(exportList,filename):
print("Compression ratio:",int((float(ifcbin.spared)/(s+ifcbin.spared))*100),"%")
del ifcbin
+def getIfcRoleFromObj(obj):
+ if (Draft.getType(obj) == "BuildingPart") and hasattr(obj,"IfcRole") and (obj.IfcRole == "Undefined"):
+ ifctype = "IfcBuildingStorey" # export BuildingParts as Storeys if their type wasn't explicitly set
+ elif hasattr(obj,"IfcRole"):
+ ifctype = obj.IfcRole.replace(" ","")
+ elif hasattr(obj,"Role"):
+ ifctype = obj.Role.replace(" ","")
+ else:
+ ifctype = Draft.getType(obj)
+
+ if ifctype in translationtable.keys():
+ ifctype = translationtable[ifctype]
+ if ifctype == "VisGroup":
+ ifctype = "Group"
+
+ return "Ifc" + ifctype
+
+def exportIFC2X3Attributes(obj, kwargs):
+ role = getIfcRoleFromObj(obj)
+ if role in ["IfcSlab", "IfcFooting", "IfcRoof"]:
+ kwargs.update({"PredefinedType": "NOTDEFINED"})
+ elif role == "IfcBuilding":
+ kwargs.update({"CompositionType": "ELEMENT"})
+ elif role == "IfcBuildingStorey":
+ kwargs.update({"CompositionType": "ELEMENT"})
+ elif role == "IfcBuildingElementProxy":
+ kwargs.update({"CompositionType": "ELEMENT"})
+ elif role == "IfcSpace":
+ internal = "NOTDEFINED"
+ if hasattr(obj,"Internal"):
+ if obj.Internal:
+ internal = "INTERNAL"
+ else:
+ internal = "EXTERNAL"
+ kwargs.update({"CompositionType": "ELEMENT",
+ "InteriorOrExteriorSpace": internal,
+ "ElevationWithFlooring": obj.Shape.BoundBox.ZMin/1000.0})
+ elif role == "IfcReinforcingBar":
+ kwargs.update({"NominalDiameter": obj.Diameter.Value,
+ "BarLength": obj.Length.Value})
+ elif role == "IfcBuildingStorey":
+ kwargs.update({"Elevation": obj.Placement.Base.z/1000.0})
+ return kwargs
+
+
+def exportIfcAttributes(obj, kwargs):
+ for property in obj.PropertiesList:
+ if obj.getGroupOfProperty(property) == "IFC Attributes" and obj.getPropertyByName(property):
+ value = obj.getPropertyByName(property)
+ if isinstance(value, FreeCAD.Units.Quantity):
+ value = float(value)
+ kwargs.update({ property: value })
+ return kwargs
def buildAddress(obj,ifcfile):