陳 英,林云森
(南昌航空大學(xué) 軟件學(xué)院,南昌 330063)
隨著社會的發(fā)展和科學(xué)技術(shù)的進步,人們對于信息化、智能化和高效化的要求越來越高,這促使3D打印快速成型技術(shù)得以迅速發(fā)展。3D打印技術(shù)作為一種新型的快速成型方法已不是什么新鮮的話題[1],如LCD、FDM、SLA、SLM技術(shù),這幾種3D打印技術(shù)它們都有各自的優(yōu)勢。但是不管是哪種3D打印技術(shù),都不可避免要面對模型添加支撐打印和后處理中支撐的去除的問題。有過3D打印經(jīng)驗的都知道,在模型打印中,模型支撐的添加和設(shè)置對模型打印成功率和模型成型效果的影響非常大。同時對打印完成后模型支撐的后處理也非常重要。因此,模型支撐問題可以說是3D打印技術(shù)中急需解決的一個難點問題[2]。
在LCD光固化3D打印技術(shù)中,3D打印機是根據(jù)切片圖形,一層一層的打印模型,打印過程中,由于成型耗材受重力影響,每成型一層就必須在上一層成型面的基礎(chǔ)上給予支撐[3]。對于結(jié)構(gòu)復(fù)雜的零部件模型,其在成型過程中,片層截面輪廓變化明顯,如果上一層成型面不能為下一層成型面提供支撐定位,會嚴重影響模型的成型質(zhì)量甚至無法成型,因此,對于中空的部位,需要添加支撐來保證模型打印成功。
但是又因為目前3D打印材料較為昂貴,同時模型打印完成后清除支撐會大大影響模型表面光潔度等麻煩的問題,所以,不會給模型的所有中空位置都添加支撐,而是給一些關(guān)鍵或者特別突出的中空位置添加一些支撐。但如果增加支撐體積,又會增加支撐和模型的接觸面積進而影響模型表面光潔度增加清除支撐的難度。
因此,為解決現(xiàn)有技術(shù)中,支撐數(shù)量過多會增加打印成本,影響成型效果,過少又不能起到較好的支撐作用的問題,本文以LCD光固化3D打印技術(shù)為例,在支撐之間設(shè)計自動添加連接桿的算法,可有效提高支撐穩(wěn)定性從而提高模型成功率和成型效果[4],又無需增加支撐數(shù)量和體積的,還能減少耗材,降低成本,使3D打印效果達到最優(yōu)化。
本文自動添加連接桿算法主要分為支撐生成模塊和連接桿生成模塊。支撐生成模塊包括從3D模型文件導(dǎo)入,待支撐區(qū)域提取,支撐生成。連接桿生成模塊主要步驟包括,連接桿參數(shù)設(shè)置、連接桿計算、連接桿生成和切片文件生成。算法總體流程圖如圖1所示。
圖1 算法步驟流程圖
對待加支撐區(qū)域,通過手動添加支撐,然后遍歷支撐 生成模塊生成的當(dāng)前所有支撐,將與當(dāng)前最新支撐的距離在預(yù)設(shè)間距范圍內(nèi)的支撐作為目標(biāo)支撐[5]。根據(jù)預(yù)設(shè)角度(圖2中θ)和當(dāng)前最新支撐與目標(biāo)支撐的距離(圖2中Cd),計算得到連接桿高度,所述連接桿高度為垂直方向的連接杠高度(圖2中Hd),以及,根據(jù)所述連接桿高度和支撐總高度,計算得到預(yù)備添加連接桿的數(shù)量。其中所述支撐總高度為所述當(dāng)前最新支撐和目標(biāo)支撐兩者頂點中的較低點減去預(yù)設(shè)的第一預(yù)留高度后,與兩者底點中的較高點加上預(yù)設(shè)的第二預(yù)留高度后,之間的高度差(圖2中H)。圖2顯示了模型1,在支撐31與支撐32之間連接桿生成的結(jié)構(gòu)的過程。連接桿支撐算法設(shè)計步驟如下:
步驟一:遍歷當(dāng)前所有支撐,將與當(dāng)前最新支撐的距離在預(yù)設(shè)間距范圍內(nèi)的支撐,作為目標(biāo)支撐。
具體的,如圖2所示,在導(dǎo)入3D模型文件后,首先模型1待加支撐區(qū)域上生成第一根支撐31,可手動設(shè)置支撐31的添加位置和大小等參數(shù),也可以通過軟件系統(tǒng)內(nèi)置的參數(shù)生成第一根支撐31。其中,支撐參數(shù)包括但不限于,支撐位置信息,支撐直徑、支撐高度等。
圖2 連接桿生成結(jié)構(gòu)圖
生成第一根支撐31之后,開始執(zhí)行步驟一,如果沒有其他支撐即只有一根支撐時,不遍歷當(dāng)前支撐,即不執(zhí)行步驟一。
按照生成第一根支撐31的方法繼續(xù)添加第二根支撐32,在生成第二根支撐32后,又開始執(zhí)行步驟一,判斷當(dāng)前最新支撐(即第2根支撐)32與第一根支撐31的距離Cd是否在預(yù)設(shè)的間距范圍內(nèi),如果在預(yù)設(shè)的間距范圍內(nèi),就將第一根支撐31作為目標(biāo)支撐,并進入步驟二;否則,繼續(xù)添加下一根支撐。在算法中另一實施例中,當(dāng)有兩根以上支撐時,在步驟一中,遍歷除自身(即當(dāng)前最新支撐)外的其他所有支撐。當(dāng)有3根或更多根支撐時,可將與當(dāng)前最新支撐的距離在間距范圍內(nèi),且距離最短的支撐作為目標(biāo)支撐。
步驟二:根據(jù)預(yù)設(shè)角度和所述當(dāng)前最新支撐與目標(biāo)支撐之間的距離,計算得到連接桿高度。
具體的,在算法計算中,連接桿高度為連接桿在垂直方向的投影高度。根據(jù)正切三角函數(shù)的公式,連接桿高度Hd=Cd/tan(θ)。其中,Cd為當(dāng)前最新支撐與目標(biāo)支之間的距離。在本算法中,所述預(yù)設(shè)角度為連接桿和支撐之間的夾角的角度θ,可預(yù)置在系統(tǒng)內(nèi)的默認參考角度,或者用戶可根據(jù)實際情況設(shè)置具體數(shù)值,但需要在步驟一之前預(yù)設(shè)完成,在本步驟二計算得到連接桿高度后,進入步驟三。
步驟三:根據(jù)所述連接桿高度和總高度,計算得到預(yù)備添加數(shù)量。
具體的,在本實施例中,如圖2所示,所述總高度H為當(dāng)前最新支撐32和目標(biāo)支撐31兩者頂點中的較低點減去預(yù)設(shè)的第一預(yù)留高度h1后,與兩者底點中的較高點加上預(yù)設(shè)的第二預(yù)留高度h2后,兩者之間的高度差。其中,兩者頂點中的較低點為當(dāng)前最新支撐32和目標(biāo)支撐31兩者頂面圓心(頂點)中的高度較低的點Lm3。另外,由于當(dāng)前最新支撐32和目標(biāo)支撐31兩者的底面處于不同的水平面,所以,兩者底點中的較高點Ln3為當(dāng)前最新支撐32的底面圓心,點Ln3加上第二預(yù)留高度h2后得到結(jié)束點Fin。預(yù)備添加數(shù)量等于點Lm3的高度減去第一預(yù)留高度h1,與結(jié)束點Fin之間的高度差(即總高度H),再除以步驟二得出的連接桿高度Hd,所得的商數(shù),忽略余數(shù)。其中,高度差是指垂直方向的高度差,至此得到預(yù)備添加的連接桿數(shù)量。
在本算法中另一情況[6],當(dāng)新增支撐與目標(biāo)支撐兩者處于相同水平面時,如圖3所示,則兩個的底部就不需預(yù)留高度h2,此時總高度H為當(dāng)前最新支撐32和目標(biāo)支撐31兩者頂點中的較低點減去預(yù)設(shè)的第一預(yù)留高度H1后,兩者之間的高度差。將總高度H再除以步驟二連接桿高度,所得的商數(shù),忽略余數(shù)。其中,高度差是指垂直方向的高度差,至此得到預(yù)備添加的連接桿數(shù)量。
圖3 同一平面連接桿生成結(jié)構(gòu)圖
步驟四:從目標(biāo)支撐的當(dāng)前頂點起始點開始,按照所述預(yù)設(shè)角度和預(yù)設(shè)連接桿直徑,生成最新支撐和目標(biāo)支撐的第一根連接桿。
具體的,所述預(yù)設(shè)直徑為連接桿直徑,可預(yù)置在系統(tǒng)內(nèi),通常,連接桿直徑要小于支撐的直徑,或者用戶可根據(jù)實際情況設(shè)置具體數(shù)值,必需要步驟一之前完成設(shè)置。
步驟五,以前一連接桿的終點為起點,按照所述預(yù)設(shè)角度和預(yù)設(shè)連接桿直徑,生成連接所述當(dāng)前最新支撐和目標(biāo)支撐的第二根及以上的連接桿,直至連接桿數(shù)量達到步驟三計算得到的預(yù)備添加連接桿數(shù)量。
具體的,如圖2生成第一根連接桿41后,即可從第一根連接桿41的終點En開始生成第二根連接桿42,直徑、角度和、高度和形狀都和第一根連接桿41相同。依此類推,第三根連接桿及后續(xù)連接桿都是在前一根連接桿終點開始生成,直到連接桿數(shù)量達到步驟三計算得到的預(yù)備添加連接桿數(shù)量。
至此,系統(tǒng)已經(jīng)完成了第一根支撐31和第二根支撐32之間連接桿的添加。然后,繼續(xù)添加第三根支撐時,又回到步驟一,繼續(xù)尋找與第三根支撐的距離在預(yù)設(shè)間距范圍內(nèi)的目標(biāo)支撐。依此類推,直到所需支撐和連接桿添加完畢。如圖4添加支撐的效果圖。
圖4 模型添加支撐效果圖
本文算法的目的是為3D模型支撐之間建立穩(wěn)定且節(jié)省耗材的連接桿支撐結(jié)構(gòu),是為3D模型的順利打印建立良好的前提。
文中的算法主要包含3個參數(shù),連接桿與垂直支撐夾角θ預(yù)設(shè)為π/4,上頂點的預(yù)設(shè)高度h1設(shè)為0.8mm,底部預(yù)設(shè)高度h2設(shè)為0.5mm。
實驗測試集選用8個3D模型數(shù)據(jù),模型主要來源于 3D模型打印啦網(wǎng)站。
實驗采用NOVA3D BENE3-L3121打印機,打印參數(shù)設(shè)置為層厚0.05mm,底部層數(shù)3層,底部曝光時間60s,普通曝光時間8s,每層曝光電機抬升高度4mm,電機上下速度100mm/min,靜止等待時間為2s。打印材料為普通剛性光敏樹脂。
為了檢驗支撐之間的連接桿對3D模型打印成型效果和模型消耗耗材效果。選取了8組不同的模型作為實驗對象,這8個模型復(fù)雜度和需加支撐數(shù)逐一遞增,然后分別采用支撐之間加連接桿與支撐之間未加連接桿進行打印,打印對比如圖5所示,分析圖5可知沒有采用連接桿打印,模型越復(fù)雜,加的支撐越多,打印出來模型的表面誤差越大,一方面由于過多支撐與模型接觸導(dǎo)致后處理中修剪支撐時,修剪后模型有微變形從而導(dǎo)致表面誤差變大,另一方面與支撐在打印過程中不能穩(wěn)定支撐住模型,如圖6(a)、圖6(b)在動漫模型手臂A處必須添加支撐,來保證模型成功打印,當(dāng)未采用添加連接桿方式的支撐打印,支撐穩(wěn)固性差,支撐不住手臂的懸空重量,導(dǎo)致手臂處打印變形,也導(dǎo)致表面誤差增大。而采用支撐之間添加連接桿方式,無論是打印結(jié)構(gòu)比較簡單的3D模型,還是結(jié)構(gòu)相對復(fù)雜的3D模型,得到的表面誤差都較小,誤差值沒有超過0.01,可以說明使用連接桿方式打印,實體3D模型表面光滑,誤差很小,這與連接桿使模型的支撐更加穩(wěn)固,同時也大大減少支撐與模型接觸面[7]。
圖5 兩種方式打印模型表面誤差對比
圖6 模型打印實物圖
對比添加連接桿模型和未添加連接桿模型兩種方式打印獲得實物,模型打印耗材使用情況對比如圖7所示,從圖7中可以清楚地看出,未添加連接桿模型打印,由于模型復(fù)雜度影響,需要添加支撐會越多,增加了耗材[8]。而添加連接桿的模型可使得支撐減少,減少耗材使用,由此可以見支撐之間添加連接桿,其耗材明顯較少。
圖7 添加連接桿和未添加連接桿模型打印耗材對比
實驗結(jié)果顯示無論是打印結(jié)構(gòu)比較簡單的3d模型,還是結(jié)構(gòu)相對復(fù)雜的3D模型,模型在支撐之間添加連接桿條件下,有效提高支撐穩(wěn)定性使其穩(wěn)定打印保證其成型效果和模型表面光潔度,并且能有效減少打印耗材。
本文針對3D打印中由于添加支撐數(shù)量過多導(dǎo)致支撐與模型接觸面增多導(dǎo)致模型表面成型效果差,增加打印支撐材料成本,后期清除支撐麻煩,過少又使支撐不穩(wěn)固導(dǎo)致打印失敗的問題,提出了一種支撐之間添加自動連接桿算法,目標(biāo)支撐與最新支撐之間生成連接桿,繼續(xù)添加的支撐也與目標(biāo)支撐之間生成連接杠。實驗結(jié)果表明,針對多個代表性的模型,該算法均能有效提高支撐穩(wěn)定性使其穩(wěn)定打印保證其成型效果和模型表面光潔度,并且能有效減少打印耗材。
文中算法主要針對人造模型,該類模型通常加支撐都為垂直于底面的筆直支撐,若模型過于特殊,需要有幅度的支撐時,則支撐與目標(biāo)支撐不能形成穩(wěn)定的三角結(jié)構(gòu),可能導(dǎo)致打印失敗,此時需要設(shè)計能根據(jù)幅度生成有對應(yīng)幅度的連接桿。這也是后續(xù)重點的研究方向。