From 46104f5bf54874a33ef607f7b4196d6268b9a026 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 7 Mar 2025 14:12:22 +0500 Subject: [PATCH] Update Profiles UI profile editing arbitrary profile #6284 --- src/bonsai/bonsai/bim/module/geometry/operator.py | 1 + src/bonsai/bonsai/tool/profile.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index e0ec7a8a81..18372e40fd 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -2260,6 +2260,7 @@ class OverrideModeSetObject(bpy.types.Operator, tool.Ifc.Operator): profile.ProfileName = old_profile.ProfileName for inverse in tool.Ifc.get().get_inverse(old_profile): ifcopenshell.util.element.replace_attribute(inverse, old_profile, profile) + tool.Profile.replace_profile_in_profiles_ui(old_profile.id(), profile.id()) ifcopenshell.util.element.remove_deep2(tool.Ifc.get(), old_profile) tool.Geometry.reload_representation(props.representation_obj) diff --git a/src/bonsai/bonsai/tool/profile.py b/src/bonsai/bonsai/tool/profile.py index 5c14828892..0838ef9a6e 100644 --- a/src/bonsai/bonsai/tool/profile.py +++ b/src/bonsai/bonsai/tool/profile.py @@ -125,6 +125,14 @@ class Profile(bonsai.core.tool.Profile): props = cls.get_profile_props() return tool.Blender.get_active_uilist_element(props.profiles, props.active_profile_index) + @classmethod + def replace_profile_in_profiles_ui(cls, old_profile_id: int, new_profile_id: int) -> None: + props = cls.get_profile_props() + for profile in props.profiles: + if profile.ifc_definition_id == old_profile_id: + profile.ifc_definition_id = new_profile_id + return + # Lengths are in meters. DEFAULT_PROFILE_ATTRS = { "IfcCircleProfileDef": {