New utility to get spatial and object decompositions from any IFC element

This commit is contained in:
Dion Moult
2021-09-17 15:40:27 +10:00
parent 2b4d4439ea
commit 02a68f6827
2 changed files with 26 additions and 0 deletions
@@ -86,6 +86,20 @@ def get_container(element):
return element.ContainedInStructure[0].RelatingStructure
def get_decomposition(element):
queue = [element]
results = []
while queue:
element = queue.pop()
for rel in getattr(element, "ContainsElements", []):
queue.extend(rel.RelatedElements)
results.extend(rel.RelatedElements)
for rel in getattr(element, "IsDecomposedBy", []):
queue.extend(rel.RelatedObjects)
results.extend(rel.RelatedObjects)
return results
def get_aggregate(element):
if hasattr(element, "Decomposes") and element.Decomposes:
return element.Decomposes[0].RelatingObject