我正在尝试读取格式不同的STL文件。一个STL文件通用格式包括
solid solid_name facet normal n1 n2 n3 (the triangles normal vector) outerloop (one of the markers I want to read) v1 x1 y1 z1 v2 x2 y2 z2 (three vertex of the triangle/facet) v3 x3 y3 z3 endloop end facet endsolid
想法是遍历整个实体,构面和顶点并读取信息。我的问题是我正在尝试读取不同格式的文件:例如,在其中一个文件中,我的第一个方面是:
>solid Peca2
> facet normal 1.000000e+00 0.000000e+00 0.000000e+00
> outer loop
> vertex 1.250000e+02 7.500000e+01 1.000000e+02
> vertex 1.250000e+02 2.500000e+01 1.000000e+02
> vertex 1.250000e+02 7.500000e+01 5.000000e+01
> endloop
and so on.
我的问题是,由于每个顶点分量的值可能在大小上有所不同,因此我很难找到正确的格式来读取此信息。我已经尝试过指数,浮点甚至字符串,但是我的代码从文件中读取的数据是完全荒谬的,例如:
solid Peca2
facet normal 1.000000e+00
0.000000e+0
0 0.000000e+00
outer loop
vertex 1.250000e+
读取完数据后,应该在新的STL文件中写入相同的数据。我已经尝试过无格式和格式化的读写,但是似乎没有任何效果。我观察到的唯一效果是写入数据从一行移到另一行,如上图所示。
所以,我有一些问题:
1)如何编写通用的STL阅读器,以在不预先指定的情况下以任何格式读取任何文件?可能吗?
2)如何从长度可变的文件中读取浮点和指数数据,如在该行中可以看到的>]
1.250000e+02 7.500000e+01 5.000000e+01
3)我尝试将每一行的信息作为可分配的字符串读取,并且显然是成功的,但是当我打印该字符串以检查其内容时,输出也像以前一样混乱:
facet n ormal 1.000000e+00 0 .000000e+00 0.000000 e+00
[有人可以帮我解决这些格式问题吗?非常感谢您的帮助,因为我已经为这些问题苦苦挣扎了很长时间。预先非常感谢!
我正在尝试读取格式不同的STL文件。通用格式的STL文件由solid solid_name facet法线n1 n2 n3(三角形法线向量)外部循环组成...
P.S .:我已经尝试了以下形式的几乎所有读取命令,以多种组合改变了格式的宽度和数字,但没有任何正常工作。