From 500c7cdc3708a6078fe0ea97ff30633d7e7a63d4 Mon Sep 17 00:00:00 2001 From: Gorgious Date: Mon, 20 Sep 2021 10:23:56 +0200 Subject: [PATCH] (partially) Fix #1737 : Active object swaps to opening Void operator would swap active object if opening IFC type is not set Also changed the modifier creation/update logic to accomodate for user potentially breaking things --- .../blenderbim/bim/module/void/operator.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/void/operator.py b/src/blenderbim/blenderbim/bim/module/void/operator.py index 37140c9198..e18ad2170a 100644 --- a/src/blenderbim/blenderbim/bim/module/void/operator.py +++ b/src/blenderbim/blenderbim/bim/module/void/operator.py @@ -55,21 +55,20 @@ class AddOpening(bpy.types.Operator): "element": self.file.by_id(element_id), }, ) - Data.load(IfcStore.get_file(), element_id) + Data.load(self.file, element_id) - has_modifier = False - - for modifier in obj.modifiers: - if modifier.type == "BOOLEAN" and modifier.object and modifier.object == opening: - has_modifier = True - break - - if not has_modifier: + try: + modifier = next(m for m in obj.modifiers if m.type == "BOOLEAN" and m.object == opening) + except StopIteration: modifier = obj.modifiers.new("IfcOpeningElement", "BOOLEAN") - modifier.operation = "DIFFERENCE" modifier.object = opening + finally: + modifier.operation = "DIFFERENCE" modifier.solver = "EXACT" modifier.use_self = True + modifier.operand_type = "OBJECT" + + context.view_layer.objects.active = obj return {"FINISHED"}