mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 21:42:19 +00:00
Allow export of boundary conditions. See #756.
This commit is contained in:
@@ -356,7 +356,10 @@ class IfcParser():
|
|||||||
'relating_host': None,
|
'relating_host': None,
|
||||||
'relating_qtos_key': None,
|
'relating_qtos_key': None,
|
||||||
'representations': self.get_object_representation_names(obj),
|
'representations': self.get_object_representation_names(obj),
|
||||||
'attributes': self.get_object_attributes(obj)
|
'attributes': self.get_object_attributes(obj),
|
||||||
|
'has_boundary_condition': obj.BIMObjectProperties.has_boundary_condition,
|
||||||
|
'boundary_condition_class': None,
|
||||||
|
'boundary_condition_attributes': {}
|
||||||
}
|
}
|
||||||
product['attributes'].update(attribute_override)
|
product['attributes'].update(attribute_override)
|
||||||
product.update(metadata_override)
|
product.update(metadata_override)
|
||||||
@@ -366,6 +369,11 @@ class IfcParser():
|
|||||||
reference = self.get_type_product_reference(obj.parent.name)
|
reference = self.get_type_product_reference(obj.parent.name)
|
||||||
self.rel_defines_by_type.setdefault(reference, []).append(self.product_index)
|
self.rel_defines_by_type.setdefault(reference, []).append(self.product_index)
|
||||||
|
|
||||||
|
if product['has_boundary_condition']:
|
||||||
|
product['boundary_condition_class'] = obj.BIMObjectProperties.boundary_condition.name
|
||||||
|
product['boundary_condition_attributes'] = {a.name: a.string_value
|
||||||
|
for a in obj.BIMObjectProperties.boundary_condition.attributes}
|
||||||
|
|
||||||
for collection in product['raw'].users_collection:
|
for collection in product['raw'].users_collection:
|
||||||
self.parse_product_collection(product, collection)
|
self.parse_product_collection(product, collection)
|
||||||
|
|
||||||
@@ -1497,6 +1505,11 @@ class IfcExporter():
|
|||||||
|
|
||||||
def cast_attributes(self, ifc_class, attributes):
|
def cast_attributes(self, ifc_class, attributes):
|
||||||
for key, value in attributes.items():
|
for key, value in attributes.items():
|
||||||
|
complex_attribute = self.cast_complex_attribute(ifc_class, key, value)
|
||||||
|
if complex_attribute:
|
||||||
|
attributes[key] = complex_attribute
|
||||||
|
continue
|
||||||
|
|
||||||
var_type = self.get_product_attribute_type(ifc_class, key)
|
var_type = self.get_product_attribute_type(ifc_class, key)
|
||||||
if var_type is None:
|
if var_type is None:
|
||||||
continue
|
continue
|
||||||
@@ -1563,13 +1576,25 @@ class IfcExporter():
|
|||||||
product['up_axis'],
|
product['up_axis'],
|
||||||
product['forward_axis']))
|
product['forward_axis']))
|
||||||
|
|
||||||
|
self.cast_attributes(product['class'], product['attributes'])
|
||||||
|
|
||||||
product['attributes'].update({
|
product['attributes'].update({
|
||||||
'OwnerHistory': self.owner_history, # TODO: unhardcode
|
'OwnerHistory': self.owner_history, # TODO: unhardcode
|
||||||
'ObjectPlacement': placement,
|
'ObjectPlacement': placement,
|
||||||
'Representation': self.get_product_shape(product)
|
'Representation': self.get_product_shape(product)
|
||||||
})
|
})
|
||||||
|
|
||||||
self.cast_attributes(product['class'], product['attributes'])
|
if product['has_boundary_condition']:
|
||||||
|
ifc_class = product['boundary_condition_class']
|
||||||
|
attributes = product['boundary_condition_attributes']
|
||||||
|
for key, value in attributes.items():
|
||||||
|
if value == 'True' or value == 'False':
|
||||||
|
attributes[key] = bool(value)
|
||||||
|
else:
|
||||||
|
attributes[key] = float(value)
|
||||||
|
self.cast_attributes(ifc_class, attributes)
|
||||||
|
boundary_condition = self.file.create_entity(ifc_class, **attributes)
|
||||||
|
product['attributes']['AppliedCondition'] = boundary_condition
|
||||||
|
|
||||||
try:
|
try:
|
||||||
product['ifc'] = self.file.create_entity(product['class'], **product['attributes'])
|
product['ifc'] = self.file.create_entity(product['class'], **product['attributes'])
|
||||||
@@ -1588,7 +1613,18 @@ class IfcExporter():
|
|||||||
return a['type']
|
return a['type']
|
||||||
if element_schema['parent'] in schema.ifc.elements:
|
if element_schema['parent'] in schema.ifc.elements:
|
||||||
return self.get_product_attribute_type(element_schema['parent'], attribute_name)
|
return self.get_product_attribute_type(element_schema['parent'], attribute_name)
|
||||||
return None
|
|
||||||
|
def cast_complex_attribute(self, product_class, attribute_name, attribute_value):
|
||||||
|
element_schema = schema.ifc.elements[product_class]
|
||||||
|
for a in element_schema['complex_attributes']:
|
||||||
|
if a['name'] == attribute_name:
|
||||||
|
if not a['is_select']:
|
||||||
|
return a['type']
|
||||||
|
for select_type in a['select_types']:
|
||||||
|
try:
|
||||||
|
return self.file.create_entity(select_type, attribute_value)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
def get_product_shape(self, product):
|
def get_product_shape(self, product):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1,256 +1,256 @@
|
|||||||
{
|
{
|
||||||
"IfcBoundaryEdgeCondition": {
|
"IfcBoundaryEdgeCondition": {
|
||||||
"is_abstract": false,
|
|
||||||
"parent": "IfcBoundaryCondition",
|
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{
|
{
|
||||||
"name": "Name",
|
"enum_values": [],
|
||||||
"type": "IfcLabel",
|
"type": "IfcLabel",
|
||||||
"is_enum": false,
|
"name": "Name",
|
||||||
"enum_values": []
|
"is_enum": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfLinearSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
||||||
"name": "TranslationalStiffnessByLengthX",
|
"name": "TranslationalStiffnessByLengthX",
|
||||||
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfLinearSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfLinearSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
||||||
"name": "TranslationalStiffnessByLengthY",
|
"name": "TranslationalStiffnessByLengthY",
|
||||||
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfLinearSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfLinearSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
||||||
"name": "TranslationalStiffnessByLengthZ",
|
"name": "TranslationalStiffnessByLengthZ",
|
||||||
"type": "IfcModulusOfTranslationalSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfLinearSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfRotationalSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
||||||
"name": "RotationalStiffnessByLengthX",
|
"name": "RotationalStiffnessByLengthX",
|
||||||
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfRotationalSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
||||||
"name": "RotationalStiffnessByLengthY",
|
"name": "RotationalStiffnessByLengthY",
|
||||||
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "RotationalStiffnessByLengthZ",
|
|
||||||
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
"select_types": [
|
||||||
"IfcBoolean-wrapper",
|
"IfcBoolean",
|
||||||
"IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"
|
"IfcModulusOfRotationalSubgradeReactionMeasure"
|
||||||
]
|
],
|
||||||
|
"type": "IfcModulusOfRotationalSubgradeReactionSelect",
|
||||||
|
"name": "RotationalStiffnessByLengthZ",
|
||||||
|
"is_select": true
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"parent": "IfcBoundaryCondition"
|
||||||
},
|
},
|
||||||
"IfcBoundaryFaceCondition": {
|
"IfcBoundaryFaceCondition": {
|
||||||
"is_abstract": false,
|
|
||||||
"parent": "IfcBoundaryCondition",
|
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{
|
{
|
||||||
"name": "Name",
|
"enum_values": [],
|
||||||
"type": "IfcLabel",
|
"type": "IfcLabel",
|
||||||
"is_enum": false,
|
"name": "Name",
|
||||||
"enum_values": []
|
"is_enum": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfSubgradeReactionSelect",
|
||||||
"name": "TranslationalStiffnessByAreaX",
|
"name": "TranslationalStiffnessByAreaX",
|
||||||
"type": "IfcModulusOfSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcModulusOfSubgradeReactionMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcModulusOfSubgradeReactionSelect",
|
||||||
"name": "TranslationalStiffnessByAreaY",
|
"name": "TranslationalStiffnessByAreaY",
|
||||||
"type": "IfcModulusOfSubgradeReactionSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcModulusOfSubgradeReactionMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "TranslationalStiffnessByAreaZ",
|
|
||||||
"type": "IfcModulusOfSubgradeReactionSelect",
|
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
"select_types": [
|
||||||
"IfcBoolean-wrapper",
|
"IfcBoolean",
|
||||||
"IfcModulusOfSubgradeReactionMeasure-wrapper"
|
"IfcModulusOfSubgradeReactionMeasure"
|
||||||
]
|
],
|
||||||
|
"type": "IfcModulusOfSubgradeReactionSelect",
|
||||||
|
"name": "TranslationalStiffnessByAreaZ",
|
||||||
|
"is_select": true
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"parent": "IfcBoundaryCondition"
|
||||||
},
|
},
|
||||||
"IfcBoundaryNodeCondition": {
|
"IfcBoundaryNodeCondition": {
|
||||||
"is_abstract": false,
|
|
||||||
"parent": "IfcBoundaryCondition",
|
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{
|
{
|
||||||
"name": "Name",
|
"enum_values": [],
|
||||||
"type": "IfcLabel",
|
"type": "IfcLabel",
|
||||||
"is_enum": false,
|
"name": "Name",
|
||||||
"enum_values": []
|
"is_enum": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessX",
|
"name": "TranslationalStiffnessX",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessY",
|
"name": "TranslationalStiffnessY",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessZ",
|
"name": "TranslationalStiffnessZ",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcRotationalStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
"name": "RotationalStiffnessX",
|
"name": "RotationalStiffnessX",
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcRotationalStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
"name": "RotationalStiffnessY",
|
"name": "RotationalStiffnessY",
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "RotationalStiffnessZ",
|
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
"select_types": [
|
||||||
"IfcBoolean-wrapper",
|
"IfcBoolean",
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
"IfcRotationalStiffnessMeasure"
|
||||||
]
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
|
"name": "RotationalStiffnessZ",
|
||||||
|
"is_select": true
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"parent": "IfcBoundaryCondition"
|
||||||
},
|
},
|
||||||
"IfcBoundaryNodeConditionWarping": {
|
"IfcBoundaryNodeConditionWarping": {
|
||||||
"is_abstract": false,
|
|
||||||
"parent": "IfcBoundaryNodeCondition",
|
|
||||||
"attributes": [
|
"attributes": [
|
||||||
{
|
{
|
||||||
"name": "Name",
|
"enum_values": [],
|
||||||
"type": "IfcLabel",
|
"type": "IfcLabel",
|
||||||
"is_enum": false,
|
"name": "Name",
|
||||||
"enum_values": []
|
"is_enum": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessX",
|
"name": "TranslationalStiffnessX",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessY",
|
"name": "TranslationalStiffnessY",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcLinearStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcTranslationalStiffnessSelect",
|
||||||
"name": "TranslationalStiffnessZ",
|
"name": "TranslationalStiffnessZ",
|
||||||
"type": "IfcTranslationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcLinearStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcRotationalStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
"name": "RotationalStiffnessX",
|
"name": "RotationalStiffnessX",
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcRotationalStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
"name": "RotationalStiffnessY",
|
"name": "RotationalStiffnessY",
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [
|
||||||
|
"IfcBoolean",
|
||||||
|
"IfcRotationalStiffnessMeasure"
|
||||||
|
],
|
||||||
|
"type": "IfcRotationalStiffnessSelect",
|
||||||
"name": "RotationalStiffnessZ",
|
"name": "RotationalStiffnessZ",
|
||||||
"type": "IfcRotationalStiffnessSelect",
|
"is_select": true
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
|
||||||
"IfcBoolean-wrapper",
|
|
||||||
"IfcRotationalStiffnessMeasure-wrapper"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "WarpingStiffness",
|
|
||||||
"type": "IfcWarpingStiffnessSelect",
|
|
||||||
"is_select": true,
|
|
||||||
"select_types": [
|
"select_types": [
|
||||||
"IfcBoolean-wrapper",
|
"IfcBoolean",
|
||||||
"IfcWarpingMomentMeasure-wrapper"
|
"IfcWarpingMomentMeasure"
|
||||||
]
|
],
|
||||||
|
"type": "IfcWarpingStiffnessSelect",
|
||||||
|
"name": "WarpingStiffness",
|
||||||
|
"is_select": true
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"parent": "IfcBoundaryNodeCondition"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -23,12 +23,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterialDefinitionRepresentation",
|
"type": "IfcMaterialDefinitionRepresentation",
|
||||||
"name": "HasRepresentation"
|
"name": "HasRepresentation",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
@@ -63,12 +61,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterial",
|
"type": "IfcMaterial",
|
||||||
"name": "Material"
|
"name": "Material",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
@@ -89,16 +85,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [],
|
||||||
{
|
|
||||||
"type": "IfcMaterialProperties",
|
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterialConstituent",
|
|
||||||
"name": "MaterialConstituents"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
},
|
},
|
||||||
"IfcMaterialLayer": {
|
"IfcMaterialLayer": {
|
||||||
@@ -143,12 +130,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterial",
|
"type": "IfcMaterial",
|
||||||
"name": "Material"
|
"name": "Material",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
@@ -169,16 +154,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [],
|
||||||
{
|
|
||||||
"type": "IfcMaterialProperties",
|
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterialLayer",
|
|
||||||
"name": "MaterialLayers"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
},
|
},
|
||||||
"IfcMaterialLayerWithOffsets": {
|
"IfcMaterialLayerWithOffsets": {
|
||||||
@@ -233,12 +209,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterial",
|
"type": "IfcMaterial",
|
||||||
"name": "Material"
|
"name": "Material",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialLayer"
|
"parent": "IfcMaterialLayer"
|
||||||
@@ -273,16 +247,16 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterial",
|
"type": "IfcMaterial",
|
||||||
"name": "Material"
|
"name": "Material",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProfileDef",
|
"type": "IfcProfileDef",
|
||||||
"name": "Profile"
|
"name": "Profile",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
@@ -305,16 +279,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterialProfile",
|
|
||||||
"name": "MaterialProfiles"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcCompositeProfileDef",
|
"type": "IfcCompositeProfileDef",
|
||||||
"name": "CompositeProfile"
|
"name": "CompositeProfile",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialDefinition"
|
"parent": "IfcMaterialDefinition"
|
||||||
@@ -349,16 +317,16 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcMaterialProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcMaterial",
|
"type": "IfcMaterial",
|
||||||
"name": "Material"
|
"name": "Material",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProfileDef",
|
"type": "IfcProfileDef",
|
||||||
"name": "Profile"
|
"name": "Profile",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcMaterialProfile"
|
"parent": "IfcMaterialProfile"
|
||||||
|
|||||||
@@ -92,12 +92,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -153,12 +151,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -196,12 +192,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcCircleProfileDef"
|
"parent": "IfcCircleProfileDef"
|
||||||
@@ -233,12 +227,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -276,12 +268,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -349,12 +339,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -416,12 +404,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -477,12 +463,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcRectangleProfileDef"
|
"parent": "IfcRectangleProfileDef"
|
||||||
@@ -520,12 +504,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -569,12 +551,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcRectangleProfileDef"
|
"parent": "IfcRectangleProfileDef"
|
||||||
@@ -654,12 +634,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -709,12 +687,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -782,12 +758,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
@@ -849,12 +823,10 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
"type": "IfcProfileProperties",
|
"select_types": [],
|
||||||
"name": "HasProperties"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcAxis2Placement2D",
|
"type": "IfcAxis2Placement2D",
|
||||||
"name": "Position"
|
"name": "Position",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcParameterizedProfileDef"
|
"parent": "IfcParameterizedProfileDef"
|
||||||
|
|||||||
@@ -57,48 +57,40 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcOwnerHistory",
|
"type": "IfcOwnerHistory",
|
||||||
"name": "OwnerHistory"
|
"name": "OwnerHistory",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelNests",
|
|
||||||
"name": "IsNestedBy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelAggregates",
|
|
||||||
"name": "IsDecomposedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByObject",
|
"type": "IfcRelDefinesByObject",
|
||||||
"name": "IsDeclaredBy"
|
"name": "IsDeclaredBy",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByType",
|
"type": "IfcRelDefinesByType",
|
||||||
"name": "IsTypedBy"
|
"name": "IsTypedBy",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelDefinesByProperties",
|
|
||||||
"name": "IsDefinedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcObjectPlacement",
|
"type": "IfcObjectPlacement",
|
||||||
"name": "ObjectPlacement"
|
"name": "ObjectPlacement",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProductRepresentation",
|
"type": "IfcProductRepresentation",
|
||||||
"name": "Representation"
|
"name": "Representation",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelContainedInSpatialStructure",
|
|
||||||
"name": "ContainsElements"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelReferencedInSpatialStructure",
|
|
||||||
"name": "ReferencesElements"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcPostalAddress",
|
"type": "IfcPostalAddress",
|
||||||
"name": "BuildingAddress"
|
"name": "BuildingAddress",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcSpatialStructureElement"
|
"parent": "IfcSpatialStructureElement"
|
||||||
@@ -155,44 +147,34 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcOwnerHistory",
|
"type": "IfcOwnerHistory",
|
||||||
"name": "OwnerHistory"
|
"name": "OwnerHistory",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelNests",
|
|
||||||
"name": "IsNestedBy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelAggregates",
|
|
||||||
"name": "IsDecomposedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByObject",
|
"type": "IfcRelDefinesByObject",
|
||||||
"name": "IsDeclaredBy"
|
"name": "IsDeclaredBy",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByType",
|
"type": "IfcRelDefinesByType",
|
||||||
"name": "IsTypedBy"
|
"name": "IsTypedBy",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelDefinesByProperties",
|
|
||||||
"name": "IsDefinedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcObjectPlacement",
|
"type": "IfcObjectPlacement",
|
||||||
"name": "ObjectPlacement"
|
"name": "ObjectPlacement",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProductRepresentation",
|
"type": "IfcProductRepresentation",
|
||||||
"name": "Representation"
|
"name": "Representation",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelContainedInSpatialStructure",
|
|
||||||
"name": "ContainsElements"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelReferencedInSpatialStructure",
|
|
||||||
"name": "ReferencesElements"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcSpatialStructureElement"
|
"parent": "IfcSpatialStructureElement"
|
||||||
@@ -267,48 +249,40 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcOwnerHistory",
|
"type": "IfcOwnerHistory",
|
||||||
"name": "OwnerHistory"
|
"name": "OwnerHistory",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelNests",
|
|
||||||
"name": "IsNestedBy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelAggregates",
|
|
||||||
"name": "IsDecomposedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByObject",
|
"type": "IfcRelDefinesByObject",
|
||||||
"name": "IsDeclaredBy"
|
"name": "IsDeclaredBy",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByType",
|
"type": "IfcRelDefinesByType",
|
||||||
"name": "IsTypedBy"
|
"name": "IsTypedBy",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelDefinesByProperties",
|
|
||||||
"name": "IsDefinedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcObjectPlacement",
|
"type": "IfcObjectPlacement",
|
||||||
"name": "ObjectPlacement"
|
"name": "ObjectPlacement",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProductRepresentation",
|
"type": "IfcProductRepresentation",
|
||||||
"name": "Representation"
|
"name": "Representation",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelContainedInSpatialStructure",
|
|
||||||
"name": "ContainsElements"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelReferencedInSpatialStructure",
|
|
||||||
"name": "ReferencesElements"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcPostalAddress",
|
"type": "IfcPostalAddress",
|
||||||
"name": "SiteAddress"
|
"name": "SiteAddress",
|
||||||
|
"is_select": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcSpatialStructureElement"
|
"parent": "IfcSpatialStructureElement"
|
||||||
@@ -379,44 +353,34 @@
|
|||||||
"is_abstract": false,
|
"is_abstract": false,
|
||||||
"complex_attributes": [
|
"complex_attributes": [
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcOwnerHistory",
|
"type": "IfcOwnerHistory",
|
||||||
"name": "OwnerHistory"
|
"name": "OwnerHistory",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelNests",
|
|
||||||
"name": "IsNestedBy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelAggregates",
|
|
||||||
"name": "IsDecomposedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByObject",
|
"type": "IfcRelDefinesByObject",
|
||||||
"name": "IsDeclaredBy"
|
"name": "IsDeclaredBy",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcRelDefinesByType",
|
"type": "IfcRelDefinesByType",
|
||||||
"name": "IsTypedBy"
|
"name": "IsTypedBy",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelDefinesByProperties",
|
|
||||||
"name": "IsDefinedBy"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcObjectPlacement",
|
"type": "IfcObjectPlacement",
|
||||||
"name": "ObjectPlacement"
|
"name": "ObjectPlacement",
|
||||||
|
"is_select": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"select_types": [],
|
||||||
"type": "IfcProductRepresentation",
|
"type": "IfcProductRepresentation",
|
||||||
"name": "Representation"
|
"name": "Representation",
|
||||||
},
|
"is_select": false
|
||||||
{
|
|
||||||
"type": "IfcRelContainedInSpatialStructure",
|
|
||||||
"name": "ContainsElements"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IfcRelReferencedInSpatialStructure",
|
|
||||||
"name": "ReferencesElements"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"parent": "IfcSpatialStructureElement"
|
"parent": "IfcSpatialStructureElement"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,38 +11,31 @@ class IFC4Extractor:
|
|||||||
self.root = tree.getroot()
|
self.root = tree.getroot()
|
||||||
self.ns = {'xs': 'http://www.w3.org/2001/XMLSchema'}
|
self.ns = {'xs': 'http://www.w3.org/2001/XMLSchema'}
|
||||||
self.elements = {}
|
self.elements = {}
|
||||||
#self.filters = ['IfcBuildingElement']
|
self.filters = []
|
||||||
#self.filters = ['IfcElement']
|
|
||||||
#self.filters = ['IfcSpatialStructureElement']
|
|
||||||
#self.filters = ['IfcStructuralActivity', 'IfcStructuralItem']
|
|
||||||
#self.filters = ['IfcMaterialDefinition']
|
|
||||||
#self.filters = ['IfcParameterizedProfileDef']
|
|
||||||
self.filters = ['IfcBoundaryCondition']
|
|
||||||
self.filtered_elements = {}
|
self.filtered_elements = {}
|
||||||
|
|
||||||
def extract(self):
|
def extract(self):
|
||||||
for element in self.root.findall("xs:element", self.ns):
|
for element in self.root.findall("xs:element", self.ns):
|
||||||
#if self.is_descendant_from_class(element, "IfcRoot"):
|
print('Processing {}'.format(element.attrib['name']))
|
||||||
#if self.is_descendant_from_class(element, "IfcMaterialDefinition"):
|
if not 'substitutionGroup' in element.attrib \
|
||||||
#if self.is_descendant_from_class(element, "IfcParameterizedProfileDef"):
|
or self.is_descendant_from_class(element, 'uos'):
|
||||||
if self.is_descendant_from_class(element, "IfcBoundaryCondition"):
|
continue
|
||||||
print('Processing {}'.format(element.attrib['name']))
|
data = {
|
||||||
data = {
|
'is_abstract': self.is_abstract(element),
|
||||||
'is_abstract': self.is_abstract(element),
|
'parent': element.attrib['substitutionGroup'].replace('ifc:', ''),
|
||||||
'parent': element.attrib['substitutionGroup'].replace('ifc:', ''),
|
'attributes': self.get_attributes(element),
|
||||||
'attributes': self.get_attributes(element),
|
'complex_attributes': self.get_complex_attributes(element)
|
||||||
'complex_attributes': self.get_complex_attributes(element)
|
}
|
||||||
}
|
self.elements[element.attrib['name']] = data
|
||||||
self.elements[element.attrib['name']] = data
|
for filter in self.filters:
|
||||||
for filter in self.filters:
|
if self.is_descendant_from_class(element, filter):
|
||||||
if self.is_descendant_from_class(element, filter):
|
self.filtered_elements.setdefault(filter, {})[element.attrib['name']] = data
|
||||||
self.filtered_elements.setdefault(filter, {})[element.attrib['name']] = data
|
|
||||||
|
|
||||||
def export(self):
|
def export(self, filename):
|
||||||
final = {}
|
final = {}
|
||||||
for filter in self.filters:
|
for filter in self.filters:
|
||||||
final.update(self.filtered_elements[filter])
|
final.update(self.filtered_elements[filter])
|
||||||
with open("output.json", "w") as file:
|
with open(filename, "w") as file:
|
||||||
file.write(json.dumps(collections.OrderedDict(sorted(final.items())), indent=4))
|
file.write(json.dumps(collections.OrderedDict(sorted(final.items())), indent=4))
|
||||||
|
|
||||||
def is_descendant_from_class(self, element, class_name):
|
def is_descendant_from_class(self, element, class_name):
|
||||||
@@ -91,7 +84,9 @@ class IFC4Extractor:
|
|||||||
if 'type' in attribute.attrib:
|
if 'type' in attribute.attrib:
|
||||||
attributes.append({
|
attributes.append({
|
||||||
'name': attribute.attrib['name'],
|
'name': attribute.attrib['name'],
|
||||||
'type': attribute.attrib['type'].replace('ifc:', '')
|
'type': attribute.attrib['type'].replace('ifc:', ''),
|
||||||
|
'is_select': False,
|
||||||
|
'select_types': []
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
type_element = attribute.find('./xs:complexType/xs:sequence/xs:element[@ref]', self.ns)
|
type_element = attribute.find('./xs:complexType/xs:sequence/xs:element[@ref]', self.ns)
|
||||||
@@ -102,7 +97,7 @@ class IFC4Extractor:
|
|||||||
type_element = attribute.find('./xs:complexType/xs:group', self.ns)
|
type_element = attribute.find('./xs:complexType/xs:group', self.ns)
|
||||||
if type_element is not None:
|
if type_element is not None:
|
||||||
is_select = True
|
is_select = True
|
||||||
select_types = [e.attrib['ref'].replace('ifc:', '') for e in
|
select_types = [e.attrib['ref'].replace('ifc:', '').replace('-wrapper', '') for e in
|
||||||
self.root.findall("./xs:group[@name='{}']/xs:choice/xs:element[@ref]".format(
|
self.root.findall("./xs:group[@name='{}']/xs:choice/xs:element[@ref]".format(
|
||||||
type_element.attrib['ref'].replace('ifc:', '')
|
type_element.attrib['ref'].replace('ifc:', '')
|
||||||
), self.ns)]
|
), self.ns)]
|
||||||
@@ -149,7 +144,18 @@ class IFC2X3Extractor(IFC4Extractor):
|
|||||||
def get_complex_attributes(self, element, attributes = None):
|
def get_complex_attributes(self, element, attributes = None):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
extractor = IFC4Extractor("IFC4_ADD2.xsd")
|
filename_filters = {
|
||||||
#extractor = IFC2X3Extractor("IFC2X3.xsd")
|
'IfcElement_IFC4.json': ['IfcElement'],
|
||||||
extractor.extract()
|
'IfcSpatialStructureElement_IFC4.json': ['IfcSpatialStructureElement'],
|
||||||
extractor.export()
|
'IfcStructural_IFC4.json': ['IfcStructuralActivity', 'IfcStructuralItem'],
|
||||||
|
'IfcMaterialDefinition_IFC4.json': ['IfcMaterialDefinition'],
|
||||||
|
'IfcParameterizedProfileDef_IFC4.json': ['IfcParameterizedProfileDef'],
|
||||||
|
'IfcBoundaryCondition_IFC4.json': ['IfcBoundaryCondition']
|
||||||
|
}
|
||||||
|
|
||||||
|
for filename, filters in filename_filters.items():
|
||||||
|
extractor = IFC4Extractor("IFC4_ADD2.xsd")
|
||||||
|
extractor.filters = filters
|
||||||
|
#extractor = IFC2X3Extractor("IFC2X3.xsd")
|
||||||
|
extractor.extract()
|
||||||
|
extractor.export(filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user