From f5fa371492de61001398219424eb897a74b84ca2 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 5 Mar 2024 14:47:37 +0500 Subject: [PATCH] load clipping planes decorator reopening .blend file --- .../blenderbim/bim/module/project/__init__.py | 6 ++++-- .../blenderbim/bim/module/project/decorator.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/project/__init__.py b/src/blenderbim/blenderbim/bim/module/project/__init__.py index 5c0a004ebc..7dc03dceaa 100644 --- a/src/blenderbim/blenderbim/bim/module/project/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/project/__init__.py @@ -17,7 +17,7 @@ # along with BlenderBIM Add-on. If not, see . import bpy -from . import ui, prop, operator, workspace, gizmo +from . import ui, prop, operator, workspace, gizmo, decorator classes = ( operator.AppendEntireLibrary, @@ -81,6 +81,7 @@ def register(): if not bpy.app.background: bpy.utils.register_tool(workspace.ExploreTool, after={"builtin.transform"}, separator=True, group=False) bpy.types.Scene.BIMProjectProperties = bpy.props.PointerProperty(type=prop.BIMProjectProperties) + bpy.app.handlers.load_post.append(decorator.toggle_decorations_on_load) bpy.types.TOPBAR_MT_file.prepend(ui.file_menu) bpy.types.TOPBAR_MT_file_context_menu.prepend(ui.file_menu) wm = bpy.context.window_manager @@ -101,9 +102,10 @@ def register(): def unregister(): if not bpy.app.background: bpy.utils.unregister_tool(workspace.ExploreTool) + del bpy.types.Scene.BIMProjectProperties + bpy.app.handlers.load_post.remove(decorator.toggle_decorations_on_load) bpy.types.TOPBAR_MT_file.remove(ui.file_menu) bpy.types.TOPBAR_MT_file_context_menu.remove(ui.file_menu) - del bpy.types.Scene.BIMProjectProperties wm = bpy.context.window_manager kc = wm.keyconfigs.addon diff --git a/src/blenderbim/blenderbim/bim/module/project/decorator.py b/src/blenderbim/blenderbim/bim/module/project/decorator.py index 916687a8da..43f64d5497 100644 --- a/src/blenderbim/blenderbim/bim/module/project/decorator.py +++ b/src/blenderbim/blenderbim/bim/module/project/decorator.py @@ -17,11 +17,26 @@ # along with BlenderBIM Add-on. If not, see . import gpu +import bpy import bmesh import blenderbim.tool as tool from bpy.types import SpaceView3D from mathutils import Vector from gpu_extras.batch import batch_for_shader +from bpy.app.handlers import persistent + + +@persistent +def toggle_decorations_on_load(*args): + if bpy.context.scene.BIMProjectProperties.clipping_planes: + ClippingPlaneDecorator.install(bpy.context) + else: + ClippingPlaneDecorator.uninstall() + + # NOTE: ProjectDecorator cannot be loaded at reopening .blend file + # since selected_vertices and other data is stored in queried object's + # custom attributes and they get purged after Blender session is closed + # as queried object is linked from separate .blend file. class ProjectDecorator: