From 3f09dff79ea38a49bf490a94f04ab144e12cde81 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 8 Aug 2025 12:48:19 +0500 Subject: [PATCH] Option to always cache geometry Settings location - https://files.catbox.moe/5cjtc1.png --- src/bonsai/bonsai/bim/import_ifc.py | 3 ++- src/bonsai/bonsai/bim/module/project/prop.py | 9 ++++++++- src/bonsai/bonsai/bim/ui.py | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/bim/import_ifc.py b/src/bonsai/bonsai/bim/import_ifc.py index 9e1170f98c..d9dc6cea60 100644 --- a/src/bonsai/bonsai/bim/import_ifc.py +++ b/src/bonsai/bonsai/bim/import_ifc.py @@ -1222,6 +1222,7 @@ class IfcImportSettings: context=None, input_file: Optional[str] = None, logger: Optional[logging.Logger] = None ) -> IfcImportSettings: scene_diff = tool.Blender.get_diff_props() + prefs = tool.Blender.get_addon_preferences() props = tool.Project.get_project_props() settings = IfcImportSettings() settings.input_file = input_file @@ -1234,7 +1235,7 @@ class IfcImportSettings: settings.should_merge_materials_by_colour = props.should_merge_materials_by_colour settings.should_load_geometry = props.should_load_geometry settings.should_clean_mesh = props.should_clean_mesh - settings.should_cache = props.should_cache + settings.should_cache = prefs.should_always_cache or props.should_cache settings.deflection_tolerance = props.deflection_tolerance settings.angular_tolerance = props.angular_tolerance settings.void_limit = props.void_limit diff --git a/src/bonsai/bonsai/bim/module/project/prop.py b/src/bonsai/bonsai/bim/module/project/prop.py index 23e23ef0d5..64263ea357 100644 --- a/src/bonsai/bonsai/bim/module/project/prop.py +++ b/src/bonsai/bonsai/bim/module/project/prop.py @@ -309,7 +309,14 @@ class BIMProjectProperties(PropertyGroup): ), default=False, ) - should_cache: BoolProperty(name="Cache", default=False) + should_cache: BoolProperty( # pyright: ignore[reportRedeclaration] + name="Cache", + description=( + "Cache loaded geometry to .h5 file in your cache directory (see in preferences) " + "for faster imports and geometry reloads." + ), + default=False, + ) deflection_tolerance: FloatProperty(name="Deflection Tolerance", default=0.001) angular_tolerance: FloatProperty(name="Angular Tolerance", default=0.5) void_limit: IntProperty( diff --git a/src/bonsai/bonsai/bim/ui.py b/src/bonsai/bonsai/bim/ui.py index 6f73f54b23..889f8406c0 100644 --- a/src/bonsai/bonsai/bim/ui.py +++ b/src/bonsai/bonsai/bim/ui.py @@ -447,6 +447,10 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): name="Disable Undo When Saving (Faster saves, no undo for you!)", default=False ) should_stream: BoolProperty(name="Stream Data From IFC-SPF (Only for advanced users)", default=False) + should_always_cache: BoolProperty( # pyright: ignore[reportRedeclaration] + name="Always Cache Geometry", + description="Whether to always cache geometry regardless of 'Cache' setting during Advanced Project Load.", + ) occurrence_name_style: bpy.props.EnumProperty( items=[("CLASS", "By Class", ""), ("TYPE", "By Type", ""), ("CUSTOM", "Custom", "")], name="Occurrence Name Style", @@ -512,6 +516,7 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): bsdd_load_test_dictionaries: bool should_disable_undo_on_save: bool should_stream: bool + should_always_cache: bool occurrence_name_style: Literal["CLASS", "TYPE", "CUSTOM"] occurrence_name_function: str data_dir: str @@ -605,6 +610,7 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): layout.prop(self, "opening_focus_opacity") layout.prop(self, "should_disable_undo_on_save") layout.prop(self, "should_stream") + layout.prop(self, "should_always_cache") layout.label(text="bSDD:") layout.prop(self, "bsdd_load_preview_dictionaries") layout.prop(self, "bsdd_load_inactive_dictionaries")