经过一番研究后,我成功解析了所有 3 个二进制文件。
边界文件是最简单的,因为即使标头的格式表明该文件处于二进制模式,但对我来说情况并非如此。该文件采用纯文本 (ASCII) 格式,因此很容易进行解析。
点文件有点难以解析,因为即使标头采用 ASCII 格式,数据本身也以二进制形式存储。如果您查看 PolyMesh 中点文件的 ASCII 格式,您将看到我们有点数,然后点表示如下:
1681139
(
(-0.03975 0.0026372 -0.00919138)
(-0.03975 0.00280753 -0.00910861)
(-0.03975 0.00297785 -0.00902584)
(-0.03975 0.00314818 -0.00894307) (-0.03975
0.00331851 -0.0088603)
(-0.03975 0.00348883 -0.00877753)
.
.
.
在二进制中,点是一个接一个地表示的,因此您需要做的就是读取 3 个双精度数块,直到到达末尾。这就是要点。
面孔文件有点棘手。数据在 ASCII 中表示如下:
4789790
(
4(702 982 3040 1080)
4(19 1080 3040 346)
4(1 346 3040 982)
4(0 1 982 702)
4(0 702 1080 19)
4(0 19 346 1)
.
.
.
您有面孔的数量(在本例中为 4789790),然后在每个面孔前面有形成实际面孔的整数数量(在本例中为 4)以及该面孔的数据。在二进制中,您有 ASCII 格式的标头,然后是一个接一个的 2 个向量。第一个表示第二个向量中存储的数据的索引。为什么要建立索引?嗯,因为这些面没有固定数量的整数(就像我的示例 4 中的那样)。您可以找到包含 4、5 或 6 个整数的面,如果没有索引告诉您开始和结束,您将不知道如何从第二个向量读取数据。顺便说一下,索引和实际数据都是整数。
我花了一些时间寻找这些信息,希望这能帮助任何尝试使用二进制格式的 PolyMesh 文件的人。