diff --git a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py index 87caeeb83e..088e630753 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py @@ -63,6 +63,7 @@ classes = ( operator.ResizeText, operator.SaveDrawingStyle, operator.SelectDocIfcFile, + operator.SelectAssignedProduct, prop.Variable, prop.Drawing, prop.Schedule, diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 6ee100164d..a788a00f7a 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1363,3 +1363,11 @@ class ContractSheet(bpy.types.Operator): sheet.is_expanded = False core.load_sheets(tool.Drawing) return {"FINISHED"} + +class SelectAssignedProduct(bpy.types.Operator, Operator): + bl_idname = "bim.select_assigned_product" + bl_label = "Select Assigned Product" + bl_options = {"REGISTER", "UNDO"} + + def _execute(self, context): + core.select_assigned_product(tool.Drawing) \ No newline at end of file diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py index 4ec7ed8cfd..692e7e2141 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py @@ -314,6 +314,7 @@ class BIM_PT_product_assignments(Panel): row = self.layout.row(align=True) row.label(text=ProductAssignmentsData.data["relating_product"] or "No Relating Product", icon="OBJECT_DATA") row.operator("bim.enable_editing_assigned_product", icon="GREASEPENCIL", text="") + row.operator("bim.select_assigned_product", icon="RESTRICT_SELECT_OFF", text="") class BIM_PT_text(Panel): diff --git a/src/blenderbim/blenderbim/core/drawing.py b/src/blenderbim/blenderbim/core/drawing.py index 48c25692bf..6730609afa 100644 --- a/src/blenderbim/blenderbim/core/drawing.py +++ b/src/blenderbim/blenderbim/core/drawing.py @@ -259,3 +259,6 @@ def sync_references(ifc, collector, drawing_tool, drawing=None): if reference_obj and ifc.is_edited(reference_obj): drawing_tool.sync_object_representation(reference_obj) + +def select_assigned_product(drawing): + drawing.select_assigned_product() \ No newline at end of file diff --git a/src/blenderbim/blenderbim/core/tool.py b/src/blenderbim/blenderbim/core/tool.py index 5c5aa657aa..bcd01d2693 100644 --- a/src/blenderbim/blenderbim/core/tool.py +++ b/src/blenderbim/blenderbim/core/tool.py @@ -198,6 +198,7 @@ class Drawing: def open_spreadsheet(cls, uri): pass def open_svg(cls, filepath): pass def run_root_assign_class(cls, obj=None, ifc_class=None, predefined_type=None, should_add_representation=True, context=None, ifc_representation_class=None): pass + def select_assigned_product(cls, drawing): pass def set_drawing_collection_name(cls, group, collection): pass def show_decorations(cls): pass def sync_object_placement(cls, obj): pass diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index f64bcc54ce..7ee69335eb 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -898,3 +898,10 @@ class Drawing(blenderbim.core.tool.Drawing): if tool.Ifc.get_schema() == "IFC2X3": return reference.ReferenceToDocument[0] return reference.ReferencedDocument + @classmethod + def select_assigned_product(cls): + obj = cls.get_active_object() + element = tool.Ifc.get_entity(obj) + product = cls.get_assigned_product(element) + if product: + tool.Ifc.get_object(product).select_set(True) \ No newline at end of file