From f540e3495c501b0ecd2f0c383d21130cbc67b00e Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 11 Mar 2020 15:44:00 +1100 Subject: [PATCH] Allow user toggle if aggregates are created. Useful for artists. --- src/ifcblenderexport/blenderbim/import_ifc.py | 8 ++++++-- src/ifcblenderexport/blenderbim/operator.py | 1 + src/ifcblenderexport/blenderbim/prop.py | 1 + src/ifcblenderexport/blenderbim/ui.py | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/import_ifc.py b/src/ifcblenderexport/blenderbim/import_ifc.py index 222bae1f94..814fdaff94 100644 --- a/src/ifcblenderexport/blenderbim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/import_ifc.py @@ -151,7 +151,8 @@ class IfcImporter(): self.calculate_unit_scale() self.create_project() self.create_spatial_hierarchy() - self.create_aggregates() + if self.ifc_import_settings.should_import_aggregates: + self.create_aggregates() if self.ifc_import_settings.should_import_opening_elements: self.create_openings_collection() self.purge_diff() @@ -570,8 +571,10 @@ class IfcImporter(): global_id = element.Decomposes[0].RelatingObject.GlobalId if global_id in self.spatial_structure_elements: collection = self.spatial_structure_elements[global_id]['blender'] - else: + elif self.ifc_import_settings.should_import_aggregates: collection = bpy.data.collections.get(f'IfcRelAggregates/{element.Decomposes[0].id()}') + else: + return self.place_object_in_spatial_tree(element.Decomposes[0].RelatingObject, obj) if collection: collection.objects.link(obj) elif hasattr(element, 'HasFillings') \ @@ -717,4 +720,5 @@ class IfcImportSettings: self.should_use_legacy = False self.should_merge_by_class = False self.should_merge_by_material = False + self.should_import_aggregates = True self.diff_file = None diff --git a/src/ifcblenderexport/blenderbim/operator.py b/src/ifcblenderexport/blenderbim/operator.py index 2351c376dd..e11cdee6c3 100644 --- a/src/ifcblenderexport/blenderbim/operator.py +++ b/src/ifcblenderexport/blenderbim/operator.py @@ -101,6 +101,7 @@ class ImportIFC(bpy.types.Operator, ImportHelper): ifc_import_settings.should_treat_styled_item_as_material = bpy.context.scene.BIMProperties.import_should_treat_styled_item_as_material ifc_import_settings.should_use_cpu_multiprocessing = bpy.context.scene.BIMProperties.import_should_use_cpu_multiprocessing ifc_import_settings.should_use_legacy = bpy.context.scene.BIMProperties.import_should_use_legacy + ifc_import_settings.should_import_aggregates = bpy.context.scene.BIMProperties.import_should_import_aggregates ifc_import_settings.should_merge_by_class = bpy.context.scene.BIMProperties.import_should_merge_by_class ifc_import_settings.should_merge_by_material = bpy.context.scene.BIMProperties.import_should_merge_by_material ifc_importer = import_ifc.IfcImporter(ifc_import_settings) diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index f57d50c53a..11462bb076 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -382,6 +382,7 @@ class BIMProperties(PropertyGroup): import_should_treat_styled_item_as_material: BoolProperty(name="Import Treating Styled Item as Material", default=False) import_should_use_legacy: BoolProperty(name="Import with Legacy Importer", default=False) import_should_use_cpu_multiprocessing: BoolProperty(name="Import with CPU Multiprocessing", default=False) + import_should_import_aggregates: BoolProperty(name="Import Aggregates", default=True) import_should_merge_by_class: BoolProperty(name="Import and Merge by Class", default=False) import_should_merge_by_material: BoolProperty(name="Import and Merge by Material", default=False) qa_reject_element_reason: StringProperty(name="Element Rejection Reason") diff --git a/src/ifcblenderexport/blenderbim/ui.py b/src/ifcblenderexport/blenderbim/ui.py index a84d774f14..c67790c3c5 100644 --- a/src/ifcblenderexport/blenderbim/ui.py +++ b/src/ifcblenderexport/blenderbim/ui.py @@ -645,6 +645,8 @@ class BIM_PT_mvd(Panel): layout.label(text='Simplifications:') + row = layout.row() + row.prop(bim_properties, 'import_should_import_aggregates') row = layout.row() row.prop(bim_properties, 'import_should_merge_by_class') row = layout.row()