From 7686e3585829255ba96e25255be12b9d03552419 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 25 Jan 2023 20:52:43 +1100 Subject: [PATCH] Fix #2697. --- .../ifcopenshell/api/root/remove_product.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py b/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py index 531deb8cca..8ae92422eb 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py @@ -76,7 +76,9 @@ class Usecase: ifcopenshell.api.run("grid.remove_grid_axis", self.file, axis=axis) # TODO: remove object placement and other relationships - for inverse in self.file.get_inverse(self.settings["product"]): + ignored = set() + while inverses := set(self.file.get_inverse(self.settings["product"])) - ignored: + inverse = next(iter(inverses)) if inverse.is_a("IfcRelDefinesByProperties"): ifcopenshell.api.run( "pset.remove_pset", @@ -115,4 +117,6 @@ class Usecase: self.file.remove(inverse) elif inverse.is_a("IfcRelConnectsPathElements"): self.file.remove(inverse) + else: + ignored.add(inverse) self.file.remove(self.settings["product"])