From a07d3b96697cf9d960e8d10b2d4571eead28b606 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 20 May 2024 14:12:03 +1000 Subject: [PATCH] Fix #4633. Only update the text value of the object, not try to be clever with types and occurrences. Previously, we were clever in detecting types and occurrences because if you edited a type, you wanted all occurrences to be updated. Now, we no longer need to be clever because like any other UI element, the annotations shown in the active view are updated after every IFC operation. --- src/blenderbim/blenderbim/tool/drawing.py | 34 ++++------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index 0d38dc2fe7..a223186670 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -935,34 +935,12 @@ class Drawing(blenderbim.core.tool.Drawing): @classmethod def update_text_value(cls, obj): - element = tool.Ifc.get_entity(obj) - if element.is_a("IfcTypeProduct"): - objs = [obj] - for occurrence in ifcopenshell.util.element.get_types(element): - obj = tool.Ifc.get_object(occurrence) - if obj: - objs.append(obj) - else: - objs = [] - element_type = ifcopenshell.util.element.get_type(element) - if element_type and element_type.RepresentationMaps: - obj = tool.Ifc.get_object(element_type) - if obj: - objs.append(obj) - for occurrence in ifcopenshell.util.element.get_types(element_type): - obj = tool.Ifc.get_object(occurrence) - if obj: - objs.append(obj) - else: - objs = [obj] - - for obj in objs: - props = obj.BIMTextProperties - literals = cls.get_text_literal(obj, return_list=True) - cls.import_text_attributes(obj) - for i, literal in enumerate(literals): - product = cls.get_assigned_product(tool.Ifc.get_entity(obj)) or tool.Ifc.get_entity(obj) - props.literals[i].value = cls.replace_text_literal_variables(literal.Literal, product) + props = obj.BIMTextProperties + literals = cls.get_text_literal(obj, return_list=True) + cls.import_text_attributes(obj) + for i, literal in enumerate(literals): + product = cls.get_assigned_product(tool.Ifc.get_entity(obj)) or tool.Ifc.get_entity(obj) + props.literals[i].value = cls.replace_text_literal_variables(literal.Literal, product) @classmethod def update_text_size_pset(cls, obj):