From 115844279f24b35ad2d8869308bcdda8c050deaa Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 24 Jun 2024 17:17:10 +0500 Subject: [PATCH] fix removing objects with materials after c4ae9578e #4843 temporary fix, we probably should indeed just get rid of that listener --- src/blenderbim/blenderbim/bim/module/model/product.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py index 5bb6fa9796..0da8d17170 100644 --- a/src/blenderbim/blenderbim/bim/module/model/product.py +++ b/src/blenderbim/blenderbim/bim/module/model/product.py @@ -526,6 +526,16 @@ def ensure_material_assigned(usecase_path: str, ifc_file: ifcopenshell.file, set def ensure_material_unassigned(usecase_path: str, ifc_file: ifcopenshell.file, settings: dict[str, Any]) -> None: elements = settings["products"] + # unassign_material could be called when product is about to get removed + # and representation might be already removed. + elements = [ + e + for e in elements + if (obj := tool.Ifc.get_object(e)) + and obj.data + and tool.Ifc.get_entity_by_id(obj.data.BIMMeshProperties.ifc_definition_id) + ] + for element in elements[:]: if element.is_a("IfcElementType"): elements.extend(tool.Model.get_occurrences_without_material_override(element))