潘科峰,孔令旺,趙剛
(1.青田縣職業技術學校 智能制造學部,浙江 麗水 323900;2.吉林工程職業學院 信息工程學院,吉林 四平 136000;3.吉林大學,長春 130021)
近年來,3D 打印技術已經成為智能制造領域的研究熱點。3D 打印技術本質上采用了離散堆疊的思想,離散過程是指通過計算機對三維數據模型進行分層,獲得一系列的二維平面輪廓。堆疊是指使用打印耗材逐層填入模型二維平面輪廓內,完成整個模型的實體制造過程[1-2]。由于3D 打印逐層疊加的制造原理,模型表面會出現“階梯”狀層紋,當層厚較大時,階梯效應較為明顯,模型的成形質量較差[3-4]。為了提升熔融沉積成形3D 打印的制件質量,減小階梯效應對模型精度的影響,一般采用減小分層厚度的方式,但是該方式會增加模型成形耗時,因此傳統等厚分層不能很好地解決成形質量和打印耗時之間的矛盾。自適應分層能夠根據模型的輪廓特點自行調整分層的層厚,在一定程度上能夠提升制件的成形質量,減少打印耗時。傳統等厚分層和自適應分層均采用整體式分層的策略,對于孔洞特征模型,通過調整模型整體分層層厚來平衡成形質量和打印耗時的效果較差。
模型分割能夠根據模型特征將模型分成不同部分,再對不同部分的模型進行分層處理,進而提升模型的成形質量。Wang 等[5]基于視覺顯著性的分割方法,通過水平和垂直分割平面,將模型分為多個段塊,然后對每個分割段進行了自適應分層處理。王春香等[6]同樣采用模型分割原理先完成了模型的凸起特征分割,再分別進行自適應分層,但該方法為人工分割,對復雜模型不太適用。Kristian 等[7]運用聚類的方法找到多組分割交點和分割法線,通過正交法線和分割中心實現模型分割,并對分割后的模型進行邊緣體素化,通過計算模型的體積損失誤差,找到誤差最小的方向,對模型進行等厚分層處理,該方法的模型體素化過程會降低算法處理效率。根據層厚判據及側重點的不同,自適應分層算法的效果有所區別。林瓊潔等[8]、田仁強等[9]和Wang 等[10]通過STL 模型三角面片法向量與成形方向的夾角實現了自適應調節層厚,有效提升了模型成形質量,但成形時間較長。LYU 等[11]提出了一種基于體積誤差最小原則,尋找最優三角面片法矢量與成形方向的夾角來實現自適應分層的方法。Pan 等[12]通過比較兩分層輪廓的面積變化情況,確定了下一層分層厚度,但由于模型形狀多變,成形精度較差。魏效玲等[13]和周惠群等[14]利用模型外輪廓曲線切線與打印方向夾角實現了自適應分層,但其算法處理過程較為復雜。王軍偉等[15]、韓江等[16]、Navangul 等[17]、朱敏等[18]主要考慮了模型特征丟失及偏移問題,通過改進分層算法,有效識別和保留了模型的微小細節特征,但缺乏考慮階梯效應對模型的影響。
針對目前整體式分層算法對孔洞特征模型分層不能較好協調成形精度和打印耗時之間關系的問題,本文提出了一種孔洞特征模型特征分割及自適應分層算法,并給出了針對STL 模型孔洞特征分割位置的判定方法,以及對分割后模型自適應分層處理的具體過程。
STL 模型文件采用以大量三角面片擬合輪廓的方式表達模型幾何特征,文件中主要包含三角面片的頂點坐標數據和三角面片的法向矢量,具有格式簡單、易讀取等優點,是目前最常用的3D 打印模型文件[19-21]。STL 模型文件有2 種數據格式:文本格式(ASCII)和二進制格式(Binary)[22]。本文通過MATLAB 平臺讀入二進制格式的STL 模型,由于螺母模型內部螺紋以及拇指輪模型的外側滾花在實際制造過程中要求較高,因此使用如圖1 所示的螺母模型和拇指輪模型算法進行驗證。
完成STL 模型讀入后,要進行分層處理。分層處理通常以一系列分層平面求取STL 模型的每一層截面輪廓曲線,然后偏移輪廓曲線,計算出模型外殼打印路徑,并對模型進行填充及路徑規劃,最后輸出數控程序指令G-code,3D 打印機按照G-code 完成模型實體制造[23-24]。
分層獲取模型每一層的二維平面輪廓,在打印過程中,熔融耗材按照層厚高度填充模型輪廓,如果上下兩層的輪廓不相同,勢必會造成打印的模型實體與STL 模型存在一定偏差,即階梯效應,如圖2 所示。其中z為成形方向,D、d為層厚,T為模型表面,α為模型在該處輪廓切平面的法向矢量與成形方向z的夾角,ΔVi是第i層實體與STL 模型的幾何誤差。當分層厚度為D時,模型分層層數較少,成形效率較高,幾何誤差ΔVi較大,即階梯誤差較大;反之,當分層厚度為d時,模型分層層數增加,成形效率降低,幾何誤差ΔVi減小。同時,α隨著模型曲率發生變化,在相同層厚下,當α較小時,幾何誤差ΔVi較大;反之,當α較大時,幾何誤差ΔVi較小。

