,
(南京航空航天大學機電學院,江蘇 南京 210016)
熔融沉積成型(FDM)是快速成型技術中一項發展較為成熟的技術。熔融沉積制造技術將熱塑性材料,如PLA,ABS等加熱熔融,出絲機構擠出絲狀熔絲,并沿著特定軌跡運動,層層堆疊而成一個完整的物體模型[1]。該技術的一個顯著問題在于,由于剛噴出的熔絲呈現熔融態,它的有效堆積取決于下層是否存在實體。因此,添加支撐結構就顯得尤為重要。生成的支撐結構端部和物體模型的懸空部分相融合,在模型打印結束后對支撐結構進行人為剝除。
如何合理地添加支撐結構,是確保某些模型能夠完整且精確打印出來的前提條件。關于熔融沉積成型的支撐算法,已有大量的研究工作開展,其重點主要圍繞待支撐部位的選擇和支撐結構的添加2個方面。Allen[2]使用三角面片與水平面之間的夾角作為判斷添加支撐結構的條件。Vanek等人[3]提出了模型最優的放置方式,并建立樹狀支撐結構。Huang[4]和Snead[5]等人利用布爾運算計算上下切片層之間的差值,以決定上層切面需要添加的支撐的面積大小。Strano[6]等人提出對支撐結構內部進行蜂窩狀掏空,陳之佳[7]等人對布爾運算進行改進,提出了一種基于直線掃描的支撐結構生成方法。Wang[8]等將建筑學中的框架結構引入支撐結構設計中。魏瀟然[9]等人根據熔絲的特點作為待支撐點的選取依據。陳巖[10]等人提出設置一個支撐參數來作為判斷模型輪廓點是否需要添加支撐的點的判斷。
在此,提出一種基于模型輪廓信息的支撐結構自動生成算法,確保模型中所有懸空部位都添加了支撐結構,能夠有效地節約打印耗材和打印時間。本算法主要特點在于:以熔融態熔絲能夠懸空的最大長度,作為該部分需要添加支撐結構的依據;在生成支撐結構時,根據模型自身的結構特點來調節支撐結構的長度。
本文算法的核心思想,是對實際熔融沉積過程進行一定程度上的模擬,將打印過程中的一些重要參數,運用到算法對模型的處理上來,使得搜索到的待支撐區域更符合實際情況。
對于三維打印來說,最常用的文件是STL文件,是以三角面片逼近物體真實輪廓的儲存格式。但即使對于同一個模型來說,模型上不同位置的三角面片的大小也存在著較大的差異,因此對模型沿z軸分層切片,求得同一層相鄰的2個輪廓點之間的距離L不一定相同。將距離L處理成與熔絲的寬度f相等,這樣一來,對每個輪廓點的處理等效于處理實際打印過程中的熔絲末端位置。
首先要準確地找到待支撐區域,本算法中體現為找到要待支撐點集。遍歷輪廓點集P{P0,…,Pi,…,Pn}(n為分層數,Pi為某一層的點集,P0為最底層)中的所有點,提取出待支撐點存入待支撐點集A中。
對于輪廓上的任一個點ta,都需要找到下一層中與自己距離最小的點tk的序號k和與之對應的最小距離值d:
(1)
d=Dta-tk
(2)
j=1,…,m;Dta-tj為點ta與下一層任一點tj的水平距離。
根據安全距離,進行待支撐點集初步選取的步驟如下:
a.從P1開始,對每層點集中的所有點進行遍歷。
b.首先,判斷該點ta是否為每一層起始坐標點t0,若是,則轉入步驟c,若不是,則轉入步驟d執行。
c.從下一層點集Pi-1起始點t0開始正向搜索,若點ta與點t1的距離值Dta-t1小于與點t0的距離值Dta-t0,依次搜索t2,t3,…,直到搜索到距離值最小的點tk;若點ta與t1點的距離值Dta-t1大于與點t0的距離值Dta-t0,則開啟反向搜索模式,從點集的末尾開始,繼續搜索tm,tm-1,…,直到找到距離值最小的點tk;并記錄下最小距離點tk的相關信息。轉入步驟e。
d.根據點ta前一點ta-1記錄下的最小距離點的信息,從ta的最小距離點開始正向或者反向搜索,獲得該點ta的最小距離點tk的相關信息。
e.將ta與點tk的距離值Dta-tk與熔絲伸出的安全距離Da進行比較,若大于安全距離Da,則該點為需要添加支撐的點,存入待支撐點集A中。
本算法提出了一種新的搜索方法,根據待搜索點ta前一點ta-1儲存的最小距離點的信息,從前一點ta-1的最小距離點開始正向或者反向搜索。2個相鄰點的最小距離點相距一般相隔很近,這樣的方式能夠加速搜索的進行。
而對于初步選取的待支撐點集A{a0,a1,…,ak,…,am},由于只考慮了安全距離Da,所以點ak可能投影在下層模型的內部或者在外部,只有在外部的點才是需要添加支撐的點。將投影在下層模型內部的待支撐點,從點集A中剔除,最終留下的點集才是真正需要添加支撐的點集。
模型內部和外部的劃分是由輪廓環之間的相互包含的關系來體現的。同一層可能包含多個輪廓環,輪廓環之間又可能分別存在包含的關系。在判斷點ak的投影是否位于下層模型內部之前,需要首先判斷哪些輪廓環包含的范圍屬于模型實體范圍。因此,需要對輪廓環之間的關系進行一些預處理。
在此,提出了一種求解方法。由模型本身的特點可知,大的輪廓環一定不會包含在小的輪廓環內,這樣就不需要求解這個關系。將所有環按大小先進行升序排序,每個環只需對排序位于之后的環求解包含關系,將有包含關系的環分別建立數個分離的拓撲數據鏈表。基于這些數據鏈表對點ak進行最終的判斷。
根據待支撐點是否位于模型內部的判斷條件,進行再次篩選支撐點集的步驟如下:
a. 根據點集A中的每一個點ak存儲的信息,獲得該點對應的下一層層號和該層的點集Pi。
b.判斷ak是否與前一個ak-1在同一層,若是,轉入步驟c;若否,轉入步驟d執行。
c.根據前一點ak-1建立的下層輪廓環拓撲數據鏈表,判斷該點是否位于某個數據鏈表中,并記錄下鏈表中包含該投影點的環數量,根據環的數量判斷該點是否位于下層模型內部。轉入步驟e。
d.先對下一層的所有輪廓環按大小進行升序排列,對于每個環來說,只求解與排序位于之后的輪廓環的包含關系,將所有環分別存入對應的拓撲數據鏈表中,操作過程如圖1和圖2所示。判斷該點是否位于某個數據鏈表中,并記錄下鏈表中包含該投影點的環數量,根據環的數量判斷該點是否位于下層模型內部。
e.從點集A中剔除位于模型內部的待支撐點,獲得新的待支撐點集A。

