mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 14:31:39 +00:00
Fix #2913. Bug where properties with multiple inverses were not correctly purged.
This commit is contained in:
@@ -64,7 +64,8 @@ class Usecase:
|
|||||||
elif self.settings["pset"].is_a() in ("IfcMaterialProperties", "IfcProfileProperties"):
|
elif self.settings["pset"].is_a() in ("IfcMaterialProperties", "IfcProfileProperties"):
|
||||||
properties = self.settings["pset"].Properties or []
|
properties = self.settings["pset"].Properties or []
|
||||||
for prop in properties:
|
for prop in properties:
|
||||||
self.file.remove(prop)
|
if self.file.get_total_inverses(prop) == 1:
|
||||||
|
self.file.remove(prop)
|
||||||
self.file.remove(self.settings["pset"])
|
self.file.remove(self.settings["pset"])
|
||||||
for element in to_purge:
|
for element in to_purge:
|
||||||
self.file.remove(element)
|
self.file.remove(element)
|
||||||
|
|||||||
@@ -73,3 +73,13 @@ class TestRemovePset(test.bootstrap.IFC4):
|
|||||||
assert len(self.file.by_type("IfcRelDefinesByProperties")) == 0
|
assert len(self.file.by_type("IfcRelDefinesByProperties")) == 0
|
||||||
assert len(self.file.by_type("IfcQuantitySet")) == 0
|
assert len(self.file.by_type("IfcQuantitySet")) == 0
|
||||||
assert len(self.file.by_type("IfcPhysicalSimpleQuantity")) == 0
|
assert len(self.file.by_type("IfcPhysicalSimpleQuantity")) == 0
|
||||||
|
|
||||||
|
def test_removing_a_pset_with_shared_properties(self):
|
||||||
|
element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||||
|
element2 = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||||
|
pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="Foo_Bar")
|
||||||
|
pset2 = ifcopenshell.api.run("pset.add_pset", self.file, product=element2, name="Foo_Bar")
|
||||||
|
ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Foo": "Bar"})
|
||||||
|
pset2.HasProperties = pset.HasProperties
|
||||||
|
ifcopenshell.api.run("pset.remove_pset", self.file, product=element, pset=pset)
|
||||||
|
assert pset2.HasProperties
|
||||||
|
|||||||
Reference in New Issue
Block a user