From 7041d17c16e1a22055ce237f2691e7efcc886160 Mon Sep 17 00:00:00 2001 From: bosonprojets Date: Sun, 25 Apr 2021 22:59:01 +0000 Subject: [PATCH] Unassign Resources Usecase added to the ifcopenshel.api --- .../api/resource/unassign_resource.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/ifcopenshell-python/ifcopenshell/api/resource/unassign_resource.py diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/unassign_resource.py b/src/ifcopenshell-python/ifcopenshell/api/resource/unassign_resource.py new file mode 100644 index 0000000000..7faa264e21 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/unassign_resource.py @@ -0,0 +1,25 @@ +import ifcopenshell +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = { + "relating_resource": None, + "related_object": None, + } + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + for rel in self.settings["related_object"].HasAssignments or []: + if not rel.is_a("IfcRelAssignsToResource") or rel.RelatingResource != self.settings["relating_resource"]: + continue + if len(rel.RelatedObjects) == 1: + return self.file.remove(rel) + related_objects = list(rel.RelatedObjects) + related_objects.remove(self.settings["related_object"]) + rel.RelatedObjects = related_objects + ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel}) + return rel