WIP implement deep removal of geometry. See #1222. See #1228.

This commit is contained in:
Dion Moult
2021-01-20 16:03:35 +11:00
parent 1d8a568a0b
commit 95ce82a79e
2 changed files with 25 additions and 9 deletions
@@ -6,4 +6,17 @@ class Usecase:
self.settings[key] = value
def execute(self):
self.file.remove(self.settings["representation"])
styles = []
for subelement in self.file.traverse(self.settings["representation"]):
if subelement.is_a("IfcRepresentationItem") and subelement.StyledByItem:
styles.append(subelement)
for style in styles:
self.remove_deep(style)
self.remove_deep(self.settings["representation"])
def remove_deep(self, element):
subgraph = list(self.file.traverse(element))
subgraph_set = set(subgraph)
for ref in subgraph[::-1]:
if ref.id() and len(set(self.file.get_inverse(ref)) - subgraph_set) == 0:
self.file.remove(ref)