From e68c57e9ef6e863c0b4eef8350b30efa64e98033 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 19 Jul 2021 20:16:07 +1000 Subject: [PATCH] Fix bug where reused placements (e.g. from copied objects) were all updated which led to incorrect locations --- .../ifcopenshell/api/geometry/edit_object_placement.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py index bd1191f4c6..4dae72c37e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py @@ -37,12 +37,10 @@ class Usecase: placement_rel_to = relating_object.ObjectPlacement if hasattr(relating_object, "ObjectPlacement") else None placement = self.file.createIfcLocalPlacement(placement_rel_to, self.get_relative_placement(placement_rel_to)) - if self.settings["product"].ObjectPlacement: - old_placement = self.settings["product"].ObjectPlacement + old_placement = self.settings["product"].ObjectPlacement + if old_placement and len(self.file.get_inverse(old_placement)) == 1: old_placement.PlacementRelTo = None self.settings["product"].ObjectPlacement = None - for inverse in self.file.get_inverse(old_placement): - ifcopenshell.util.element.replace_attribute(inverse, old_placement, placement) ifcopenshell.util.element.remove_deep(self.file, old_placement) self.settings["product"].ObjectPlacement = placement