葛 嘯 史廷春 岳秀艷
(①杭州電子科技大學自動化學院,浙江 杭州 310018;②杭州電子科技大學圖書館,浙江 杭州 310018)
隨著工業(yè)4.0時代的到來,制造技術逐步向智能化轉(zhuǎn)變[1]。近年來,增材制造技術逐漸成熟,三維打印如何快速建造各類結(jié)構(gòu)復雜的形體,提高系統(tǒng)效率、質(zhì)量及降低成本成為了主要研究目標[2]。新形勢下,應該加快推動增材制造在我國的發(fā)展,推進我國由“制造大國”向“制造強國”的轉(zhuǎn)變[3]。熔融沉積制造(fused deposition modeling,FDM)是一種以數(shù)字模型文件STL(stereolithography)為基礎,運用熱塑性粘合材料,通過逐層打印的方式來制造產(chǎn)品的增材制造技術。FDM技術的一個主要特點是熔絲必須沉積在模型實體或支撐結(jié)構(gòu)上,支撐結(jié)構(gòu)在打印過程中起到支撐模型懸空部分的作用,支撐不足會影響成型穩(wěn)定性,過多會增加模型打印時間和成本。模型制作完畢后,這些支撐必須被剝離。因此,如何在打印過程中減少支撐成為研究的重要內(nèi)容之一[4]。
當前有許多關于3D打印支撐結(jié)構(gòu)問題的研究。Hu R等人[5]將模型分解為多個小組件,運用少量支撐的打印方向?qū)⑿〗M件組裝成完整的模型?;诹Ⅲw光固化工藝,李衛(wèi)等人[6]提出了齒形支撐結(jié)構(gòu)的算法,以提高模型表面質(zhì)量,減少形變;易于剝離支撐結(jié)構(gòu),提高精度。通過幾何方法[7],無導數(shù)優(yōu)化方向的算法[8],拓撲優(yōu)化算法[9],超卷積神經(jīng)網(wǎng)絡檢測[10]及遺傳算法等均可簡化支撐設計,減少打印時間。此外,F(xiàn)azzini Gianfranco[11],Barile Gianluca等人[12]提出的優(yōu)化算法可以在熔融沉積過程中減少打印支撐結(jié)構(gòu)。模型劃分算法可以將模型劃分為適應打印空間的錐體[13]。Jang S等人[14]將3D模型轉(zhuǎn)換為分層深度圖像的幾何表示,識別有效支撐點來減少支撐結(jié)構(gòu)。在尋找支撐結(jié)構(gòu)時,常規(guī)方法是選取模型中外法向量朝下且與水平面夾角較小的面作為待支撐部位?,F(xiàn)有的許多切片引擎(Cura,MeshMixer)均采用這種方法[4]。在添加支撐結(jié)構(gòu)時,Strano G等人[15]提出在所需表面下方擠出稀疏密度的網(wǎng)格支撐結(jié)構(gòu),該方法支撐穩(wěn)定性好但浪費材料。而臨界角約束的樹形支撐結(jié)構(gòu)可以有效減少支撐材料,縮短打印時間[16]。
本文提出一種八棱柱狀支撐結(jié)構(gòu),相比四棱柱狀支撐結(jié)構(gòu)該截面更趨近于圓形,從而減少打印過程中電機啟停次數(shù),節(jié)省時間和材料,降低成本。實驗結(jié)果表明,本文提出的算法在保證模型穩(wěn)定成型的基礎上,能夠有效節(jié)省打印時間和耗材。
在設計FDM支撐結(jié)構(gòu)時,為了提高支撐結(jié)構(gòu)的合理性,需綜合考慮以下要素:(1)支撐要保證足夠的強度和穩(wěn)定性:避免打印過程中發(fā)生變形。(2)支撐應盡可能少:多余的支撐需要額外的材料,加工時間和后處理任務。(3)支撐應易于剝離:若支撐與模型粘接過牢,后處理更加困難且降低模型表面質(zhì)量[6]。
首先系統(tǒng)讀取STL文件;根據(jù)定義的臨界角進行待支撐區(qū)域檢測,檢測后的區(qū)域向二維區(qū)域投影;根據(jù)投影區(qū)域范圍進行等距采樣;計算采樣點在模型上的Z坐標,生成支撐結(jié)構(gòu);然后將支撐結(jié)構(gòu)三角化并寫入STL文件;最后輸出包含支撐結(jié)構(gòu)的STL文件。算法流程如圖1。
STL文件是由3D建模軟件導出的一種將模型表面三角化的文件。它包含80字節(jié)的模型名稱,4字節(jié)的三角面片數(shù)量,3×3×4字節(jié)的頂點和法向矢量信息,2字節(jié)的屬性信息。每個STL文件大小為:84字節(jié)+50字節(jié)×三角面片數(shù)量。STL文件有兩種格式:二進制格式和ASCⅡ格式。二進制格式文件尺寸較小,僅占ASCⅡ格式的1/6。本文選用的STL文件讀取方式為二進制。
基于STL文件,待支撐區(qū)域的三角面片分為懸吊面、懸吊邊和懸吊點3種類型。
4.1.1定義臨界角
模型在成型過程中是否需要添加支撐結(jié)構(gòu),取決于模型表面的傾斜角度。模型分層把模型在Z向上分成一系列具有一定厚度(0.05~0.30 mm)的薄層,分層破壞了模型的連續(xù)性,使之在側(cè)向產(chǎn)生了臺階[17]。由于成型材料從噴嘴擠出時有一定的線寬,熔融材料的粘結(jié)特性使新成型的外輪廓比上一層更大,從而產(chǎn)生了自支撐傾斜角,即臨界角。如圖2所示,根據(jù)公式(1),設置層厚h越小,θ值越大,自支撐能力越強,超出這個范圍的區(qū)域為待支撐區(qū)域。
(1)
4.1.2 提取懸吊面
根據(jù)模型中三角面片的外法向量與Z軸正向(重力的反方向)間的夾角關系來提取支撐區(qū)域[20]。其中Z軸正向向量為v(0,0,1),三角面片的外法向量為n,兩者滿足:
n·v=|n|·|v|cosθ
(2)
利用兩者關系來計算夾角θ,此時得到的θ值為弧度值,再將弧度轉(zhuǎn)化為角度。如圖3所示,若θ大于一定的閾值,則該三角面片為待支撐三角面片。
4.1.3 待支撐區(qū)域投影
生成一個三維空間的支撐結(jié)構(gòu),空間采樣需要大量的計算,會大大降低算法效率。所以將待支撐區(qū)域向工作平面投影,得到需要支撐的二維投影區(qū)域。將所有待支撐三角面片的頂點z坐標值設為0,如圖4所示,得到待支撐區(qū)域的二維投影區(qū)域[18]。
4.1.4 投影區(qū)域采樣
如果所有的待支撐三角面片都添加支撐,會造成支撐過多和移除困難。因此,對待支撐區(qū)域進行采樣十分必要。待支撐區(qū)域投影到XOY平面,根據(jù)設定的x、y間距參數(shù)均勻分布支撐點,間距參數(shù)直接影響支撐密度、質(zhì)量,并且x、y間距參數(shù)應大于設定的支撐體外接圓直徑,這兩個參數(shù)適當搭配,保證合理的支撐密度。
(1)等距采樣法
對待支撐區(qū)域進行采樣,若采樣點太稀疏,不能保證模型成型;反之,支撐結(jié)構(gòu)不易去除和浪費材料。所以采樣點的數(shù)量應在合理范圍內(nèi),既保證模型正常成型、又節(jié)省材料[19]。這里采用等距采樣法,如圖5所示。采樣距離為d,X向間距Nx,Y向間距Ny分別為:
Nx=(Xmax-Xmin)/d
(3)
Ny=(Ymax-Ymin)/d
(4)
(2)重心法
若待支撐區(qū)域的二維投影區(qū)域非矩形,則進行采樣后,需要判斷采樣點是否在投影區(qū)域內(nèi)。本文采用重心法來判斷一個點是否在三角形內(nèi),三角形的3個點在同一平面上,若選中其中1個點,其余兩個點是相對該點的位移。如選擇點A為起點,則點B相當于在AB方向移動一段距離得到,點C相當于在AC方向移動一段距離得到[20],如圖6所示。
依次遍歷待支撐區(qū)域,找到包含該二維點的三角面片,否則去掉該采樣點,如圖5中黑色點。然后建立三角形平面方程計算二維點在平面內(nèi)的z值,得到支撐頂點的三維坐標(x,y,z)。
如圖7所示,作平面使其經(jīng)過線段AB的中點E,并與線段AB在XOY面的投影正交,該平面與兩個面片的交線為GE和EH。懸吊邊的特征如下:
(1)懸吊邊與XOY平面夾角小于設定值。
(2)包含懸吊邊的2個三角面片均為非待支撐面。
(3)包含懸吊邊的2個三角面片的單位法矢量和向下。
懸吊點的特征如圖8所示,圖8a中的A為懸吊點,圖8a中的A非懸吊點。懸吊點的特征如下:
(1)z坐標低于與其共線的其他點z坐標。
(2)包含該點的邊不是懸吊邊。
(3)包含該點的面不是懸吊面。
(4)懸吊點向下延伸,與其相交的首個三角面片的法矢量向上,或與模型表面交點個數(shù)為偶數(shù)[21]。
用Matlab生成八棱柱狀支撐結(jié)構(gòu),根據(jù)XOY平面的采樣點矩陣和支撐頂點三維坐標矩陣,分別以這兩個矩陣中的點作為支撐結(jié)構(gòu)的上下表面中點,每個點距中點的長度為a,構(gòu)成八棱柱狀支撐結(jié)構(gòu)。
支撐結(jié)構(gòu)三角化,根據(jù)公式(5)計算三角面片的法向量n;v1、v2是三角形兩條邊的基向量;上下表面頂點分別和中心點構(gòu)造成三角形;側(cè)面劃分為2個三角形(ADB,BDC),根據(jù)右手定則,每個面的法向量需指向?qū)嶓w的外側(cè)。如圖9所示,八棱柱支撐的上方8個頂點可以依次確定為:
(x,y+a,z),(x+a×sin(π/4),y+a×sin(π/4),z),(x+a,y,z),(x+a×sin(π/4),y-a×sin(π/4),z),(x,y-a,z),(x-a×sin(π/4),y-a×sin(π/4),z),(x-a,y,z),(x-a×sin(π/4),y+a×sin(π/4),z)。同理下方8個頂點將上述坐標中z換成0。將得到的所有頂點坐標,法向量坐標寫入STL文件中。
本文用SolidWorks制圖并生成STL文件,Matlab開發(fā)待支撐區(qū)域的自動生成系統(tǒng),可以快速找到三維模型的待支撐面,添加支撐結(jié)構(gòu)。
(1)圖10為懸吊邊、懸吊點的模型圖,對應檢測結(jié)果和生成支撐后的模型。
(2)STL文件載入Inspire-S250型打印機進行實驗。在相同的打印參數(shù)下,將3D打印機自帶切片軟件生成的支撐結(jié)構(gòu)與本文算法生成的支撐結(jié)構(gòu)進行對比,如圖11所示。
(3)STL文件轉(zhuǎn)成G代碼后,載入Prusa-i3型打印機中進行實驗。在相同的打印參數(shù)下,將Cura切片軟件生成的支撐結(jié)構(gòu)與本文算法生成的支撐結(jié)構(gòu)進行對比,如圖12所示。實驗結(jié)果如圖13所示。
實驗結(jié)果分析:表1表明,本文支撐結(jié)構(gòu)相比于Inspire-S250型打印機支撐結(jié)構(gòu),打印時間縮短了26.98%,材料節(jié)省了22.09%;表2表明,本文支撐結(jié)構(gòu)相比于Cura切片軟件的支撐結(jié)構(gòu),打印時間縮短了14.85%,材料節(jié)省了27.23%。
表1 打印結(jié)果對比
表2 打印結(jié)果對比
(1)本文提出的八棱柱狀支撐結(jié)構(gòu)的設計方法,能夠快速準確地生成支撐結(jié)構(gòu),節(jié)約模型打印時間和材料,為模型三維打印支撐結(jié)構(gòu)提供了優(yōu)化方案。
(2)本文提出的八棱柱狀支撐結(jié)構(gòu)是在四棱柱狀支撐結(jié)構(gòu)上的一種改進方法。支撐結(jié)構(gòu)越趨近于圓形,越節(jié)省打印時間和耗材,但是支撐結(jié)構(gòu)三角化更加復雜,寫入STL文件數(shù)據(jù)量更加龐大;另外圓柱狀支撐結(jié)構(gòu)經(jīng)過Cura切片后,會出現(xiàn)不兼容等情況。如圖14所示。
(3)本文算法在采樣時懸吊球采樣了2行8列,斜面采樣了2行3列,對于采樣點采樣情況,采樣點越多,打印越穩(wěn)定,打印時間越長,支撐結(jié)構(gòu)越難拆除;采樣點越少,穩(wěn)定性下降,打印時間越短,支撐結(jié)構(gòu)越容易拆除。下一步研究將進一步考慮采樣點個數(shù),采樣間距問題,增強算法的適用性,使之適用于大多數(shù)模型。