圖2 STL 模型階梯效應示意Fig.2 Schematic diagram of the step effect of the STL model:a) large thickness slicing; b) small thickness slicing
自適應分層能在模型曲率變化大區域,即當α較小時,自動減小層厚,進而達到減小幾何誤差ΔVi和降低打印耗時的目的。在實際分層應用中,通過ΔVi來衡量幾何誤差的計算過程較為復雜,因此,有學者提出通過階梯高度來衡量模型的幾何誤差。相鄰分層平面的Zi和Zi+1分層示意圖如圖3所示。其中,αj為模型在該處三角面的法相矢量與分層方向z的夾角,夾角的計算如式(1)所示;di+1是第i+1 層的分層厚度,δi為階梯高度,即該層模型實體與模型表面T的最大距離[25]。

圖3 分層幾何誤差示意Fig.3 Schematic diagram of sliced geometric errors
由圖3 可以建立di+1、δi、αj三者之間的關系,如式(2)所示。
由式(2)可知,當αj不變時,層厚di+1減小,階梯高度δi減小,模型精度提升;當層厚di+1無限小時,階梯高度δi無限趨近于0,模型成形實體與STL模型一致。受限于打印機制造工藝,分層厚度不可能無限制減小,因此,模型分層厚度介于設置的最大分層厚度和最小分層厚度之間,當層厚在這個區間內時,可以通過設置期望階梯高度δi、計算模型層厚(依據式(2)),來保證模型的成形精度。模型與單個分層平面交有多個三角面片,并且這些三角面片的法向矢量不盡相同,為了保證計算出的層厚能夠符合該層相交的所有三角面片,式(2)中αj采用的是同一分層平面相交的三角面片中法向矢量與z軸夾角的最小值,同時為了衡量模型整體打印質量,計算每層分層平面相交三角面片的階梯高度均值,再對所有層的階梯高度求均值,如式(3)所示。
式中:k為當前層相交三角面片數;δi為根據式(2)計算得到的第j個三角面片的階梯高度;n為分層層數;為整體模型的平均階梯高度。
采用與當前層相交三角面片的法向矢量與z軸相交的夾角最小值進行自適應分層的層厚計算。對于孔洞模型,整體式分層同一層相交三角面片分別包含孔洞特征三角面片和其他部分三角面片,顯然采用整體式獲取的層厚能夠滿足設置的期望階梯高度,但是這會增加一部分模型的分層層數,降低了打印效率。如果將孔洞特征模型分成孔洞特征部分和其他部分,分別進行自適應分層,可將影響層厚計算的三角面片范圍縮小到局部區域所包含的三角面片,分層的層厚更貼合模型特征。模型中處于水平的三角面片在分層過程中無法與分層平面相交,因此,可以通過剔除模型底部和上部水平三角面片的方式,使孔洞特征部分的三角面片與其他區域的三角面片處于非鄰接狀態,然后通過拓撲搜索將兩部分模型所包含的三角面片分離[26],分離結果如圖4 所示。

圖4 孔洞特征分離Fig.4 Hole feature separation
在本文的分層算法中,通過式(2)計算不同大小法向量夾角對應的層厚,設置的期望階梯高度值為0.05 mm,最小層厚為0.02 mm,最大層厚為0.3 mm。在層厚允許區間內,角度α-分層厚度d的變化曲線如圖5 所示。將計算獲得的不同高度分層平面分別與螺母模型分離出的兩部分三角面片求交線段,獲得分層輪廓,然后進行輪廓偏移求出殼體的打印路徑,螺母模型孔洞特征和其他部分自適應的分層模擬圖如圖6所示。按照完整模型以等厚分層方法計算獲得模型的填充區域并生成支撐,最后將殼體、填充和支撐等部分的打印路徑整合在一起,輸出完整的模型打印G-code。

圖5 法向矢量夾角與層厚關系Fig.5 Normal vector angle vs. layer thickness

