- 3D打印技術概論
- 陳繼民主編 楊繼全 李滌塵 史玉升副主編
- 1980字
- 2021-12-24 13:46:11
2.3 STL文件
STL(stereolithography,光固化立體造型術)文件格式是一種為快速原型(rapid prototyping,RP)制造技術服務的三維圖形文件格式,也是現今在該領域使用最多的標準文件類型,由3D Systems公司于1987~1988年制定。
STL文件通過列出所有構成模型表面的三角面片(facet)的法向量與頂點(vertex)信息來描述模型,僅記錄模型表面三角形的幾何位置信息而沒有表達三角形之間關系的拓撲信息。在STL文件重建實體模型過程中,拓撲關系由位置信息重建。
STL文件的存儲格式分為ASCII格式和二進制格式兩種,具體格式如下:
2.3.1 STL文件的ASCII格式
ASCII格式的STL文件在首行給出了文件路徑及文件名,之后逐個列出三角面片的幾何信息。對于每個三角面片,逐行列出其法向量和三個頂點坐標,其中法向量一般規定為垂直表面向外方向,頂點排列順序服從右手定則(逆時針排序)。最后以尾行表示文件結束。ASCII格式示例如下:
solid filenamestl //首行 文件路徑及文件名
//一個三角面片定義開始
facet normal x y z //三角面片的法向量
outer loop
vertex x y z //三角面片第一個頂點的坐標
vertex x y z //三角面片第二個頂點的坐標
vertex x y z //三角面片第三個頂點的坐標
endloop
endfacet //一個三角面片定義完畢
… //其他三角面片定義
endsolid filenamestl //尾行 文件結束
2.3.2 STL文件的二進制格式
二進制格式的STL文件以起始的80字節為文件頭,用于存儲文件名;之后以4 字節整形存儲模型包含的三角面片個數;之后逐個列出三角面片的幾何信息,包括法向量、三個頂點坐標和屬性信息,其中每個分量由4字節浮點數存儲,屬性信息占2字節,每個三角面片共占50字節。二進制格式示例如下:
Header //文件頭
Number of facets //三角面片數量
//一個三角面片定義開始
x y z //三角面片的法向量
x y z //三角面片第一個頂點的坐標
x y z //三角面片第二個頂點的坐標
x y z //三角面片第三個頂點的坐標
Attribute byte //屬性信息
//一個三角面片定義完畢
… //其他三角面片定義
//文件結束
雖然STL文件的應用非常廣泛,但由于文件格式的缺陷,使其存在著數據冗余過多、缺乏拓撲信息、數據量大、數據錯誤等問題。
三維打印技術實質上是三維CAD模型的分層處理和實際成形的疊層制造的過程,其中對已知的三維CAD實體數據模型求某方向的連續截面,即對實體進行切片處理的過程就成為必不可少的步驟。切片模塊在系統中起著承上啟下的作用,其準確性直接影響加工零件的規模、精度和復雜程度,該模塊的效率也關系整個系統的效率。
切片處理的數據對象是大量的小三角形平面,因此,切片的問題實質上是平面與平面的求交問題。由于合法的STL三角形面化模型代表的是一個有序的、正確的且唯一的CAD實體數據模型,因此,對其切片處理,其每一個切片截面應該由一組封閉的輪廓線組成。如果截面上的某條封閉輪廓線成為一條線段,則說明切片平面切到一條邊上;如果截面上的某條封閉輪廓線成為一個點,則說明切片平面切到一個頂點上。這些情況都將影響后續軟件的處理和原型加工,因此有必要對其進行修正。在不影響精度的前提下,可以采用切片微動方法(即向上或向下移動一個極小的位移量,如取0.00001mm)以解決修正問題。STL切片分為定層厚切片和直接分層切片。定層厚切片分為定層厚拓撲切片和定層容錯切片。這兩種切片包括如下三個階段:排除奇異點,搜索求交和整序保存。
重建三角形的拓撲信息后,輸入切片高度z,找到與高度z相交的任意一個三角形,求出切平面與該三角形的交線,然后找到該三角形的相鄰三角形繼續進行,直至回到初始三角形,每個三角形與切平面的交線首尾相連,構成一條多義線。
(1)排除奇異點
切片時,若有頂點落在切平面上,則稱該頂點為奇異點。切片過程中出現的奇異點若帶入后續處理過程,會使得后續處理算法復雜,因此要設法排除奇異點。
(2)搜索求交
搜索求交的主要工作是依次取出組成實體表面的每一個三角形面片,判斷其是否與切平面相交,若相交,則計算出兩交點坐標。判斷三角形面片與切平面是否相交,只需判斷3個頂點是否在切平面的同一側,若在同一側,則不相交,設三角形的3個頂點坐標分別為:A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3),切平面為z=h,則可以通過式(2-1)和式(2-2)分別求出交點D1和D2的坐標值。
D1:
(2-1)
D2:
(2-2)
(3)整序保存
對于拓撲切片來說,搜索求交計算出的是一系列首尾相連的交線,因此直接將交線的數據導入CLI文件(CLI是三維打印系統分層制造技術中幾何數據輸入的一種通用格式)。定層厚容錯切片與定層厚拓撲切片的區別只在于它不需要建立三角形的拓撲信息,正因為這一點,所以在對交線整序保存時,算法也就顯得復雜一些。因為搜索求交計算出的是一條條雜亂無序的交線,為便于后續處理,必須將這些雜亂無章的交線依次連接起來,組成首尾相連的多義線。為克服STL文件的缺點(如對幾何模型描述的誤差大、拓撲信息丟失較多、數據冗余大、文件尺寸大、STL文件容易出現錯誤和缺陷等),有不少文獻對CAD模型的直接分層切片進行了研究。直接切片產生的層片文件與STL文件相比,其優點在于:文件數據量大大降低,模型精度大大提高,數據糾錯過程簡單。