From 818226d1e2e899941656cc3ec79ddea11b6ccf09 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 13 Jul 2023 22:33:52 +1000 Subject: [PATCH] Fix #3414. The project wizard now doesn't load a fresh session by default. Note that File > Open still enforces a fresh session. --- .../blenderbim/bim/module/project/operator.py | 22 +++++++++---------- .../blenderbim/bim/module/project/ui.py | 3 +-- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py index 3cd930fe0c..369d8d5c97 100644 --- a/src/blenderbim/blenderbim/bim/module/project/operator.py +++ b/src/blenderbim/blenderbim/bim/module/project/operator.py @@ -582,34 +582,34 @@ class LoadProject(bpy.types.Operator, IFCFileSelector): @persistent def load_handler(*args): bpy.app.handlers.load_post.remove(load_handler) - if tool.Blender.is_default_scene(): - for obj in bpy.data.objects: - bpy.data.objects.remove(obj) self.finish_loading_project(context) if self.should_start_fresh_session: - # WARNING: wm.read_homefile clears context - # which could lead to some operators to fail: + # WARNING: wm.read_homefile clears context which could lead to some + # operators to fail: # https://blender.stackexchange.com/a/282558/135166 - # So we continue using the load_post handler - # thats triggered when context is already restored + # So we continue using the load_post handler thats triggered when + # context is already restored bpy.app.handlers.load_post.append(load_handler) bpy.ops.wm.read_homefile() return {"FINISHED"} else: return self.finish_loading_project(context) - def finish_loading_project(self, context): if not self.is_existing_ifc_file(): return {"FINISHED"} + + if tool.Blender.is_default_scene(): + for obj in bpy.data.objects: + bpy.data.objects.remove(obj) + context.scene.BIMProperties.ifc_file = self.get_filepath() context.scene.BIMProjectProperties.is_loading = True context.scene.BIMProjectProperties.total_elements = len(tool.Ifc.get().by_type("IfcElement")) if not self.is_advanced: bpy.ops.bim.load_project_elements() - return {"FINISHED"} - + return {"FINISHED"} def invoke(self, context, event): context.window_manager.fileselect_add(self) @@ -987,7 +987,7 @@ class ExportIFC(bpy.types.Operator): if bpy.data.is_saved and bpy.data.is_dirty and bpy.data.filepath: bpy.ops.wm.save_mainfile(filepath=bpy.data.filepath) blenderbim.bim.handler.purge_module_data() - self.report({"INFO"}, f"IFC Project \"{os.path.basename(output_file)}\" Saved") + self.report({"INFO"}, f'IFC Project "{os.path.basename(output_file)}" Saved') if bpy.data.is_saved: bpy.ops.wm.save_mainfile("INVOKE_DEFAULT") diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index 882211e716..e67a125762 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -209,7 +209,6 @@ class BIM_PT_project(Panel): row = self.layout.row() row.label(text="File Not Saved", icon="ERROR") - def draw_create_project_ui(self, context): props = context.scene.BIMProperties pprops = context.scene.BIMProjectProperties @@ -226,7 +225,7 @@ class BIM_PT_project(Panel): row = self.layout.row(align=True) row.operator("bim.create_project") - row.operator("bim.load_project").should_start_fresh_session = True + row.operator("bim.load_project").should_start_fresh_session = False class BIM_PT_project_library(Panel):