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