如何在 python 中从头开始在 .ifc 文件中创建三角形网格?

问题描述 投票:0回答:1

我刚开始在 python 中使用 .ifc 文件。当我在新的 .ifc 文件中有两个数组(一个带有顶点,一个带有面)时,创建三角形网格的最佳方法是什么?如何使用 python 和 ifcopenshell 包来完成此操作?

我无休止地搜索文档,但找不到它。如果有人能指出我正确的方向,我将非常感激。

我想要一个类似的脚本,但我不想创建一堵墙,而是想创建一个三角形表面https://blenderbim.org/docs-python/ifcopenshell-python/code_examples.html#create-a-simple -从头开始模型。然而,我还没有找到正确的“ifc_class”及其相应的参数。

python mesh ifc bim ifc-open-shell
1个回答
0
投票

如果您的目标是 IFC4(及更高版本),您可以使用 IfcTriangulatedFaceSet,它是专为此类三角曲面设计的。

以下是使用 Python 和 IfcOpenShell 创建三角面集的示例(来自文档的示例数据):

ifc = ifcopenshell.file()
ifc.createIfcTriangulatedFaceSet()
tfs.Coordinates = ifc.createIfcCartesianPointList3D( ((0.,0.,0.), (1.,0.,0.), (1.,1.,0.), (0.,1.,0.), (0.,0.,2.), (1.,0.,2.), (1.,1.,2.), (0.,1.,2.)))
tfs.CoordIndex = ((1,6,5), (1,2,6), (6,2,7), (7,2,3), (7,8,6), (6,8,5), (5,8,1), (1,8,4), (4,2,1), (2,4,3), (4,8,7), (7,3,4))
tfs.Closed = True
ifc.write('testTFS.ifc')

如果您需要支持 IFC2x3(没有上述实体),您可能需要 IfcShellBasedSurfaceModel - 一个可以执行相同操作的更通用的实体。

© www.soinside.com 2019 - 2024. All rights reserved.