From 2001119dffda34418a14b98478ea7e22d2716f08 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 3 May 2023 15:38:51 +0500 Subject: [PATCH] A bit more intuitive adding drawing/schedule to the sheet Now it will detect currently active sheet even if you have sheet's drawing/titleblock/schedule selected. --- src/blenderbim/blenderbim/bim/module/drawing/operator.py | 4 ++-- src/blenderbim/blenderbim/tool/drawing.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 0152bc23a5..c94310d247 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1034,7 +1034,7 @@ class AddDrawingToSheet(bpy.types.Operator, Operator): def _execute(self, context): props = context.scene.DocProperties active_drawing = props.drawings[props.active_drawing_index] - active_sheet = props.sheets[props.active_sheet_index] + active_sheet = tool.Drawing.get_active_sheet(context) drawing = tool.Ifc.get().by_id(active_drawing.ifc_definition_id) drawing_reference = tool.Drawing.get_drawing_document(drawing) @@ -1574,7 +1574,7 @@ class AddScheduleToSheet(bpy.types.Operator, Operator): def _execute(self, context): props = context.scene.DocProperties active_schedule = props.schedules[props.active_schedule_index] - active_sheet = props.sheets[props.active_sheet_index] + active_sheet = tool.Drawing.get_active_sheet(context) schedule = tool.Ifc.get().by_id(active_schedule.ifc_definition_id) if tool.Ifc.get_schema() == "IFC2X3": schedule_location = tool.Drawing.get_path_with_ext(schedule.DocumentReferences[0].Location, "svg") diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index 17c61a9de0..96db72c67f 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -671,6 +671,11 @@ class Drawing(blenderbim.core.tool.Drawing): new.name = os.path.basename(reference.Location) new.reference_type = reference.Description + @classmethod + def get_active_sheet(cls, context): + props = context.scene.DocProperties + return next(s for s in props.sheets[: props.active_sheet_index + 1][::-1] if s.is_sheet) + @classmethod def import_text_attributes(cls, obj): props = obj.BIMTextProperties