数据格式
二进制的数据格式:
二进制STL文件用固定的字节数来给出三角面片的几何信息。
- 【80】80个字节的文件头,用于存贮文件名
- 【4】 4 个字节的int描述模型的三角面片个数(小端存储)
- 【50*n】一个三角面片占用固定的50个字节(小端存储),依次是:
- 【12】3个4字节浮点数(角面片的法矢量)
- 【12】3个4字节浮点数(1个顶点的坐标)
- 【12】3个4字节浮点数(2个顶点的坐标)
- 【12】3个4字节浮点数(3个顶点的坐标)个
- 【2】三角面片的最后2个字节用来描述三角面片的属性信息。
一个完整二进制STL文件的大小为三角形面片数乘以 50再加上84个字节。
ASCII的数据格式
solid name
//一个三角面
facet normal ni nj nk
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet
//更多三角面···
endsolid name
例子
此处将完整展示将一个二进制格式STL文件导入到程序中的过程。
利用solidworks建立了一个10X10mm²的方形面片,并将其导出为二进制STL
利用notepad++的HEX-Editor插件查看二进制文件
选中的二进制段落就是第一个三角面的全部信息
STL中的浮点数格式符合IEEE制定的float格式,并且是小端存储,在x86系统中编译可以直接利用memcpy函数拷贝到C++的float中
表1 三角面1
表项 | X | Y | Z | 坐标 |
---|---|---|---|---|
法向量 | 00000000 | 00000000 | 3f800000 | (0,0,1) |
点1 | 00000000 | 00000000 | 00000000 | (0,0,0) |
点2 | 41200000 | 00000000 | 00 |