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/PrefWidgets.h
+ + Gui::PrefComboBox + QComboBox +
Gui/PrefWidgets.h
+
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):