使用ifcopenshell查找IfcBuildingStore的子级



通过使用ifchopenshell,我可以使用以下代码轻松遍历所有楼层

for ifc_storey in ifc_file.by_type("IfcBuildingStorey"):
print(str(ifc_storey.Name))

然而,对于每一层,我都想找到属于它的IfcSpace类型的所有Ifc元素。

如何查询?非常感谢。

我最终使用以下代码解决了它:

def getChildrenOfType(ifcParentElement,ifcType):
items=[]
if type(ifcType) != list:
ifcType=[ifcType]
_getChildrenOfType(items,ifcParentElement,ifcType,0)
return items
def _getChildrenOfType(targetList,element,ifcTypes,level):
# follow Spatial relation
if (element.is_a('IfcSpatialStructureElement')):
for rel in element.ContainsElements:
relatedElements = rel.RelatedElements
for child in relatedElements:
_getChildrenOfType(targetList,child, ifcTypes, level + 1)
# follow Aggregation Relation
if (element.is_a('IfcObjectDefinition')):
for rel in element.IsDecomposedBy:
relatedObjects = rel.RelatedObjects
for child in relatedObjects:
_getChildrenOfType(targetList,child, ifcTypes, level + 1)
for typ in ifcTypes:
if (element.is_a(typ)):
targetList.append(element)

相关内容

  • 没有找到相关文章

最新更新