From 9361cfee2806f582ba54c90b0b663d2889945eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Perdig=C3=A3o?= Date: Thu, 8 May 2025 22:06:48 -0300 Subject: [PATCH] See #6536. Update cardinal point when editing `IfcMaterialProfileSetUsage`. --- .../bonsai/bim/module/material/operator.py | 20 +++++++++++++++++++ src/bonsai/bonsai/bim/module/model/handler.py | 6 ------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/material/operator.py b/src/bonsai/bonsai/bim/module/material/operator.py index 4c765af51f..7c625e31c3 100644 --- a/src/bonsai/bonsai/bim/module/material/operator.py +++ b/src/bonsai/bonsai/bim/module/material/operator.py @@ -625,6 +625,26 @@ class EditAssignedMaterial(bpy.types.Operator, tool.Ifc.Operator): wall.DumbWallPlaner().regenerate_from_layer_set(layer_set) slab.DumbSlabPlaner().regenerate_from_layer_set(layer_set) + if material_set_usage.is_a("IfcMaterialProfileSetUsage"): + attributes["CardinalPoint"] = int(attributes["CardinalPoint"]) + ifcopenshell.api.material.edit_profile_usage( + self.file, + usage=material_set_usage, + attributes=attributes, + ) + profile_sets_to_regenerate = set() + + for obj in objects: + obj_element = tool.Ifc.get_entity(obj) + obj_material_usage = ifcopenshell.util.element.get_material(obj_element) + + if obj_material_usage and obj_material_usage.is_a("IfcMaterialProfileSetUsage"): + profile_sets_to_regenerate.add(obj_material_usage.ForProfileSet) + + for profile_set in profile_sets_to_regenerate: + for material_profile in profile_set.MaterialProfiles: + model_profile.DumbProfileRegenerator().regenerate_from_profile_def(material_profile.Profile) + bpy.ops.bim.disable_editing_assigned_material(obj=active_obj.name) diff --git a/src/bonsai/bonsai/bim/module/model/handler.py b/src/bonsai/bonsai/bim/module/model/handler.py index b69b595c34..76ebbf57ee 100644 --- a/src/bonsai/bonsai/bim/module/model/handler.py +++ b/src/bonsai/bonsai/bim/module/model/handler.py @@ -36,12 +36,6 @@ def load_post(*args): "sequence.edit_task_time", "Bonsai.Task.CalculateQuantities", task.calculate_quantities ) - ifcopenshell.api.add_post_listener( - "material.edit_profile_usage", - "Bonsai.Product.RegenerateProfileUsage", - product.regenerate_profile_usage, - ) - ifcopenshell.api.add_post_listener( "type.assign_type", "Bonsai.DumbWall.RegenerateFromType", wall.DumbWallPlaner().regenerate_from_type )