diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py index 9c93accf58..714f88f73f 100644 --- a/src/blenderbim/blenderbim/bim/module/model/opening.py +++ b/src/blenderbim/blenderbim/bim/module/model/opening.py @@ -506,10 +506,14 @@ class AddBoolean(Operator, tool.Ifc.Operator): bl_idname = "bim.add_boolean" bl_label = "Add Boolean" bl_options = {"REGISTER", "UNDO"} + bl_description = "Applies a boolean to the selected IFC object using the other selected blender object as a void" @classmethod def poll(cls, context): - return len(context.selected_objects) == 2 + if not len(context.selected_objects) == 2: + cls.poll_message_set("Exactly 2 objects need to be selected.") + return False + return True def _execute(self, context): props = context.scene.BIMModelProperties @@ -654,6 +658,7 @@ class RemoveBooleans(Operator, tool.Ifc.Operator, AddObjectHelper): bl_options = {"REGISTER", "UNDO"} def _execute(self, context): + upstream_obj = None for obj in context.selected_objects: if ( not obj.data @@ -681,6 +686,8 @@ class RemoveBooleans(Operator, tool.Ifc.Operator, AddObjectHelper): should_sync_changes_first=False, ) bpy.data.objects.remove(obj) + + tool.Blender.set_active_object(upstream_obj) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/void/ui.py b/src/blenderbim/blenderbim/bim/module/void/ui.py index 2347e63c4c..de0b978650 100644 --- a/src/blenderbim/blenderbim/bim/module/void/ui.py +++ b/src/blenderbim/blenderbim/bim/module/void/ui.py @@ -115,8 +115,17 @@ class BIM_PT_booleans(Panel): row.operator("bim.add_boolean", text="Apply Boolean", icon="ADD") show_boolean_button = row.row(align=True) show_boolean_button.operator("bim.show_booleans", text="", icon="HIDE_OFF") - show_boolean_button.enabled = BooleansData.data['total_booleans'] > 0 + show_boolean_button.enabled = BooleansData.data["total_booleans"] > 0 row.operator("bim.hide_booleans", text="", icon="HIDE_ON") + elif context.active_object.data.BIMMeshProperties.ifc_boolean_id: + upsteam_obj = context.active_object.data.BIMMeshProperties.obj + upstream_obj_ifc_id = upsteam_obj.BIMObjectProperties.ifc_definition_id + + row = layout.row(align=True) + row.label(text="Used as a boolean operand with:") + row.operator("bim.select_entity", text="", icon="RESTRICT_SELECT_OFF").ifc_id = upstream_obj_ifc_id + row.label(text=upsteam_obj.name) + row = layout.row() row.operator("bim.remove_booleans", text="Remove Boolean", icon="X")