diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index 072dad44ed..e0fed685bd 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -437,6 +437,8 @@ class IfcImporter(): self.ifc_import_settings.should_ignore_site_coordinates = True if self.is_ifc_class_far_away('IfcBuilding'): self.ifc_import_settings.should_ignore_building_coordinates = True + elif 'prostructures' in applications[0].ApplicationFullName.lower(): + self.ifc_import_settings.should_allow_non_element_aggregates = True elif applications[0].ApplicationFullName.lower() == '12d model': self.ifc_import_settings.should_reset_absolute_coordinates = True elif 'Civil 3D' in applications[0].ApplicationFullName: @@ -1599,8 +1601,16 @@ class IfcImporter(): self.add_related_objects(collection, rel_aggregate.RelatedObjects) def create_aggregates(self): - rel_aggregates = [a for a in self.file.by_type('IfcRelAggregates') - if a.RelatingObject.is_a('IfcElement')] + if self.ifc_import_settings.should_allow_non_element_aggregates: + if self.file.schema == 'IFC2X3': + rel_aggregates = [a for a in self.file.by_type('IfcRelAggregates') + if not a.RelatingObject.is_a('IfcSpatialStructureElement')] + else: + rel_aggregates = [a for a in self.file.by_type('IfcRelAggregates') + if not a.RelatingObject.is_a('IfcSpatialElement')] + else: + rel_aggregates = [a for a in self.file.by_type('IfcRelAggregates') + if a.RelatingObject.is_a('IfcElement')] for collection in self.project['blender'].children: if collection.name == 'Aggregates': self.aggregate_collection = collection @@ -2135,6 +2145,7 @@ class IfcImportSettings: settings.should_merge_by_material = scene_bim.import_should_merge_by_material settings.should_merge_materials_by_colour = scene_bim.import_should_merge_materials_by_colour settings.should_clean_mesh = scene_bim.import_should_clean_mesh + settings.should_allow_non_element_aggregates = scene_bim.import_should_allow_non_element_aggregates settings.should_offset_model = scene_bim.import_should_offset_model settings.model_offset_coordinates = [float(o) for o in scene_bim.import_model_offset_coordinates.split(',')] if scene_bim.import_model_offset_coordinates else (0, 0, 0) settings.deflection_tolerance = scene_bim.import_deflection_tolerance diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index b6790cab65..58ba99c851 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -1216,6 +1216,7 @@ class BIMProperties(PropertyGroup): import_should_clean_mesh: BoolProperty(name="Import and Clean Mesh", default=True) import_deflection_tolerance: FloatProperty(name="Import Deflection Tolerance", default=0.001) import_angular_tolerance: FloatProperty(name="Import Angular Tolerance", default=0.5) + import_should_allow_non_element_aggregates: BoolProperty(name="Import Non-Element Aggregates", default=False) import_should_offset_model: BoolProperty(name="Import and Offset Model", default=False) import_model_offset_coordinates: StringProperty(name="Model Offset Coordinates", default='0,0,0') qa_reject_element_reason: StringProperty(name="Element Rejection Reason") diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index f9db48354c..7236dc25da 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1756,6 +1756,8 @@ class BIM_PT_mvd(Panel): layout.label(text='ProStructures Workarounds:') + row = layout.row() + row.prop(bim_properties, 'import_should_allow_non_element_aggregates') row = layout.row() row.prop(bim_properties, 'import_should_offset_model') row = layout.row()