0

嗨,我是编程新手,在打印我的属性集和值时遇到问题。

我的 IFC 中有更多元素,并且想要解析所有属性集和值。我当前的结果是元素 ID(对于每个元素),但它采用第一个元素的属性(属性集和值)。草图: 见图片

我的代码:

import ifcopenshell

ifc_file = ifcopenshell.open('D:\PZI_9-1_1441_LIN_CES_1-17c-O_M-M3.ifc')
products = ifc_file.by_type('IFCPROPERTYSET')
for product in products:
    print(product.is_a())
    print(product) # Prints  
    Category_Name_1 = ifc_file.by_type('IFCBUILDINGELEMENTPROXY')[0]
    for definition in Category_Name_1.IsDefinedBy:
        property_set = definition.RelatingPropertyDefinition

        headders_list = []
        data_list = []
        max_len = 0

        for property in property_set.HasProperties:
            if property.is_a('IfcPropertySingleValue'):           

                headers = (property.Name)
                data= (property.NominalValue.wrappedValue)
                    #print(headders)
                headders_list.append(headers)
                if len(headers) > max_len: max_len = len(headers)
                    #print(data)               
                data_list.append(data)
                if len(data) > max_len: max_len = len(data)           

    headders_list = [headers.ljust(max_len) for headers in headders_list]
    data_list = [data.ljust(max_len) for data in data_list]

    print(" ".join(headders_list))
    print(" ".join(data_list))

有人有解决办法吗?

谢谢和亲切的问候,

4

1 回答 1

0

在线的:

    Category_Name_1 = ifc_file.by_type('IFCBUILDINGELEMENTPROXY')[0]

似乎您总是指的是第一个 IfcBuildingElementProxy 对象(因为 0-index)。我猜每个产品的索引都应该增加。

于 2019-11-28T13:16:27.097 回答