微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Ifcopenshell 和 OpenCascade 从 IFC 3D 实体获取几何图形

如何解决使用 Ifcopenshell 和 OpenCascade 从 IFC 3D 实体获取几何图形

我在 IfcBuildingElementProxy 类型的 IFC 文件中有多个标准成型的砖块。虽然我已经设法从 IFC 文件提取了它们的位置,但我现在很难从文件获取几何图形(长度、高度、宽度)。我知道有两种方法可以获得几何:

  1. 解析砖块的表示属性并尝试编写代码,计算几何图形。这种方法真的很累人,因为 IFC 文件往往需要处理大量引用。我不会走这条路。

  2. 使用 ifcopenshell 和 opencascade 等引擎获取几何图形。我知道如何将砖块投射到 TopoDS 对象中,但很难找到获取几何图形的正确方法

import ifcopenshell

bricklist = ifc_file.by_type('IfcBuildingElementProxy') 

for brick in bricklist:
        shape = ifcopenshell.geom.create_shape(settings,brick).geometry
        shape.methodtogetXYZgemeometrics???

解决方法

使用

settings = geom.settings()
settings.set(settings.USE_WORLD_COORDS,True) #Translates and rotates the points to their world coordinates

...

shape = geom.create_shape(settings,brick )
points=shape.geometry.verts     #The xyz points
triangles=shape.geometry.faces  #Indexes to the points,3 indexes form one triangle

请注意,如果您不使用 USE_WORLD_COORDS 设置,您还可以使用元素的 4x3 旋转/平移矩阵并自己进行点平移。这个矩阵由

给出
shape.transformation.matrix.data

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。