圖1 同一層輪廓環之間原始的關系

圖2 步驟d處理后輪廓環之間的拓撲關系
對模型輪廓上的所有點(除了底層)都計算,并儲存下一層與之對應的最小距離點的信息,這些信息的保留將極大地減少搜索時間。對于每個點ak生成的支撐柱來說,都存在實際寬度,也就說明了由點ak生成的支撐柱,不僅能夠支撐點ak本身,也能將點ak周圍的點一并支撐。若鄰域中存在待支撐點,就不需要對這些待支撐點再次處理判斷,能夠有效避免支撐柱之間的實體重合。支撐柱能夠穩定存在的條件為:
len≤LEN(θ) whenα=θ
(3)
len和α分別為待生成支撐柱的長度和與水平面方向的夾角,LEN(θ)為通過試驗求得的能夠穩定存在支撐柱的長度與角度的關系式。
尋找支撐柱兩端面上中心點,即尋找支撐每個待支撐點的支撐柱上另一端的點的步驟如下:
a.遍歷待支撐點集A中的所有點,若該點是第一個點a1,則轉入步驟b;若不是,則轉入步驟c。
b.根據點ak中儲存的下層最小距離點bk1,計算出2點之間的距離len和角度α,代入支撐柱穩定存在條件,若滿足,將bk1存入ak的點結構中;若不滿足條件,則找到bk1的最小距離點bk2,再次進行支撐柱穩定存在條件判斷,依次類推,直到找到滿足條件的點bkn為止;若搜索到底層時依然沒有找到符合條件的點bkn,則將ak在底層的投影點作為bkn。
c.對于其他點ak來說,首先需要向前搜索,若點ak能被前面的點ai生成的支撐柱支撐,則將ak歸入ai為中心的待支撐點集中;若沒有搜索到,轉入步驟b。
遍歷點集A中的所有點,提取出所有需要生成添加支撐的點ak以及對應的點bkn,根據這2點生成固定寬度為w的支撐柱。
支撐算法運行之后,得到了良好的支撐效果,如圖3所示。

