From 66431158b5ced0378d2464dabb98546f08b72c68 Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Sun, 12 Nov 2023 10:11:13 -0600 Subject: [PATCH] fixes #3908: Close the opening (bim.edit_openings) while having the opening selected --- src/blenderbim/blenderbim/bim/module/model/opening.py | 6 ++++++ src/blenderbim/blenderbim/bim/module/model/workspace.py | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py index 795abf3652..6b22dd0a83 100644 --- a/src/blenderbim/blenderbim/bim/module/model/opening.py +++ b/src/blenderbim/blenderbim/bim/module/model/opening.py @@ -732,6 +732,9 @@ class HideOpenings(Operator, tool.Ifc.Operator): element = tool.Ifc.get_entity(obj) if not element: continue + if element.is_a("IfcOpeningElement"): + element = element.VoidsElements[0].RelatingBuildingElement + obj = tool.Ifc.get_object(element) openings = [r.RelatedOpeningElement for r in element.HasOpenings] for opening in openings: opening_obj = tool.Ifc.get_object(opening) @@ -759,6 +762,9 @@ class EditOpenings(Operator, tool.Ifc.Operator): element = tool.Ifc.get_entity(obj) if not element: continue + if element.is_a("IfcOpeningElement"): + element = element.VoidsElements[0].RelatingBuildingElement + obj = tool.Ifc.get_object(element) openings = [r.RelatedOpeningElement for r in element.HasOpenings] for opening in openings: similar_openings = [o for o in all_openings if o.ObjectPlacement == opening.ObjectPlacement] diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index 2180040a52..03c76396a6 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -427,11 +427,14 @@ class BimToolUI: row.operator("bim.show_openings", icon="HIDE_OFF", text="") if AuthoringData.data["active_class"] in ("IfcOpeningElement",): + row.operator("bim.edit_openings", icon="CHECKMARK", text="") + row.operator("bim.hide_openings", icon="CANCEL", text="") if len(context.selected_objects) == 2: row = cls.layout.row(align=True) row.label(text="", icon="EVENT_SHIFT") row.label(text="", icon="EVENT_L") row.operator("bim.clone_opening", text="Clone Opening") + cls.layout.row(align=True).label(text="Align") add_layout_hotkey_operator(cls.layout, "Align Exterior", "S_X", "")