From 0ec337748fda6f8ee602a060be5b7212c7f4975a Mon Sep 17 00:00:00 2001 From: "Sigma Dimensions (Yass)" <79010126+myoualid@users.noreply.github.com> Date: Tue, 22 Aug 2023 19:36:01 +0100 Subject: [PATCH] improve purge of remove_metric usecase --- .../ifcopenshell/api/constraint/remove_metric.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/remove_metric.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/remove_metric.py index e5dfa02dda..229f198920 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/remove_metric.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/remove_metric.py @@ -43,6 +43,10 @@ class Usecase: self.settings = {"metric": metric} def execute(self): + if self.settings["metric"].ReferencePath: + reference = self.settings["metric"].ReferencePath + self.delete_reference(reference) + self.file.remove(self.settings["metric"]) for rel in self.file.by_type("IfcRelAssociatesConstraint"): if not rel.RelatingConstraint: @@ -50,3 +54,8 @@ class Usecase: for resource_rel in self.file.by_type("IfcResourceConstraintRelationship"): if not resource_rel.RelatingConstraint: self.file.remove(resource_rel) + + def delete_reference(self, reference): + if reference.InnerReference: + self.delete_reference(reference.InnerReference) + self.file.remove(reference)