圖3 生成模型的支撐效果
將相鄰輪廓點之間的距離L處理成與打印過程中每條熔絲的寬度f相等,這樣一來,每個點的位置更接近于實際的熔絲位置,為“尋找支撐部位”的算法部分提供了可靠的前提條件。
從噴頭擠出之后,熔絲會產生一定程度的熱膨脹,因此不能直接使用噴嘴寬度作為實際的熔絲寬度。一般熔融成型都是選定一組特定的工藝參數進行加工,通過試驗的方式測量在不同工藝參數組合下的熔絲寬度。
試驗均以聚乳酸(PLA)為原材料,室溫保持25 ℃,擠出速度作為自變量,在不同溫度下來測量不同擠出速度下的出絲直徑。對擠出絲的寬度進行測量,采用多部位多次測量取平均值的方式。擠出絲寬度的試驗數據,如圖4所示。

圖4 溫度與擠出絲寬度的關系
由圖 4可以看出,隨著溫度升高,擠出絲直徑相應增大,同樣的,擠出速度對直徑也有一定的影響。在接下來的試驗中,選取加熱溫度為200 ℃,擠出速度為30 mm/s,因此選取擠出絲的寬度為0.5 mm,作為同一層相鄰輪廓點之間的最大距離。
支撐結構的本質是對懸空距離過長的熔絲進行支撐。由于熔融狀態下柔軟的熔絲同樣具有一定的剛度,在懸空安全距離Da內不會產生明顯的塌陷,所以不需要對這些熔絲添加支撐。一般實際打印過程中每層的厚度選取范圍為0.1~0.3 mm,本試驗選取3個不同的分層厚度打印同一模型來進行試驗。
在某一層堆積完成之后,熔絲在短時間內會冷卻至固體狀態。多次試驗后發現,熔絲凝固后剛度足以支撐其上方未打印的其他部分,而一般噴頭再次運行到該條熔絲所在位置時,熔絲已經完全凝固。因此不用考慮熔絲承受的總質量會使熔絲產生形變。所以判斷某個輪廓點ta是否為待支撐點,只與該點超出下一層的輪廓線的距離有關。搜索并得到與點ta水平距離最小的下一層的輪廓點tk,求得兩點之間的距離Dta-tk。若Dta-tk大于熔絲的安全懸空距離Da,則該點ta為待支撐點。表1顯示了在不同分層厚度和不同懸空距離下測得的熔絲塌陷情況。

表1 不同伸出長度下熔絲的塌陷情況表 mm
根據試驗結果可知,隨著分層厚度的變小,熔絲的有效懸空長度變小,這是由于噴頭對熔絲的擠壓造成的。在接下來的試驗中,統一選取0.3 mm的分層厚度,作為切片的層間距來獲取模型每層的輪廓,使用1.2 mm作為熔絲的最大有效懸空長度。
保證支撐效果的關鍵是要使支撐柱能夠穩定合理地存在。通過試驗得出,支撐柱可打印的最大長度以及支撐柱的偏移量與水平夾角的關系。偏移量指支撐柱頂點的實際高度和理論高度的差值。支撐柱的寬度均為1.2 mm。從圖5及圖6可以看出,最大可打印的長度值在60°急劇變化,偏移量在50°也有很大的變化。綜合最大長度和偏移量的變化趨勢,得到最大長度與角度的線性關系式,作為支撐柱穩定存在的判斷依據,同時設定支撐柱與水平面的夾角不得小于50°。

圖5 偏移量與支撐柱角度的關系

圖6 支撐柱角度與最大長度之間的關系
將3個不同的模型分別應用本算法和其他2個切片引擎Slic3r,Meshmixer中的支撐算法,分析比較優劣。所有模型都是在實驗室自主開發的3D打印機上完成的,以聚乳酸(PLA)為打印材料,打印速度為30 mm/s,噴頭空行駛速度為60 mm/s,打印層厚為0.3 mm。
Slic3r算法通過層與層之間的布爾運算,計算出懸空區域,生成稀疏的柱狀支撐結構。Meshmixer算法檢測出需要添加支撐的位置,并生成樹狀支撐。由圖7,圖9和圖11可知,本算法生成的結構為線性結構,生成的支撐柱的長度和角度滿足圖 6的關系曲線。Slic3r,Meshmixer算法都檢測到的主要支撐區域,如圖 7中酒杯的下沿,圖 11中熊貓的手臂和雞的喙,本算法都添加了支撐。就結構疏密而言,相比于Slic3r生成的密致結構,本算法生成的支撐顯然更為稀疏,對于材料的消耗更少。圖8,圖10及圖12展示了各個模型的打印效果。在此,主要從算法運行時間,實際打印時間,材料損耗,支撐質量4個方面來比較3個算法的優劣,試驗結果如表2所示。

