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))