Pango的支撐算法我會在以后專文介紹。順帶一說,CuraEngine在下半年做了很大的改動,其中之一就是拋棄了之前的支撐算法,而新的算法也和我上面所講的思想異曲同工。我要聲明的是Pango的支撐算法和CuraEngine誰也沒有抄誰,我的算法是自己拍腦袋想出來的。算是英雄所見略同吧。
支撐范圍確定之后,也和組件一樣,可以有外墻、內(nèi)墻、填充、表面。依樣畫葫蘆即可。CuraEngine對于支撐,只會生成外墻和填充,Pango更多。
地圈好了,就該在里面種菜了。這一步路徑生成就要開始規(guī)劃噴頭在不同的組件中怎么運(yùn)動。路徑按大類來分,有輪廓和填充兩種。
輪廓很簡單,沿著2D圖形的邊線走一圈即可。前一步所生成的外墻、內(nèi)墻都屬于輪廓,可以直接把它們的圖形以設(shè)置里的線寬轉(zhuǎn)換為輪廓路徑。
填充稍微要復(fù)雜一些,2D圖形指定的只是填充的邊界,而生成的路徑則是在邊界的范圍內(nèi)的條紋或網(wǎng)格結(jié)構(gòu),就像窗簾或者漁網(wǎng),如左圖。這兩種就最基本的結(jié)構(gòu),當(dāng)然也許你還可以想出其它花式的填充,比如蜂窩狀或者S型,這些在新的Cura或者別的什么切片軟件里可能會實現(xiàn),但我打印下來還是這兩種基本結(jié)構(gòu)更讓人放心。
CuraEngine在專家設(shè)置里可以對填充類型進(jìn)行選擇,里面除了條紋和網(wǎng)格外還有一個自動選項,默認(rèn)就是自動。自動模式會根據(jù)當(dāng)前的填充率進(jìn)行切換,當(dāng)填充率小于20%就用條紋填充,否則使用網(wǎng)格填充。因為網(wǎng)格結(jié)構(gòu)雖然更為合理,但它有一個問題,就是交點(diǎn)的地方會打兩次。填充率越高,交點(diǎn)越密,對打印質(zhì)量的影響會越大。我們知道,表面就是100%的填充,如果表面用網(wǎng)格打,不但無法打密實,表面還會坑坑洼洼,所以100%填充只能用條紋打,這就是CuraEngine推薦自動模式的原因。
至于填充率,就反映在線與線的間距上。100%填充率間距為0;0%填充率間距無限大,一根線條也不會有。
每個組件獨(dú)立的路徑生成好了,還要確定打印的先后順序。順序先好了可以少走彎路,打印速度和質(zhì)量都會有提升。路徑的順序以先近后遠(yuǎn)為基本原則:每打印完一條路徑,當(dāng)前位置是上一條路徑的終點(diǎn);在當(dāng)前層里剩下還沒打印的路徑中挑選一條起點(diǎn)離當(dāng)前位置最近的一條路徑開打。路徑的起點(diǎn)可以是路徑中的任意一個點(diǎn),程序會自行判斷。而路徑的終點(diǎn)有兩種可能:對于直線,圖形只有兩個點(diǎn),終點(diǎn)就是除起點(diǎn)之外的那個點(diǎn);對于輪廓,終點(diǎn)就是起點(diǎn),因為輪廓是一個封閉圖形,從它的起點(diǎn)開始沿任意方向走一圈,最后還會回到起點(diǎn)。CuraEngine對路徑選擇做了一個估值,除了考慮到先近后遠(yuǎn)外,還順便參考了下一個點(diǎn)相對于當(dāng)前點(diǎn)的方向,它的物理意義就是減少噴頭轉(zhuǎn)彎。賽車在直道上開得一定比彎道快,不是么。
路徑的順序也確定了,還有一個問題需要考慮:如果前后兩條路徑首尾相連,那直接走就是了,但大多數(shù)情況并非如此,前一條路徑的終點(diǎn)往往和后一條路徑起點(diǎn)之間有一段距離。這時候去往下一點(diǎn)的路上要小心了,肯定不能繼續(xù)擠出材料,否則輕則拉絲,重則模型面目全非。這段路噴頭就需要空走,即噴頭只移動,不吐絲,那只要把擠出機(jī)停下來不轉(zhuǎn)就行了嗎?也不行,因為前面分析過,擠出機(jī)的速度要傳導(dǎo)到噴嘴,有一個延遲,不是你說停它就立即停下來的。這是FDM打印的通病,解決辦法就是回抽。所謂回抽,就是在空走之前先讓擠出機(jī)高速反轉(zhuǎn)一段材料,這樣就可以瞬間把加熱腔里的材料抽光,再移動過去,中間就不會擠出材料,到了下一個點(diǎn),在打印之前,先把剛才抽回去的絲再按一樣的長度放回來,繼續(xù)打印?;爻榭梢院芎玫亟鉀Q空走拉絲的問題,但是它很慢,以抽一次0.5秒來算的話,如果打印一個表面,0.4線寬,10厘米的距離至少回抽25下,10幾秒鐘的時間一層,幾百上千層打下來,光回抽所用的時間就是幾個小時,是可忍孰不可忍!
CuraEngine給我們提供了解決方案就是Comb,也就是繞路。我們先來看,是不是所有的回抽都是必需的呢?不回抽會拉絲是肯定的,但如果需要空走的路徑本來就要打印的,那拉絲又有何妨。按這個思路,就可以給每個組件設(shè)定一個邊界,只要路徑的起點(diǎn)和終點(diǎn)都在這個邊界之內(nèi)的,空走都不回抽。這樣可以解決80%的問題,但如果是左圖這樣的情況就行不通。
紅色是起點(diǎn),綠色是終點(diǎn),直接走過去會走出邊界的范圍。這時我們就要繞一點(diǎn)路,走一條曲線到達(dá)我們的目的地。這就是Comb所做的事情,在Cura專家設(shè)置里面可以對Comb進(jìn)行設(shè)置,選擇開啟、關(guān)閉還有表面不Comb。Comb可以大幅節(jié)省打印時間,但是同一個地方打印多次對模型質(zhì)量還是會有細(xì)微的影響,個中利弊,交給用戶自己判斷。
Comb的調(diào)整是個細(xì)致活,Pango花了相當(dāng)多的時間來微調(diào)Comb功能以求達(dá)到更好的效果,過程繁瑣,不再贅述。
至此路徑生成完成,更詳細(xì)的過程另文分析,敬請期待。
步驟五:gcode生成
路徑都生成好了,還需要翻譯對打印機(jī)可以實別的gcode代碼才行。這一步花樣不多,按部就班即可。
先讓打印機(jī)做一些準(zhǔn)備工作:歸零、加熱噴頭和平臺、抬高噴頭、擠一小段絲、風(fēng)扇設(shè)置。
從下到上一層一層打印,每層打印之前先用G0抬高Z坐標(biāo)到相應(yīng)位置。
按照路徑,每個點(diǎn)生成一條gcode。其中空走G0;邊擠邊走用G1,Cura的設(shè)置里有絲材的直徑、線寬,可以算出走這些距離需要擠出多少材料;G0和G1的速度也都在設(shè)置里可以調(diào)整。
若需回抽,用G1生成一條E軸倒退的代碼。在下一條G1執(zhí)行之前,再用G1生成一條相應(yīng)的E軸前進(jìn)的代碼。
所有層都打完后讓打印機(jī)做一些收尾工作:關(guān)閉加熱、XY歸零、電機(jī)釋放。
生成gcode的過程中,CuraEngine也會模擬一遍打印過程,用來計算出打印所需要的時間和材料長度,這些也會寫在gcode的注釋里供用戶參考。
gcode生成不用另文詳細(xì)分析,但是gcode的說明還是可以專文分析一下,敬請期待。
待續(xù)
寫了這么多,Cura的切片流程也只能講個大概,也算是個提綱,希望對大家有所幫助。我計劃對于上面的第一個步驟再專文分析。除此之外,還有Cura界面部分以及Cura與CuraEngine的通訊也可以講講。之后就是我半年創(chuàng)作,自我感覺良好到覺得可以超越Cura的Pango,也是不說不快的。
全部評論1
你可能喜歡
拓竹Bambu Lab A1 mini測評:這臺3D打印機(jī)
變廢為寶:通過固相制造將鋁廢料轉(zhuǎn)化為3D打
新突破:基于聲波的3D打印技術(shù)——全息直聲
一篇帶你讀懂:金屬3D打印在航空航天領(lǐng)域的
推薦課程
神奇的3D打印
SLA3D打印工藝全套培訓(xùn)課程 - 軟件篇
3D打印月球燈視頻教程 包括完整貼圖建模流
【原創(chuàng)發(fā)布】Cura軟件修改二次開發(fā)定制視頻