From e129f4afa92212db857b11787ffddc87e8bca637 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 25 Jan 2022 17:27:42 +1100 Subject: [PATCH] Fix #2001. Fix bug where you could not undo deletions. --- src/blenderbim/blenderbim/bim/ifc.py | 17 +++++++++++++++++ .../blenderbim/bim/module/geometry/operator.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/blenderbim/blenderbim/bim/ifc.py b/src/blenderbim/blenderbim/bim/ifc.py index 0940ea7a2e..a375d51529 100644 --- a/src/blenderbim/blenderbim/bim/ifc.py +++ b/src/blenderbim/blenderbim/bim/ifc.py @@ -186,6 +186,23 @@ class IfcStore: data["guid"] = element.GlobalId IfcStore.commit_link_element(data) + @staticmethod + def delete_element(element): + IfcStore.deleted_ids.add(element.id()) + if IfcStore.history: + data = {"id": element.id()} + IfcStore.history[-1]["operations"].append( + {"rollback": IfcStore.rollback_delete_element, "commit": IfcStore.commit_delete_element, "data": data} + ) + + @staticmethod + def rollback_delete_element(data): + IfcStore.deleted_ids.remove(data["id"]) + + @staticmethod + def commit_delete_element(data): + IfcStore.deleted_ids.add(data["id"]) + @staticmethod def link_element(element, obj): IfcStore.id_map[element.id()] = obj diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 42ffca227e..07858b5a53 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -330,7 +330,7 @@ class OverrideDeleteTrait: def delete_ifc_object(self, obj): if obj.BIMObjectProperties.ifc_definition_id: element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id) - IfcStore.deleted_ids.add(element.id()) + IfcStore.delete_element(element) if getattr(element, "FillsVoids", None): self.remove_filling(element) if element.is_a("IfcOpeningElement"):