From 053e4e1185e37498771fce296db79ecd387c0a54 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 8 Jun 2022 12:06:59 +1000 Subject: [PATCH] #2224 Enabling coordination mode now excludes types and openings --- src/blenderbim/blenderbim/bim/import_ifc.py | 12 +++++++++--- src/blenderbim/blenderbim/bim/module/project/prop.py | 1 + src/blenderbim/blenderbim/bim/module/project/ui.py | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/import_ifc.py b/src/blenderbim/blenderbim/bim/import_ifc.py index 92e4dd473c..119f61a883 100644 --- a/src/blenderbim/blenderbim/bim/import_ifc.py +++ b/src/blenderbim/blenderbim/bim/import_ifc.py @@ -244,8 +244,9 @@ class IfcImporter: self.profile_code("Create spatial elements") self.create_structural_items() self.profile_code("Create structural items") - self.create_type_products() - self.profile_code("Create type products") + if not self.ifc_import_settings.is_coordinating: + self.create_type_products() + self.profile_code("Create type products") self.place_objects_in_collections() self.profile_code("Place objects in collections") if self.ifc_import_settings.should_merge_by_class: @@ -325,6 +326,9 @@ class IfcImporter: self.elements = self.file.by_type("IfcElement") self.annotations = set(self.file.by_type("IfcAnnotation")) + if self.ifc_import_settings.is_coordinating: + self.elements = [e for e in self.elements if e.Representation and not e.is_a("IfcFeatureElement")] + self.elements = set(self.elements[offset:offset_limit]) if self.ifc_import_settings.has_filter and self.ifc_import_settings.should_filter_spatial_elements: @@ -850,7 +854,7 @@ class IfcImporter: shape = iterator.get() if shape: product = self.file.by_id(shape.guid) - self.create_product(self.file.by_id(shape.guid), shape) + self.create_product(product, shape) results.add(product) if not iterator.next(): break @@ -1928,6 +1932,7 @@ class IfcImportSettings: self.should_use_native_meshes = False self.should_clean_mesh = True self.should_cache = True + self.is_coordinating = True self.deflection_tolerance = 0.001 self.angular_tolerance = 0.5 self.distance_limit = 1000 @@ -1957,6 +1962,7 @@ class IfcImportSettings: settings.should_use_native_meshes = props.should_use_native_meshes settings.should_clean_mesh = props.should_clean_mesh settings.should_cache = props.should_cache + settings.is_coordinating = props.is_coordinating settings.deflection_tolerance = props.deflection_tolerance settings.angular_tolerance = props.angular_tolerance settings.distance_limit = props.distance_limit diff --git a/src/blenderbim/blenderbim/bim/module/project/prop.py b/src/blenderbim/blenderbim/bim/module/project/prop.py index d2f4645bc9..36cc3b4391 100644 --- a/src/blenderbim/blenderbim/bim/module/project/prop.py +++ b/src/blenderbim/blenderbim/bim/module/project/prop.py @@ -142,6 +142,7 @@ class BIMProjectProperties(PropertyGroup): should_clean_mesh: BoolProperty(name="Import and Clean Mesh", default=True) should_use_native_meshes: BoolProperty(name="Native Meshes", default=False) should_cache: BoolProperty(name="Cache", default=False) + is_coordinating: BoolProperty(name="For Coordination Only", default=False) deflection_tolerance: FloatProperty(name="Deflection Tolerance", default=0.001) angular_tolerance: FloatProperty(name="Angular Tolerance", default=0.5) distance_limit: FloatProperty(name="Distance Limit", default=1000) diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index 1fc22aac97..4a3a5182c4 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -82,6 +82,7 @@ class BIM_PT_project(Panel): row.prop(pprops, "should_use_native_meshes") row.prop(pprops, "should_merge_materials_by_colour") row = self.layout.row() + row.prop(pprops, "is_coordinating") row.prop(pprops, "should_clean_mesh") row = self.layout.row() row.prop(pprops, "deflection_tolerance")