From ffb6c82541a57eed823cf28307b7c376598e763b Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Sun, 4 Aug 2024 09:40:34 -0500 Subject: [PATCH] snapshot --- .../blenderbim/bim/module/drawing/operator.py | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 4371ed1be8..3cc5599bf3 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1513,16 +1513,20 @@ class ActivateDrawing(bpy.types.Operator): bl_idname = "bim.activate_drawing" bl_label = "Activate Drawing" bl_options = {"REGISTER", "UNDO"} - bl_description = "Activates the selected drawing view.\n\n" + "ALT+CLICK to keep the viewport position" + bl_description = "Activates the selected drawing view.\n\n" + "ALT+CLICK to keep the viewport position.\n\n" + "SHIFT+CLICK activiate drawing without turning objects on/off." drawing: bpy.props.IntProperty() camera_view_point: bpy.props.BoolProperty(name="Camera View Point", default=True, options={"SKIP_SAVE"}) + switch_camera_only: bpy.props.BoolProperty(name="Only Changes Camera View", default=False, options={"SKIP_SAVE"}) def invoke(self, context, event): # keep the viewport position on alt+click # make sure to use SKIP_SAVE on property, otherwise it might get stuck if event.type == "LEFTMOUSE" and event.alt: self.camera_view_point = False + # Only activates the camera view on alt+shift. Does not turn on/off objects in scene + if event.type == "LEFTMOUSE" and event.shift: + self.switch_camera_only = True return self.execute(context) def execute(self, context): @@ -1531,30 +1535,35 @@ class ActivateDrawing(bpy.types.Operator): drawing = tool.Ifc.get().by_id(self.drawing) dprops = bpy.context.scene.DocProperties - if not self.camera_view_point: - viewport_position = tool.Blender.get_viewport_position() + camera = tool.Drawing.import_drawing(drawing) - core.activate_drawing_view(tool.Ifc, tool.Blender, tool.Drawing, drawing=drawing) + if self.switch_camera_only: + tool.Blender.activate_camera(camera) + else: + if not self.camera_view_point: + viewport_position = tool.Blender.get_viewport_position() - if not self.camera_view_point: - tool.Blender.set_viewport_position(viewport_position) + core.activate_drawing_view(tool.Ifc, tool.Blender, tool.Drawing, drawing=drawing) - dprops.active_drawing_id = self.drawing - # reset DrawingsData to reload_drawing_styles work correctly - DrawingsData.is_loaded = False - dprops.drawing_styles.clear() - if ifcopenshell.util.element.get_pset(drawing, "EPset_Drawing", "HasUnderlay"): - bpy.ops.bim.reload_drawing_styles() - bpy.ops.bim.activate_drawing_style() - core.sync_references(tool.Ifc, tool.Collector, tool.Drawing, drawing=tool.Ifc.get().by_id(self.drawing)) - CutDecorator.install(context) - tool.Drawing.show_decorations() + if not self.camera_view_point: + tool.Blender.set_viewport_position(viewport_position) - # Save drawing bounds to the .ifc file - camera = context.scene.camera - camera_props = camera.data.BIMCameraProperties - if camera_props.update_representation(camera): - bpy.ops.bim.update_representation(obj=camera.name, ifc_representation_class="") + dprops.active_drawing_id = self.drawing + # reset DrawingsData to reload_drawing_styles work correctly + DrawingsData.is_loaded = False + dprops.drawing_styles.clear() + if ifcopenshell.util.element.get_pset(drawing, "EPset_Drawing", "HasUnderlay"): + bpy.ops.bim.reload_drawing_styles() + bpy.ops.bim.activate_drawing_style() + core.sync_references(tool.Ifc, tool.Collector, tool.Drawing, drawing=tool.Ifc.get().by_id(self.drawing)) + CutDecorator.install(context) + tool.Drawing.show_decorations() + + # Save drawing bounds to the .ifc file + camera = context.scene.camera + camera_props = camera.data.BIMCameraProperties + if camera_props.update_representation(camera): + bpy.ops.bim.update_representation(obj=camera.name, ifc_representation_class="") return {"FINISHED"}