本發(fā)明涉及一種基于模型面積變化率的自適應(yīng)分層處理方法,屬于計算機集成制造技術(shù)領(lǐng)域。
背景技術(shù):
3D打印技術(shù),是一種快速成型制造技術(shù),又叫增材制造技術(shù)(Additive Manufacturing),主要是利用塑料絲、金屬粉末、光敏樹脂、細胞等為原材料,通過計算機或者掃描儀獲取三維數(shù)據(jù),將數(shù)據(jù)通過串口或者無線等方式傳給3D打印機,3D打印機經(jīng)過高溫融化、激光照射、化學(xué)劑凝固等方式對原材料進行分層加工、層層疊加的方式制造出實體模型。3D打印機又被稱為萬能制造機,《經(jīng)濟學(xué)人》雜志2012年將3D打印技術(shù)稱為“第三次工業(yè)革命的重要標(biāo)志”。目前3D打印技術(shù)已被應(yīng)用到航空航天、建筑、工業(yè)設(shè)計、教育、醫(yī)療、服裝、汽車等各個領(lǐng)域。
3D打印存在多種原理技術(shù),其中熔融沉積成形技術(shù)由于其簡單方便及相對較低的成本,使得基于熔融沉積成形技術(shù)的3D打印機使用最廣。熔融沉積型(Fused Deposition Modeling)三維打印技術(shù)是3D打印技術(shù)的一種,主要使用ABS、PLA等材料,基本原理,如圖1所示,是加熱噴頭在計算機的控制下,將熱塑性聚合物材料加熱熔化,使其在熔融狀態(tài)下從噴嘴擠出,靠高溫擠出絲材的自粘結(jié)性逐層堆積成形。其打印過程包括以下步驟,如圖2所示,首先使用建模、掃描等方式獲取模型,將模型導(dǎo)入切片軟件;根據(jù)模型形狀,設(shè)置相應(yīng)支撐、填充、打印層高等參數(shù),對模型進行切片;切片后得到3D打印機可以讀取的gcode文件進行打?。坏玫酱蛴嵨锬P?,對其進行去支撐、底座,有的需要拋光處理等后期處理而得到最終需要的實體模型。其中切片處理環(huán)節(jié)直接決定了模型的成型時間、所需耗材、成型效果,是打印過程中尤為重要的環(huán)節(jié)。
切片過程即模型切片路徑生成的過程,如圖3所示。目前市場上有多個3D打印切片軟件,其中Cura、Sli3r、Makeware等運用較多,這些軟件的核心技術(shù)都在切片處理模塊,即切片引擎。而目前這些切片軟件都是對模型進行同一層厚的均勻切片,這使得在打印過程中產(chǎn)生了成型速度和成型精度的矛盾,當(dāng)對模型細節(jié)較高,需要打印高精度時,需減小模型層厚的設(shè)置,使得打印的層數(shù)增加,導(dǎo)致模型成型耗時增加;當(dāng)需要快速獲得實體模型時,不得不減少模型的成型時間,減少成型時間即要增大層厚的設(shè)置,使得模型成型后表面粗糙,精度無法保證。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的不足,本發(fā)明目的是提供一種基于模型面積變化率的自適應(yīng)分層處理方法,在保證了模型細節(jié)特征的同時,又提高了模型的成型速度,有效的提高了打印所需時間,還極大的節(jié)省了打印材料。
為了實現(xiàn)上述目的,本發(fā)明是通過如下的技術(shù)方案來實現(xiàn):
本發(fā)明的一種基于模型面積變化率的自適應(yīng)分層處理方法,包括以下幾個步驟:
步驟A1:導(dǎo)入STL模型,根據(jù)所述STL模型中三角面片的頂點和面片法矢量信息建立STL模型的拓撲結(jié)構(gòu);
步驟A2:以打印機能打印的最高精度對所述STL模型進行均勻分層切片,獲得封閉的二維多邊形輪廓層,并求出切片后每層多邊形的面積;
步驟A3:獲取每層多邊形的面積,并對每層多邊形的面積進行求導(dǎo)得出所述STL模型的面積變化率diff_area;
步驟A4:根據(jù)打印機能打印的精度值(一般打印機能打印的精度是高中低三個精度,所以設(shè)置2個閾值,高>Threshold[2]>中>Threshold[1]>低)設(shè)定相應(yīng)面積變化率的閾值為Threshold[i],將步驟A3中求得的面積變化率diff_area的絕對值與閾值Threshold[i]進行比較,得出所述STL模型沿打印方向的打印精度分布情況;
步驟A5:計算所述STL模型打印所需的分層層厚數(shù)據(jù),并使用四舍五入法進行處理,生成自適應(yīng)分層層厚數(shù)據(jù);
步驟A6:切片引擎讀入步驟A5得到的自適應(yīng)分層層厚數(shù)據(jù),對所述STL模型進行自適應(yīng)層厚切片,從而得到打印所需的gcode文件。
步驟A2中,切片后每層多邊形面積的計算方法如下:
步驟A21:以最高精度對所述STL模型進行均勻分層切片,獲得封閉的二維多邊形輪廓層,設(shè)三角網(wǎng)格曲面為M=(vi,vj,…vn),M中的任意頂點為vi=(xi,yi,zi),獲取所述STL模型的成型方向的最大高度為Height,所述STL模型打印的最高精度為PrecisionMax,則所述STL模型需分成的層數(shù)LayerCount=Height/PrecisionMax,設(shè)LayerZ表示當(dāng)前切面的距離打印平臺的高度;對所述STL模型進行均勻切片,讓Z=LayerZ平面與各三角面片求交;求得各切面與三角面片的交點后,對每一層構(gòu)建多邊形,得到二維多邊形輪廓層;
步驟A22:根據(jù)得到的二維多邊形輪廓層,對每一層多邊形進行面積計算,求得的面積數(shù)組為area_layers。
步驟A3中,所述面積變化率的計算方法如下:
在matlab中,設(shè)各層面積數(shù)組area_layers為一組輸入信號,為了表示所述STL模型在成型方向上形狀的變化,對輸入信號進行求導(dǎo)運算,即可得到面積變化率diff_area。
步驟A4中,所述STL模型沿打印方向的打印精度分布情況具體通過如下比較規(guī)則得到:
①當(dāng)diff_area=0時,表示所述STL模型在該對應(yīng)高度處面積并未發(fā)生改變,則表示此部分模型形狀穩(wěn)定,未發(fā)生變化,此時采用低精度(打印機的打印精度在軟件進行切片設(shè)置時一般都是有三種精度:高精度、中精度、低精度)進行打??;
②當(dāng)|diff_area|<=Threshold時,表示所述STL模型在此處面積發(fā)生了變化,但是面積變化的程度不是非常巨大,此時采用中精度進行打??;
③當(dāng)|diff_area|>Threshold時,表示所述STL模型在此處面積發(fā)生了變化,且面積變化的程度巨大,此時采用高精度進行打印。
步驟A5中,所述自適應(yīng)分層層厚數(shù)據(jù)的生成方法如下:
步驟A51:設(shè)thickness_diff_area[i]為高精度分層下第i層打印所需的層厚,segment_layer_count為第segmentN分割部分的切片層數(shù),current_layer_count表示已經(jīng)遍歷過的前segmentN-1個部分的總層數(shù);
步驟A52:讓thickness_diff_area[i]與thickness_diff_area[i-1]進行比較,如果相等,則表示當(dāng)前層與上一層使用同一層厚進行切片,判斷i是否為最后一層,若是,則轉(zhuǎn)向步驟A55,執(zhí)行步驟A55后結(jié)束循環(huán);若不是,則轉(zhuǎn)向步驟A53;如果不相等,則表示當(dāng)前層與上一層使用不同層厚進行切片,轉(zhuǎn)步驟A54;
步驟A53:繼續(xù)讀取thickness_diff_area[i+1],此時i=i+1,轉(zhuǎn)向步驟A52;
步驟A54:第segmentN分割部分以精度PrecisionMax切片的總層數(shù)segmentN_heigh應(yīng)為當(dāng)前層數(shù)減去前segmentN-1個部分的總層數(shù),即segmentN_heigh=i-current_layer_count,則第segmentN分割部分的切片層數(shù)
segment_layer_count=(segmentN_heigh*PrecisionMax)/thickness_diff_area[i-1],其中,PrecisionMax表示精度為PrecisionMax,
segmentN_heigh表示以精度PrecisionMax切片的總層數(shù),轉(zhuǎn)步驟A55;
步驟A55:當(dāng)前第segmentN分割部分并不能正好被設(shè)置的層厚值剛好平分,所以在求第segmentN分割部分的切片層數(shù)
segment_layer_count時可能會有余數(shù)remainder存在,求得:
remainder=(segmentN_heigh*PrecisionMax)-thickness_diff_area[i-1]*segment_layer_count;
測試時使用了三種精度作為自適應(yīng)切片的分層參考,設(shè)三種精度為H>M>L,對余數(shù)進行處理有如下規(guī)則:
①如果remainder>(H-M)/2,則對第segmentN分割部分添加一層H精度的層;
②如果remainder>(M-L)/2,則對第segmentN分割部分添加一層L精度的層;
③如果remainder>L/2,說明余數(shù)很小,可直接舍棄;
令segmentN=segmentN+1,接著遍歷下一層,并轉(zhuǎn)步驟A52;
步驟A56:設(shè)thickness_distribute為自適應(yīng)分層層厚數(shù)據(jù),根據(jù)步驟A54和步驟A55得到各分割部分的自適應(yīng)分層層數(shù)及精度,將其存入數(shù)組thickness_distribute,并將其寫入到test.txt中。
讀入test.txt,將其作為所述STL模型切片時的層厚數(shù)據(jù),執(zhí)行切片引擎進行切片,得到自適應(yīng)切片生成的gcode文件,該gcode文件可導(dǎo)入3D打印機中進行打印。
本發(fā)明通過對模型在成型方向上面積的變化來反應(yīng)模型的形狀的變化,根據(jù)面積變化率的大小來確定模型在該處需要打印的層厚值,有效的解決了3D打印時模型成型精度與速度的問題,即精度高則速度慢,而速度快則精度低的問題,本發(fā)明設(shè)計的方法在保證了模型細節(jié)特征的同時,又提高了模型的成型速度,有效的提高了打印所需時間,還極大的節(jié)省了打印材料。
附圖說明
圖1是FDM技術(shù)的打印原理(圖中,1-1表示熱熔材料,1-2表示噴頭,1-3表示可移動平臺);
圖2是FDM技術(shù)的打印過程;
圖3是切片路徑生成的過程;
圖4是本實施例中的模型;
圖5是本實施例的面積曲線;
圖6是本實施例的面積變化率曲線;
圖7是本實施例的打印精度分布情況;
圖8是模型分層層厚的數(shù)據(jù)結(jié)構(gòu);
圖9是邊界余數(shù)處理方法圖;
圖10是本實施例的自適應(yīng)分層后得到的gcode文件。
具體實施方式
為使本發(fā)明實現(xiàn)的技術(shù)手段、創(chuàng)作特征、達成目的與功效易于明白了解,下面結(jié)合具體實施方式,進一步闡述本發(fā)明。
參見圖4,實施步驟如下:A1:通過建模、掃描等方式獲取一個stl格式的三維模型,獲取模型的三角面片的頂點和面片法矢量信息,建立其拓撲結(jié)構(gòu)。
A2:以最高精度對模型進行無填充、無支撐、無偏置的均勻分層切片,獲得封閉二維多邊形輪廓層,并求出切片后每層多邊形的面積,如圖5所示為本實施例模型的面積曲線。
A3:獲取每層多邊形的面積,并對其求導(dǎo)得出模型的面積變化率,如圖6所示為本實施例模型的面積變化率曲線。
A4:根據(jù)模型的面積變化率與打印精度的關(guān)系,設(shè)定面積變化率的閾值,將面積變化率與閾值進行比較,得出模型沿打印方向的打印精度分布情況,如圖7所示。
A5:計算得出模型打印所需的分層層厚數(shù)據(jù),其數(shù)據(jù)結(jié)構(gòu)如圖8所示,具體執(zhí)行過程如下:
A51:設(shè)thickness_diff_area[i]為高精度分層下第i層打印所需的層厚,segment_layer_count為第segmentN分割部分的切片層數(shù),current_layer_count表示已經(jīng)遍歷過的前segmentN-1個部分的總層數(shù)。
A52:讓thickness_diff_area[i]與thickness_diff_area[i-1]進行比較,如果相等,則表示當(dāng)前層與上一層使用同一層厚進行切片,判斷i是否為最后一層,若是,則轉(zhuǎn)步驟A55,執(zhí)行步驟A55后結(jié)束循環(huán);若不是,則轉(zhuǎn)步驟步驟A53。如果不相等,則表示當(dāng)前層與上一層使用不同層厚進行切片,轉(zhuǎn)步驟A54。
A53:繼續(xù)讀取thickness_diff_area[i+1],轉(zhuǎn)步驟A52。
A54:第segmentN分割部分以高精度PrecisionMax切片的總層數(shù)segmentN_heigh應(yīng)為當(dāng)前層數(shù)減去前segmentN-1個部分的總層數(shù),即segmentN_heigh=i-current_layer_count,則第segmentN分割部分的切片層數(shù)segment_layer_count=(segmentN_heigh*PrecisionMax)/thickness_diff_area[i-1],轉(zhuǎn)步驟A55;
A55:使用四舍五入的方法對精度分界處進行處理,如圖9所示,處理規(guī)則如下:
本方法測試時使用了三種精度作為自適應(yīng)切片的分層參考,設(shè)三種精度為H>M>L,對余數(shù)進行處理有如下規(guī)則:
①如果remainder>(H-M)/2,則對第segmentN分割部分添加一層H精度的層;
②如果remainder>(M-L)/2,則對第segmentN分割部分添加一層L精度的層;
③如果remainder>L/2,說明余數(shù)很小,可直接舍棄。
A56:生成自適應(yīng)分層層厚數(shù)據(jù):根據(jù)步驟A54和步驟A55得到各分割部分的自適應(yīng)分層層數(shù)及精度,將其存入數(shù)組thickness_distribute,并將其寫入到test.txt中。
A6:切片引擎讀入分層層厚數(shù)據(jù),對模型進行自適應(yīng)層厚切片,得到打印所需的gcode文件,如圖10所示本實施例的自適應(yīng)分層后得到的gcode文件,該文件可導(dǎo)入3D打印機中進行打印。
以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進,這些變化和改進都落入要求保護的本發(fā)明范圍內(nèi)。本發(fā)明要求保護范圍由所附的權(quán)利要求書及其等效物界定。