如何解决使用 Ifcopenshell 和 OpenCascade 从 IFC 3D 实体获取几何图形
我在 IfcBuildingElementProxy 类型的 IFC 文件中有多个标准成型的砖块。虽然我已经设法从 IFC 文件中提取了它们的位置,但我现在很难从文件中获取几何图形(长度、高度、宽度)。我知道有两种方法可以获得几何:
-
解析砖块的表示属性并尝试编写代码,计算几何图形。这种方法真的很累人,因为 IFC 文件往往需要处理大量引用。我不会走这条路。
-
使用 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 举报,一经查实,本站将立刻删除。