From 5c92bd73483aa416ae4e14f56b7d415d89f2df61 Mon Sep 17 00:00:00 2001 From: Long <931924+htlcnn@users.noreply.github.com> Date: Tue, 29 Dec 2020 06:00:49 +0700 Subject: [PATCH] implement Open Drawing Camera button (#1220) --- .../blenderbim/bim/__init__.py | 1 + .../blenderbim/bim/operator.py | 19 +++++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 13 ++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index 898da0642b..9f0bcd1334 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -160,6 +160,7 @@ if bpy is not None: operator.AddDrawingToSheet, operator.CreateSheets, operator.OpenView, + operator.OpenViewCamera, operator.ActivateView, operator.ExecuteIfcDiff, operator.VisualiseDiff, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index cd8e097b0d..c2ca58ff9f 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -2981,6 +2981,25 @@ class OpenView(bpy.types.Operator): return {"FINISHED"} +class OpenViewCamera(bpy.types.Operator): + bl_idname = "bim.open_view_camera" + bl_label = "Open View Camera" + view_name: bpy.props.StringProperty() + + def execute(self, context): + new_drawing_index = bpy.context.scene.DocProperties.drawings.find(self.view_name) + bpy.context.scene.DocProperties.active_drawing_index = new_drawing_index + drawing = bpy.context.scene.DocProperties.drawings[new_drawing_index] + bpy.context.view_layer.objects.active = drawing.camera + bpy.ops.object.select_all(action="DESELECT") + drawing.camera.select_set(True) + for area in bpy.context.screen.areas: + if area.ui_type == "PROPERTIES": + for space in area.spaces: + space.context = "DATA" + return {"FINISHED"} + + class CutSection(bpy.types.Operator): bl_idname = "bim.cut_section" bl_label = "Cut Section" diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index d00b48ba97..4bb1ff02d1 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -2259,6 +2259,17 @@ class BIM_UL_generic(bpy.types.UIList): layout.label(text="", translate=False) +class BIM_UL_drawinglist(bpy.types.UIList): + def draw_item(self, context, layout, data, item, icon, active_data, active_propname): + if item: + row = layout.row(align=True) + row.prop(item, "name", text="", emboss=False) + op = row.operator("bim.open_view_camera", icon="OUTLINER_OB_CAMERA", text="") + op.view_name = item.name + else: + layout.label(text="", translate=False) + + class BIM_UL_topics(bpy.types.UIList): def draw_item(self, context, layout, data, item, icon, active_data, active_propname): ob = data @@ -2529,7 +2540,7 @@ class BIM_PT_annotation_utilities(Panel): op = row.operator("bim.open_view", icon="URL", text="") op.view = props.drawings[props.active_drawing_index].name row.operator("bim.remove_drawing", icon="X", text="").index = props.active_drawing_index - layout.template_list("BIM_UL_generic", "", props, "drawings", props, "active_drawing_index") + layout.template_list("BIM_UL_drawinglist", "", props, "drawings", props, "active_drawing_index") layout.prop(props, "should_draw_decorations") layout.prop(props, "decorations_colour")