From d76679a45f286b2c7cfe469ea52c823df932e1ac Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 8 Jun 2022 11:56:22 +1000 Subject: [PATCH] #2224 Cache seems unstable for some large models so allow option to disable --- src/blenderbim/blenderbim/bim/import_ifc.py | 16 ++++++++++------ .../blenderbim/bim/module/project/prop.py | 1 + .../blenderbim/bim/module/project/ui.py | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/import_ifc.py b/src/blenderbim/blenderbim/bim/import_ifc.py index 259915d298..92e4dd473c 100644 --- a/src/blenderbim/blenderbim/bim/import_ifc.py +++ b/src/blenderbim/blenderbim/bim/import_ifc.py @@ -683,9 +683,10 @@ class IfcImporter: ) else: iterator = ifcopenshell.geom.iterator(self.settings, self.file, include=products) - cache = IfcStore.get_cache() - if cache: - iterator.set_cache(cache) + if self.ifc_import_settings.should_cache: + cache = IfcStore.get_cache() + if cache: + iterator.set_cache(cache) valid_file = iterator.initialize() if not valid_file: return results @@ -832,9 +833,10 @@ class IfcImporter: ) else: iterator = ifcopenshell.geom.iterator(self.settings_2d, self.file, include=products) - cache = IfcStore.get_cache() - if cache: - iterator.set_cache(cache) + if self.ifc_import_settings.should_cache: + cache = IfcStore.get_cache() + if cache: + iterator.set_cache(cache) valid_file = iterator.initialize() if not valid_file: return results @@ -1925,6 +1927,7 @@ class IfcImportSettings: self.should_merge_materials_by_colour = False self.should_use_native_meshes = False self.should_clean_mesh = True + self.should_cache = True self.deflection_tolerance = 0.001 self.angular_tolerance = 0.5 self.distance_limit = 1000 @@ -1953,6 +1956,7 @@ class IfcImportSettings: settings.should_merge_materials_by_colour = props.should_merge_materials_by_colour 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.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 1b7e4740b9..d2f4645bc9 100644 --- a/src/blenderbim/blenderbim/bim/module/project/prop.py +++ b/src/blenderbim/blenderbim/bim/module/project/prop.py @@ -141,6 +141,7 @@ class BIMProjectProperties(PropertyGroup): should_merge_materials_by_colour: BoolProperty(name="Import and Merge Materials by Colour", default=False) 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) 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 e6017bcd6b..1fc22aac97 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -76,6 +76,7 @@ class BIM_PT_project(Panel): row = self.layout.row() row.prop(pprops, "should_merge_by_class") row = self.layout.row() + row.prop(pprops, "should_cache") row.prop(pprops, "should_merge_by_material") row = self.layout.row() row.prop(pprops, "should_use_native_meshes")