remove_product to also remove psets for types

This commit is contained in:
Andrej730
2023-08-09 16:30:55 +05:00
parent 29d4a8d5fe
commit f8ffc97bf5
2 changed files with 38 additions and 4 deletions
@@ -65,13 +65,29 @@ class Usecase:
representations = self.settings["product"].Representation.Representations or []
else:
representations = []
# remove object placements
object_placement = self.settings["product"].ObjectPlacement
if object_placement and self.file.get_total_inverses(object_placement) == 1:
self.settings["product"].ObjectPlacement = None # remove the inverse for remove_deep2 to work
ifcopenshell.util.element.remove_deep2(self.file, object_placement)
if object_placement:
if self.file.get_total_inverses(object_placement) == 1:
self.settings["product"].ObjectPlacement = None # remove the inverse for remove_deep2 to work
ifcopenshell.util.element.remove_deep2(self.file, object_placement)
elif self.settings["product"].is_a("IfcTypeProduct"):
representations = [rm.MappedRepresentation for rm in self.settings["product"].RepresentationMaps or []]
# remove psets
psets = self.settings["product"].HasPropertySets or []
for pset in psets:
if self.file.get_total_inverses(pset) != 1:
continue
ifcopenshell.api.run(
"pset.remove_pset",
self.file,
product=self.settings["product"],
pset=pset,
)
for representation in representations:
ifcopenshell.api.run(
"geometry.unassign_representation",