问题描述
我在 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