圖7 不同算法生成的酒杯支撐效果

圖8 不同算法生成的酒杯實際打印效果

圖9 不同算法生成的母雞支撐效果

圖10 不同算法生成的母雞實際打印效果

圖11 不同算法生成的功夫熊貓支撐效果

圖12 不同算法生成的功夫熊貓實際打印效果表2 試驗數據

比較參數本算法Slic3r算法Meshmixer算法酒杯熊貓母雞酒杯熊貓母雞酒杯熊貓母雞算法時間/s5.114.311.63.110.06.52.36.33.5打印時間/h0.862.533.880.982.724.171.183.34.35支撐質量/g0.51.43.21.23.87.30.92.74.6
從表2和表3可以看出,本算法在打印時間和支撐結構的耗材方面明顯優于其他2種算法。但是在算法運行時間方面,對于其他2種軟件算法并無優勢。

表3 本算法與Slic3r,Meshmixer的節省比較
支撐效果可以分為2個部分來進行比較,分別為材料的可剝除性和支撐區域的選擇。就材料的可剝除性來看,較小的接觸面積意味著在剝除時對模型的破壞更小。Slic3r算法生成的支撐結構接觸面積較大,本算法和Meshmixer算法都對接觸部分的支撐結構進行了削尖處理,剝除后模型能夠獲得更高的表面質量。就支撐區域的選擇而言,由于不同算法對于添加支撐的判斷條件不盡相同,其他2種算法都是以角度為閾值作為判斷添加支撐的條件,而本算法是以熔絲懸空的最大長度作為判斷依據,顯然更為合理。從圖7~圖12中可以看出,本算法所判斷的支撐區域大于等于Slic3r,Meshmixer算法判斷的區域。
本文提出了熔融沉積成型制造中的一種新的支撐結構生成算法,在分析了模型的實際打印情況和熔絲特性的基礎上,選取待支撐點,生成支撐柱。從實際的效果看,本算法大大節省了打印時間和打印耗材。較為準確地判斷需要打印的區域,并且獲得較高的模型表面質量。
本算法仍然有一些不足,主要為以下2個方面:其一,無法根據模型的實際情況自適應地變換支撐柱的粗細,以保證更好的打印和剝除效果;其二,相比于成熟的算法,本算法在運行時間上仍然有著一定的差距。
[1] 顏永年, 單忠德. 快速成形與鑄造技術[M]. 北京:機械工業出版社, 2004.
[2] Allen S, Dutta D. Determination and evaluation of support structures in layered manufacturing[J]. Journal of Design & Manufacturing,1995,5: 153-162.
[3] Vanek J, Galicia J A G, Benes B. Clever support: efficient support structure generation for digital fabrication[J].Computer Graphics Forum, 2014,33(5):117-125.
[4] Huang X, Ye C, Mo J, et al.Slice data based support generation algorithm for fused deposition modeling[J].Tsinghua Science & Technology,2009,14(s1):223-228.
[5] Snead D E, Smalley D R, Cohen A L, et al. Boolean layer comparison slice: US 5854748 A[P]. 1998.
[6] Strano G, Hao L, Everson R M, et al. A new approach to the design and optimisation of support structures in additive manufacturing[J]. International Journal of Advanced Manufacturing Technology, 2013, 66(9/10/11/12):1247-1254.
[7] 陳之佳, 王叢軍, 張李超. 基于直線掃描的FDM支撐自動生成算法[J]. 華中科技大學學報(自然科學版), 2004, 32(6):60-62.
[8] Wang W, Wang T Y, Yang Z, et al. Cost-effective printing of 3D objects with skin-frame structures[J]. ACM Transaction on Graphics, 2013, 32(6): 177.
[9] 魏瀟然, 耿國華, 張雨禾. 熔絲沉積制造中穩固低耗支撐結構生成[J]. 自動化學報, 2016, 42(1):98-106.
[10] 陳巖, 王士瑋, 楊周旺,等. FDM三維打印的支撐結構的設計算法[J]. 中國科學:信息科學, 2015, 45(2):259-269.