圖6 模型各部分自適應分層模擬Fig.6 Adaptive slicing simulation for all parts of the model:a) simulation of the outer layering of the nut;b) simulation of the internal layering of the nut
由于在自適應分層處理過程中,根據式(2)計算的是下一層的厚度,因此,需要人為設置第一層分層厚度,并且從第二層分層開始為自適應分層,本文分層算法流程如圖7 所示。

圖7 本文分層算法流程Fig.7 Slicing algorithm process in this paper
1)步驟1:讀取二進制格式的STL 模型文件,設置分層厚度范圍為最小層厚dmin至最大層厚dmax,然后根據式(1)計算所每個三角面片法向矢量與z軸的夾角α,并將模型上下底的水平三角面片剔除,對剩余三角面片建立拓撲結構。
2)步驟2:以任意模型孔洞特征包含的一個三角面片tir1為起始,根據建立的拓撲結構,遍歷所有三角面片,這樣將可以通過tir1拓撲搜索得到的三角面片信息存入 facet1中,不能拓撲搜索到的存入facet2中。
3)步驟3:求出facet1、facet2與層高zi、zj相交的三角面片,分別查詢其中的最小夾角αi、αj,然后根據式(2)計算出層厚dlayer1、dlayer2,判斷計算的層厚是否在設置層厚范圍內,若是小于最小層厚,則下一層層高為上一層層高加上dmin;若大于最大層厚,則下一層層高為上一層層高加上dmax;若在層厚范圍內,則下一層層高為上一層層高加上dlayer1或dlayer2。
4)步驟4:判斷當前層高是否大于zmax,若分層高度大于zmax則分層結束,并將兩部分分層輪廓線整合為一體,否則返回步驟3。
本文使用的2 個示例模型的3 種分層算法分層模擬圖如圖8 所示。3 種分層算法分別是等厚分層算法、文獻[9]所提三角面片法向量自適應分層算法及本文所提分層算法,其中等厚分層算法得到的層厚為0.3 mm。從圖8 可以看出,文獻[9]實現了整體式自適應分層,本文分層算法實現了孔洞內外特征單獨自適應分層。

圖8 3 種分層算法分層模擬對比Fig.8 Slicing simulation comparison of 3 slicing algorithms: a) uniform slicing of the nut model; b) nut model literature [9] slicing; c) the nut model sliced in this article; d) uniform slicing of the thumb wheel model; e) thumb wheel model literature [9]slicing; f) the thumb wheel model sliced in this article
為了驗證本文分層算法的實際打印效果是否符合上述分層模擬結果,將2 個示例模型分別以等厚分層算法、文獻[9]所提三角面片法向量自適應分層算法及本文所提分層算法輸出的G-code 導入桌面級FDM打印機中完成實體制造,打印耗材使用PLA 線材,填充密度設置為30%。2 個示例模型3 種分層算法的實際打印圖像如圖9 所示。對于螺母模型,等厚分層實體打印模型內部的螺紋牙型未成形,文獻[9]分層算法和本文分層算法模型內部的牙型成形較好。對于拇指輪模型,等厚分層算法模型外部的滾花成形較為粗糙,文獻[9]分層算法和本文分層算法模型外部的滾花成形較為清晰。

圖9 3 種分層算法實物打印對比對比Fig.9 Comparison of 3 slicing algorithms for physical printing: a) uniform slicing of the nut model; b) nut model literature [9] slicing; c) the nut model sliced in this article; d) uniform slicing of the thumb wheel model;e) thumb wheel model literature [9] slicing; f) the thumb wheel model sliced in this article
在示例模型打印過程中,記錄了示例模型的各分層算法打印耗時,并通過式(3)計算了模型在不同算法中的平均階梯高度值,如表2 所示??梢钥闯?,當等厚分層的層厚為0.02 mm 時,模型成形質量最好,打印耗時最長;當分層厚度為0.3 mm 時,成形質量最差,打印耗時最少。文獻[9]自適應分層算法和本文算法的成形精度和成形時間均處于等厚分層算法中2 種層厚數據之間,但是與文獻[9]自適應分層算法相比,本文分層算法的精度分別提升了20.18%和62.68%,打印耗時分別縮短了34 min 和11 min。

表2 3 種分層算法實際打印數據Tab.2 Actually printed data of 3 slicing algorithms
針對整體式分層算法對孔洞特征模型分層的層厚不夠合理及成形時間較長等問題,提出了一種孔洞特征模型特征分割及自適應分層算法。本文自適應分層算法充分考慮到階梯效應對模型精度的影響,采用先分割模型孔洞特征,再分別對各部分自適應分層的策略,實現了分層層厚更加貼合模型特征的目的,能夠較好地平衡成形精度和成形效率之間的關系。