From f88cdae50058c1ac1e07975bb92329415e60fcd6 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 23 Aug 2023 16:09:08 +0500 Subject: [PATCH] a bit faster renaming ifc elements when renaming blender objects Previously when you renamed blender object it was requiring the "Ifc.../" prefix so it would also change the name for ifc element. So when you wanted to rename something you'd only select and change the name part without prefix. Now you can just type the name right in after using F2 which seems a bit quicker by a few less clicks. Before - https://imgur.com/a/Rn7a17W After - https://imgur.com/a/a3lmxte --- src/blenderbim/blenderbim/bim/handler.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index 27e9f34c7a..2d1cfad4c5 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -73,17 +73,27 @@ def name_callback(obj, data): refresh_ui_data() return - if not obj.BIMObjectProperties.ifc_definition_id or "/" not in obj.name: + if not obj.BIMObjectProperties.ifc_definition_id: return + element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id) + if "/" in obj.name: + object_name = obj.name + element_name = obj.name.split("/", 1)[1] + else: + element_name = obj.name + object_name = element.is_a() + f"/{element_name}" + obj.name = object_name # NOTE: doesn't trigger infinite recursion + if element.is_a("IfcGridAxis"): - element.AxisTag = obj.name.split("/")[1] + element.AxisTag = object_name.split("/")[1] refresh_ui_data() + if not element.is_a("IfcRoot"): return + element.Name = element_name if obj.BIMObjectProperties.collection: - obj.BIMObjectProperties.collection.name = obj.name - element.Name = "/".join(obj.name.split("/")[1:]) + obj.BIMObjectProperties.collection.name = object_name refresh_ui_data()