gpt4 book ai didi

python - 使用坐标和索引的 .ifc 文件格式的三角测量图案

转载 作者:行者123 更新时间:2023-12-01 01:59:07 24 4
gpt4 key购买 nike

由于问题的数学性质,我也在另一个论坛上发布了此内容: forum post

我有一个 .ifc 文件,其中导出的原始数据根据链接说明通过一组坐标及其相应的索引描述了 xy 平面中的墙:

Explanation

我有一个txt其中数据分为 xyz 空间中的坐标,然后是索引和一些其他数据。

我希望有人可以帮助我了解如何将索引链接到相应的坐标。有 164 个坐标对和 324 个索引对,因此每个索引仅与 1 个坐标对相关对我来说没有意义。

目标是建立索引和坐标之间的关系,以便此类数据可以输出壁厚,在本例中为“10”。我在想(根据上面的链接)通过描述第一个三角形,它应该以 3D 方式描述墙的边缘,因此给我们它的一条边作为墙中最短的部分,即厚度。

我在上述论坛帖子中收到了答复,我应该“...根据 X、Y 和 Z [而不是 (X,Y,Z) 三元组)展开每个坐标,然后使用每个索引三元组来获取单个坐标的实际坐标而不是一个三倍。例如,您有 X[]、Y[] 和 Z[],并且您有一个索引 (a,b,c),那么您会发现 X[a]、Y[b] 和 Z[c] 而不是 Point(a ,b,c)...“

我不太明白这个解释,希望能得到任何帮助或进一步的解释来实现我的目标。

谢谢

最佳答案

让我们从坐标 (IfcCartesianPointList3D) 开始:每个坐标都是一个三元组,产生一个具有 (x,y,z) 坐标的点。

然后 IfcTriangulatedFaceSet 使用索引来构造三角形。它有 2 种索引模式:直接索引和通过 PnIndex 间接索引。索引模式由 PnIndex 数组(属性号 5)是否存在决定。请注意,我将这些变体称为直接变体和间接变体 - IFC 文档中没有这样提及。

直接索引

未设置 PnIndex。让我们看一个(简单且构造的)示例:

#100=IFCCARTESIANPOINTLIST(((0,0,0),(1,0,0),(1,1,0),(0,1,0)));
#101=IFCTRIANGULATEDFACESET(
/*reference to the points*/ #100,
/*no normals*/ $,
/*no indication if closed or open*/ $,
/*coordinate indices*/ ((1,2,3),(1,3,4)),
/*no PnIndex*/ ());

这描述了位于 x-y 平面上的正方形。属性 CoordIndex 中的每个条目都是一个三元组,为 IfcCartesianPointList 中的点提供基于 1 的索引。这意味着有两个三角形由以下点构成:

  1. (0,0,0) (1,0,0) (1,1,0)
  2. (0,0,0) (1,1,0) (0,1,0)

间接索引

让我们在前面的示例的基础上进一步构建:

#100=IFCCARTESIANPOINTLIST(((0,0,0),(1,0,0),(1,1,0),(0,1,0)));
#101=IFCTRIANGULATEDFACESET(
/*reference to the points*/ #100,
/*no normals*/ $,
/*no indication if closed or open*/ $,
/*coordinate indices*/ ((1,2,3),(1,3,4)),
/*PnIndex*/ (2,3,4,1));

这次设置了PnIndex。它增加了访问点的间接级别。 CoordIndex 中的三元组指向 PnIndex(从 1 开始)。然后使用 PnIndex 中找到的值来访问 IfcCartesianPointList。

因此,对于第一个三角形,我们在 CoordIndex 中有:(1,2,3)。这些分别指向 PnIndex 中的 2、3 和 4。这些结果从点列表中得出以下点: (1,0,0) (1,1,0) (0,1,0)

对第二个三角形 (1,3,4) 重复该过程,我们从 PnIndex 中获取值 2, 4, 1 和以下点: (1,0,0) (0,1,0) (0,0 ,0)

它又是一个正方形,但这次有不同的三角测量。

现在,如果您想知道壁厚,则需要根据生成的几何图形计算范围。如果您的墙与坐标系轴对齐,这很容易(获取最小和最大 X、Y 和 Z 之间的差值)。如果不是,您可能需要转换点或进一步研究 3D 范围计算(我的知识到此为止)。

关于python - 使用坐标和索引的 .ifc 文件格式的三角测量图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49866916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com