龔張順,趙東標(biāo),薛 樂
(南京航空航天大學(xué)機(jī)電學(xué)院,江蘇 南京 210016)
增材制造(Additive Manufacturing,AM)又被稱為3D打印,它采用自下而上逐層疊加的方式直接將三維虛擬模型轉(zhuǎn)變?yōu)閷?shí)體零件[1-3],大大縮短了產(chǎn)品從概念設(shè)計(jì)到實(shí)體模型的研發(fā)周期,能給產(chǎn)品開發(fā)帶來極大的方便,被應(yīng)用于制造業(yè)[4]、醫(yī)療[5]和動(dòng)漫模型制作[6]等領(lǐng)域。在眾多的增材制造技術(shù)中,熔融沉積成型(Fused Deposition Modeling,F(xiàn)DM)是應(yīng)用最為廣泛的一種,它采用熔融狀態(tài)的熔絲按照掃描路徑依次堆積并冷卻得到實(shí)體模型。
支撐算法是國(guó)內(nèi)外研究的熱門領(lǐng)域,主要圍繞著支撐點(diǎn)的選取和支撐形狀特征生成兩方面。文獻(xiàn)[7]設(shè)計(jì)了一種斜壁支撐結(jié)構(gòu),根據(jù)不同的懸空特征生成三種不同形狀的支撐,與一般采用的直壁結(jié)構(gòu)相比,這種支撐結(jié)構(gòu)大大減少了支撐結(jié)構(gòu)的體積。文獻(xiàn)[8]將單個(gè)細(xì)胞結(jié)構(gòu)組合成支撐形式應(yīng)用在金屬3D打印中,并對(duì)復(fù)雜幾何形狀進(jìn)行支撐優(yōu)化。文獻(xiàn)[9]根據(jù)待支撐區(qū)域的幾何特征設(shè)計(jì)十字支撐、單壁板支撐以及多壁板鋸齒形支撐結(jié)構(gòu)。文獻(xiàn)[10]對(duì)熔融沉積快速成型的支撐優(yōu)化工藝方法進(jìn)行了研究。
首先分析了基于面片傾角支撐區(qū)域選擇方法;利用切片算法得到的切片輪廓簡(jiǎn)化三維布爾運(yùn)算,結(jié)合切片分組的思想生成樹狀支撐結(jié)構(gòu);最后進(jìn)行對(duì)比實(shí)驗(yàn),驗(yàn)證了該算法能有效支撐模型懸空區(qū)域,并且節(jié)省了打印材料和打印時(shí)間。
熔融沉積使用的是熱塑性材料,材料本身具有一定的粘黏性,所以當(dāng)傾角在一定范圍內(nèi)時(shí)不需要添加支撐,當(dāng)傾角過大時(shí),粘黏力無法抵抗材料的重力而產(chǎn)生坍塌,此時(shí)需要添加輔助支撐。因此將保證模型不需要添加支撐就能正常打印的最大傾斜角度稱為臨界角,記為β。對(duì)于STL文件可以通過解析得到每個(gè)面片的法向量n,z軸正方向向量為v(0,0,1),面片的傾斜角θ可以通過下面公式計(jì)算:
將模型上所有面片可以進(jìn)行分類,如表1所示。
表1 三角面片分類Tab.1 The Classification of Triangles
由表1可知,當(dāng)θ<β時(shí)三角面片不需要添加支撐,當(dāng)θ≥β時(shí)需要添加支撐,模型加粗部分即為需要添加支撐的部分,臨界角β會(huì)在4小節(jié)用實(shí)驗(yàn)確定,如圖1所示。
圖1 模型待支撐面提取原理Fig.1 Principle of Extracting Model Support Surface
根據(jù)上述原理,在模型全部三角面片中提取出所有待支撐面片,將這些面片依據(jù)拓?fù)潢P(guān)系利用種子擴(kuò)散法進(jìn)行整合,得到模型若干個(gè)待支撐區(qū)域,整合過程為:從總待支撐三角面片容器中任選一個(gè)三角面片,把此三角面片作為種子,依據(jù)拓?fù)潢P(guān)系判斷其相鄰的三角面片是否為待支撐區(qū)域三角面片,若是則將其加入對(duì)應(yīng)待支撐區(qū)域容器,若不是則用該面片單獨(dú)創(chuàng)建一個(gè)獨(dú)立待支撐區(qū)域,如此遍歷所有待支撐三角面片,即可得到整個(gè)模型的所有待支撐區(qū)域。
由于模型的復(fù)雜多樣性,各待支撐區(qū)域的大小差異較大,對(duì)于那些面積較小的待支撐區(qū)域可以忽略不計(jì),使用的方法如下:遍歷該待支撐區(qū)域所有三角面片,得到面片頂點(diǎn)坐標(biāo)值的最大最小值xmax,ymax,xmin和ymin,用一個(gè)矩形將該區(qū)域包絡(luò),如圖2所示。計(jì)算矩形面積S計(jì)算如下:
圖2 單個(gè)待支撐區(qū)域矩形包絡(luò)圖Fig.2 Rectangular Envelope Map of a Single Supporting Region
去除面積過小的支撐區(qū)域后,在剩下的區(qū)域內(nèi)均勻散布支撐點(diǎn),將包絡(luò)矩形均勻劃分為多個(gè)小矩形,小矩形的中心就是假定的支撐點(diǎn),如圖3所示。由圖3可以看出,假定支撐點(diǎn)可以分為三類:在區(qū)域外,在邊界上和在區(qū)域內(nèi)。后兩種支撐點(diǎn)為有效支撐點(diǎn),將其裝入支撐點(diǎn)容器,以便后續(xù)支撐生成算法使用。
圖3 支撐區(qū)域支撐點(diǎn)散布圖Fig.3 Support Points Distribution Map of Supporting Region
基于面片傾角待支撐區(qū)域選擇算法流程圖,如圖4所示。
圖4 基于面片傾角待支撐區(qū)域選擇算法流程圖Fig.4 Flow Chart of Algorithm for Selecting Supporting Area Based on Face Inclination Angle
對(duì)于樹狀支撐生成算法,其它相關(guān)研究都采用的是圓錐與圓錐進(jìn)行布爾運(yùn)算或者圓錐與實(shí)體進(jìn)行布爾運(yùn)算,這運(yùn)算都是三維空間里的幾何運(yùn)算,尤其是圓錐與實(shí)體模型間的布爾運(yùn)算較為復(fù)雜且耗時(shí),因此利用切片輪廓信息簡(jiǎn)化三維運(yùn)算,降低了算法復(fù)雜程度。
該算法的特點(diǎn)在于將模型的切片輪廓分為多組,每組包括多個(gè)相鄰切片輪廓層,在每組切片輪廓內(nèi)進(jìn)行支撐路徑的運(yùn)算,如圖5所示。將該模型分為3個(gè)普通組切片和1個(gè)基座組切片。對(duì)于普通組切片,運(yùn)算順序自上而下,當(dāng)前組運(yùn)算完留下的支撐點(diǎn)傳遞給下一組普通組切片,作為下一組普通組切片支撐生成運(yùn)算的一部分支撐點(diǎn)的輸入信息,直到所有普通組運(yùn)算完畢,最后以普通組運(yùn)算留下的支撐點(diǎn)作為基座組運(yùn)算的一部分輸入信息,基座組運(yùn)算完即可得到所有樹狀支撐的生成路徑。
圖5 樹狀支撐生成示意圖Fig.5 Tree Support Generation Schematic Map
由于樹狀生成的底部為了保證支撐下端的穩(wěn)定性,基座組和普通組的運(yùn)算有些許差異,普通組支撐生成算法步驟如下:
(1)接收并記錄普通組的起始切片層start_layer和終止切片層end_layer的層序號(hào),先將上一普通切片輪廓組留下的支撐點(diǎn)裝入當(dāng)前組支撐點(diǎn)容器A中,并立即清除上層支撐點(diǎn)遺留容器B,方便這層運(yùn)算完畢裝入;
(2)除了上組遺留的支撐點(diǎn),還需要裝入起始切片層和終止切片層之間生成的原始支撐點(diǎn),此時(shí)支撐點(diǎn)容器A裝入了當(dāng)前組需要運(yùn)算的所有支撐點(diǎn);
(3)首先遍歷容器A中所有支撐點(diǎn),判斷該點(diǎn)是否落在其下方層輪廓內(nèi),若在輪廓內(nèi)則將其向下延伸,下一個(gè)支撐點(diǎn)落在實(shí)體上,并將其從容器A中擦除;若不在輪廓內(nèi),則跳過此點(diǎn),檢測(cè)下一點(diǎn);
(4)重新遍歷容器A,判斷當(dāng)前點(diǎn)ɑk是否能與容器A中其它點(diǎn)連線并且這些線段不穿越模型實(shí)體,代表兩點(diǎn)滿足了支撐點(diǎn)融合的初步條件,若有能連線的支撐點(diǎn)轉(zhuǎn)入步驟5,否則轉(zhuǎn)入步驟6;
(5)求出能與當(dāng)前點(diǎn)ɑk連線的點(diǎn)中離該點(diǎn)最近的點(diǎn)ɑj,判斷這兩點(diǎn)能否滿足支撐傾斜角規(guī)則,即兩支撐點(diǎn)融合時(shí)生成的支撐結(jié)構(gòu)傾角不能過大。若滿足則將這兩點(diǎn)融合為一個(gè)支撐點(diǎn),去除兩點(diǎn),將新得到的支撐點(diǎn)裝入容器A;
(6)沒有能和當(dāng)前點(diǎn)ɑk連線的點(diǎn)時(shí),判斷該點(diǎn)能否傾斜落在實(shí)體模型上,若能則下一點(diǎn)落在實(shí)體上結(jié)束該點(diǎn)的支撐生成,否則將其向下延伸到終止層,作為下一個(gè)普通組的輸入信息。
與普通組樹狀支撐生成相比,基座組缺少了兩支撐點(diǎn)的靠近與相融計(jì)算,也省去了傾斜落于實(shí)體上的支撐計(jì)算,這些是為了保證支撐下端穩(wěn)定堅(jiān)固,基座組支撐生成算法步驟如下:
①接收并記錄基座組的起始切片層start_layer和終止切片層end_layer的層序號(hào),將最后一組普通組遺留的支撐點(diǎn)裝入支撐點(diǎn)容器A中;
②將起始切片層和終止切片層之間生成的原始支撐點(diǎn)裝入支撐點(diǎn)容器A中;
③遍歷容器A中所有支撐點(diǎn),判斷該點(diǎn)是否落在其下方層輪廓內(nèi),若在輪廓內(nèi)則將其向下延伸,下一個(gè)支撐點(diǎn)落在實(shí)體上,并將其從容器A中擦除,否則轉(zhuǎn)入步驟4;
④下方?jīng)]有實(shí)體,則下一支撐點(diǎn)落在基座上,結(jié)束該點(diǎn)的支撐生成。
利用該樹狀支撐算法對(duì)多個(gè)模型進(jìn)行處理,生成的樹狀支撐結(jié)構(gòu),如圖6所示。
圖6 樹狀支撐算法生成模型圖Fig.6 Model Diagram Generated by Tree Support Algorithm in the Paper
為確定支撐臨界角參數(shù),通過斜壁打印實(shí)驗(yàn),每組斜壁傾角間隔5°,試驗(yàn)表明在傾角大于45°時(shí),斜壁塌陷比較嚴(yán)重,所以將前述的臨界角β取為45°,并將其嵌入樹狀支撐生成算法。然后利用切片引擎Slic3r自帶支撐算法、立柱支撐算法和該樹狀支撐算法進(jìn)行對(duì)比試驗(yàn),一共使用了三組模型,對(duì)模型實(shí)際打印數(shù)據(jù)進(jìn)行對(duì)比分析。實(shí)驗(yàn)所使用的機(jī)床為實(shí)驗(yàn)室自主研發(fā)的3D打印數(shù)控機(jī)床,其設(shè)備外形尺寸為(1400×1050×1100)mm,工作空間為(500×500×500)mm,運(yùn)動(dòng)控制系統(tǒng)采用“PC機(jī)+可編程運(yùn)動(dòng)控制卡”,以直徑1.75mm的聚乳酸(PLA)為打印材料,材料熔融溫度為190℃,噴頭空行駛速度為60mm/s,打印速度為30mm/s,打印層厚為0.3mm。仿真模型和打印實(shí)物,如表2所示。開源切片軟件Slic3r支持算法上層與下層切片輪廓間的布爾運(yùn)算得到支撐點(diǎn),生成的是薄壁形支撐;立柱支撐結(jié)構(gòu)是一種向下尋找下另一支撐點(diǎn)的簡(jiǎn)易支撐形式;該樹狀支撐算法通過面片傾角尋找支撐點(diǎn),將三維布爾運(yùn)算簡(jiǎn)化并生成樹狀結(jié)構(gòu)。從表2可以看出,樹狀算法選取的支撐區(qū)域與切片軟件Slic3r選取的支撐區(qū)域一致性較高,狗的骨頭,小黃人的手臂以及喬巴的角上都添加到了支撐;從支撐的稀疏程度,樹狀支撐明顯優(yōu)于前面兩種,輔助支撐的耗材方面也明顯減少。主要記錄實(shí)際打印時(shí)的算法運(yùn)行時(shí)間,打印時(shí)間,支撐耗材質(zhì)量三個(gè)方面來比較三個(gè)算法的優(yōu)劣,試驗(yàn)結(jié)果,如表3、表4所示。
表2 不同算法生成的模型效果圖和打印實(shí)物圖Tab.2 Model Effect Maps and Printed Physical Maps Generated by Different Algorithms
表3 試驗(yàn)數(shù)據(jù)表Tab.3 Test Data Sheet
表4 樹狀支撐算法與Slic3r,柱狀支撐算法的節(jié)省比較Tab.4 Comparison of Tree Support Algorithm,Slic3r and Columnar Support Algorithm
從表3、表4可以看出,在打印耗時(shí)和支撐耗材方樹狀支撐算法明顯優(yōu)于其他兩個(gè)算法。但是在算法運(yùn)行時(shí)間方面,對(duì)于其他兩個(gè)軟件算法并無優(yōu)勢(shì),因?yàn)闃錉钪嗡惴ㄔ谏蓸錉钸^程上較其它兩種算法復(fù)雜,由于對(duì)三維布爾運(yùn)算進(jìn)行了簡(jiǎn)化處理,運(yùn)算時(shí)間并未增加太多。支撐算法生成的支撐結(jié)構(gòu)可剝除性在實(shí)際應(yīng)用中也很重要,對(duì)于Slic3r生成的薄壁支撐,和模型的接觸面積較大,打印出的零件較難去除輔助支撐,并會(huì)對(duì)表面質(zhì)量產(chǎn)生影響;而該樹狀支撐在設(shè)計(jì)時(shí)采用削尖處理,使支撐與模型的接觸面積變小,降低剝除的難度,減小對(duì)模型表面的損傷。綜合以上,該樹狀支撐算法的優(yōu)點(diǎn)在于,能夠準(zhǔn)確地判斷需要支撐的懸空區(qū)域,較明顯地減少打印時(shí)間和打印耗材,并且減小了支撐剝除對(duì)模型表面的損傷。
(1)針對(duì)熔融沉積成型技術(shù)提出了一種新的樹狀支撐生成算法,該算法通過面片傾角判斷支撐區(qū)域,能準(zhǔn)確選取支撐點(diǎn)。(2)通過切片輪廓信息簡(jiǎn)化三維布爾運(yùn)算,降低了算法復(fù)雜度,減少了算法處理時(shí)間。(3)從生成樹狀結(jié)構(gòu)和打印效果來看,該算法大大節(jié)省了打印時(shí)間和輔助支撐的材料耗損,并且減小了支撐與模型間的接觸面積,方便后期剝除,保持模型較高的表面質(zhì)量。