IfcOpenShell(Parse)_IFC PropertySet,打印问题 [英] IfcOpenShell(Parse)_IFC PropertySet, printing issue

查看:375
本文介绍了IfcOpenShell(Parse)_IFC PropertySet,打印问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hy, I am new to programming and I have problems with printing my property sets and values.

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

I have more elements in my IFC and want to Parse all Property Sets and values. My current result is elements ID(for every element), but it takes the attributes(property sets and values) form the first one. Sketch: see image

我的代码:

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))

有人解决吗?

谢谢和亲切的问候,

推荐答案

在线:

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

似乎您总是在引用第一个IfcBuildingElementProxy对象(由于0索引).我猜每种产品的索引应该增加.

it seems that you are referring always to the first IfcBuildingElementProxy object (because of the 0-index). The index should be incremented for each product, I guess.

这篇关于IfcOpenShell(Parse)_IFC PropertySet,打印问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