周惠群,吳建軍
ZHOU Hui-qun, WU Jian-jun
(西北工業(yè)大學(xué) 現(xiàn)在設(shè)計(jì)與集成制造技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,西安 710072)
快速成型是一種基于離散累加的先進(jìn)制造技術(shù),近年來得到了非常迅猛的發(fā)展。其基本過程是首先對(duì)零件的CAD模型進(jìn)行分層處理,得到零件的二維截面數(shù)據(jù),然后根據(jù)每一層的截面數(shù)據(jù),以特定的方法生成與該層截面形狀一致的薄片,這一過程反復(fù)進(jìn)行,逐層累加,直至生長(zhǎng)出零件的實(shí)體模型。也就是說,在快速成型的加工過程中,CAD模型必須經(jīng)過分層處理才能將數(shù)據(jù)輸入到相應(yīng)的加工設(shè)備中,因此可以說分層處理是快速成型的核心,所以該問題一直是該領(lǐng)域的研究熱點(diǎn)[1,2]。
針對(duì)CAD模型的分層,國(guó)內(nèi)外相關(guān)的研究人員提出了各種分層算法,主要可以分為基于CAD模型的直接分層和基于STL模型的分層這兩大類算法。在快速成型技術(shù)的早期,普遍采用由美國(guó)3D System公司提出STL文件來表示CAD實(shí)體模型。雖然STL文件有種種不足和缺陷,但目前仍然是CAD模型轉(zhuǎn)化成快速成型數(shù)據(jù)的主要來源。而在眾多的分層算法中,基于STL模型的分層算法依然是研究的主流[3,4]。
由于STL文件是對(duì)CAD模型表面用一系列小三角形面片進(jìn)行近似而得到的,這使得在快速成型加工中截面輪廓含有大量的冗余微小線段,這些線段必然影響加工過程的平穩(wěn)性和效率。為了提高加工精度和速度,對(duì)這些微線段輪廓進(jìn)行優(yōu)化處理成為研究人員必須面對(duì)的問題。在此基礎(chǔ)上,文獻(xiàn)[5]提出采用計(jì)算曲率的方法,文獻(xiàn)[6]提出了限定三角形高度的方法等等。本文在總結(jié)前人的基礎(chǔ)上,提出了一種數(shù)據(jù)冗余點(diǎn)去除的新算法——基于截面輪廓三角形面積及其累加誤差的計(jì)算方法,該方法可以在保證加工精度的條件下,有效地去除了冗余點(diǎn)。
圖1 CAD模型、STL模型及三角形面片的示意圖
如圖1(a)、(b)、(c)所示分別是零件的CAD模型圖、STL模型圖和單個(gè)三角形的3個(gè)頂點(diǎn)坐標(biāo)及三角形面片的法向量示意圖。STL文件是若干空間小三角形面片的集合,每個(gè)三角形面片用其三個(gè)頂點(diǎn)和指向模型外部的三角形面片的法向量組成。STL文件的大小(即三角形數(shù)量)與產(chǎn)生該文件時(shí)對(duì)其要求的精度有關(guān)。當(dāng)STL模型對(duì)CAD模型的近似程度(即精度)較高時(shí),用來近似零件表面的三角形面片數(shù)目較多,反之則較少。關(guān)于STL文件格式的文獻(xiàn)很多,這里不再贅述。
快速成型加工的預(yù)處理是先建立零件的CAD模型,然后將此模型轉(zhuǎn)化成STL模型,在STL模型上指定一個(gè)分層方向(一般為Z軸),沿著分層方向每隔一定距離用垂直于Z軸的平面P進(jìn)行切片處理,再把所得到的截面輪廓的微線段連接成封閉的輪廓線,即STL模型的截面輪廓。 換言之,分層就是用垂直于分層方向的截平面截交STL模型,這個(gè)截平面和STL模型的三角形相交,然后得到封閉的截面輪廓線。
當(dāng)STL模型對(duì)CAD模型的近似程度較高時(shí),因?yàn)槿切螖?shù)目多,分層后得到的截面輪廓會(huì)有大量的微線段。而且,因?yàn)槿切喂岔旤c(diǎn)及共邊,在同一條直線段上還會(huì)存在多個(gè)數(shù)據(jù)點(diǎn),在同一個(gè)數(shù)據(jù)點(diǎn)上也會(huì)有多個(gè)重合點(diǎn)。切片厚度根據(jù)零件的精度和成型機(jī)的有關(guān)參數(shù)確定,如果切片厚度小,成型精度高,但成型的效率低。
用平面P1、P2、P3去截交STL模型的情況如圖2所示。從圖2中可以看出,截交STL模型后得到的輪廓是由一條條微線段組成的封閉多邊形,每個(gè)封閉多邊形也就是一個(gè)加工區(qū)域環(huán)。一個(gè)截面輪廓可能含有多個(gè)這樣的封閉環(huán),在這些環(huán)里進(jìn)行成型加工。根據(jù)切片原理和STL文件的特點(diǎn)可知,根據(jù)截交的位置不同,每個(gè)環(huán)都含有大量的微線段,有的在同一直線上,有的過于短小,短到小于加工精度,以至于根本無法進(jìn)行加工。當(dāng)截平面通過三角形面片的頂點(diǎn)時(shí),還會(huì)出現(xiàn)重復(fù)點(diǎn)。而且這些微線段成為一種多余的信息,對(duì)加工過程造成了一定的影響和干擾。只有去掉這些微線段,才能提高加工的效率和穩(wěn)定性。
如圖2中的P1切片通過三角形頂點(diǎn)V1時(shí),截交共此頂點(diǎn)的三角形T1、T2、T3、T4、T5、T6、T7、T8,根據(jù)不同的切片算法,則可能出現(xiàn)二重點(diǎn)或多重點(diǎn),這些都會(huì)影響到后續(xù)的插補(bǔ)加工。
圖2 STL模型的截交圖
圖3 三角形的面積計(jì)算
如圖3所示,在三角形ABC(以下用ΔABC表示)中,當(dāng)ΔABC的面積(即1/2×h×L)小到一定值時(shí),該三角形就可以忽略。在三角形中,如果面積一定時(shí),高h(yuǎn)和底L是反比關(guān)系。A、B、C三個(gè)點(diǎn)中,總有一個(gè)點(diǎn)應(yīng)該被忽略。即h較大時(shí),L就較??;L較大時(shí),h就較小。這樣,通過求面積的方法,前述的各類冗余點(diǎn)就合并為一類了。設(shè):
在STL模型被垂直于Z軸的平面截交以后,形成一個(gè)新的截面輪廓區(qū)域。該區(qū)域就是快速成型加工的掃描區(qū)域。它是由一系列直線段組成的,依次掃描各數(shù)據(jù)點(diǎn),以連續(xù)的三點(diǎn)組成三角形,計(jì)算該三角形的面積(即1/2×h×L),如滿足式(3),則該點(diǎn)作為多余點(diǎn)去除,然后以新形成的直線作為一條邊,加入一個(gè)新點(diǎn),形成一個(gè)新三角形,再計(jì)算該三角形的面積。依此類推,直到整個(gè)截面輪廓的數(shù)據(jù)點(diǎn)結(jié)束,這一層的數(shù)據(jù)優(yōu)化過程也就完成了。下一層也如此進(jìn)行,直到所有的輪廓層都計(jì)算完為止。
如圖4所示,具體的截面數(shù)據(jù)優(yōu)化過程如下:STL模型經(jīng)過截交后的部分外輪廓為:{A,B,C,D,E,F},首先ABC組成一個(gè)三角形,其面積為1/2×(AC)×h1,若該值≤δ,則B點(diǎn)作為冗余點(diǎn)去除。然后再計(jì)算ΔACD的面積,若該值≤δ,依此計(jì)算ΔACE的面積,若該值再≤δ,再計(jì)算ΔACF的面積,直到三角形面積的值超過δ為止。
上述算法的最大問題就是累積誤差。也就是說,當(dāng)前一次有數(shù)據(jù)點(diǎn)去除時(shí),新形成的邊已經(jīng)包含了該次優(yōu)化的誤差,在下一次新的三角形面積計(jì)算時(shí),如不考慮前次的影響,將會(huì)產(chǎn)生誤差累積,得到錯(cuò)誤的結(jié)果。因此,完整的算法應(yīng)該是:若前一次計(jì)算中有數(shù)據(jù)點(diǎn)去除,則本次計(jì)算時(shí)不僅要計(jì)算本次新形成的三角形面積,而且還應(yīng)再加上次去除掉的三角形面積值,只有這個(gè)累加值滿足式(3)的誤差范圍要求時(shí),才能去除這一點(diǎn)。以此類推,完成計(jì)算的全過程,掃描完各個(gè)STL模型的截面輪廓后,分層數(shù)據(jù)的優(yōu)化也就完成了。從這個(gè)數(shù)據(jù)點(diǎn)的去除過程可以看到,一切都是在截面輪廓的精度范圍內(nèi)進(jìn)行。因此,數(shù)據(jù)優(yōu)化后的截面輪廓與原輪廓的誤差完全控制在精度范圍內(nèi)。
圖4 截面數(shù)據(jù)優(yōu)化過程
圖5 實(shí)例零件的截面輪廓
在快速成型加工的前期,必須進(jìn)行CAD模型的預(yù)處理。在CAD系統(tǒng)中創(chuàng)建CAD模型后,由于CAD系統(tǒng)自身含有將CAD模型轉(zhuǎn)化成STL模型的功能,只須調(diào)用相關(guān)的轉(zhuǎn)換命令即可將CAD模型轉(zhuǎn)換成STL模型。然后依據(jù)快速成型制件的形狀,確定分層切片的方向,將該方向設(shè)置一般設(shè)置為Z軸方向,再調(diào)用CAD系統(tǒng)的剖切命令,指定分層厚度后,用垂直于Z軸的平面去對(duì)STL模型進(jìn)行分層,可以得到STL模型的分層輪廓。這時(shí),就可以運(yùn)用上述的方法對(duì)STL模型的截面輪廓的數(shù)據(jù)進(jìn)行數(shù)據(jù)優(yōu)化了。
STL模型的截面輪廓的數(shù)據(jù)優(yōu)化可以描述為如下的過程:
如圖5所示是一個(gè)零件的STL模型的截面輪廓,未經(jīng)過優(yōu)化時(shí)共有數(shù)據(jù)點(diǎn)632個(gè)。在經(jīng)過使用本算法進(jìn)行冗余數(shù)據(jù)的處理之后,還有數(shù)據(jù)點(diǎn)298個(gè),數(shù)據(jù)點(diǎn)的數(shù)量只有原來的47%。由此可見,本算法確實(shí)能夠減少STL模型的截面輪廓的數(shù)據(jù)量。在滿足制件加工精度的基礎(chǔ)上,提高了快速成型的加工效率。
三維CAD實(shí)體模型的分層切片處理是實(shí)現(xiàn)快速成型加工的必由之路。在目前的快速成型制造中,盡管STL模型有很多不足和缺陷,但在眾多的分層方法中,針對(duì)STL模型的分層方法仍然是快速成型技術(shù)研究的主流。由于快速成型加工中所采用的STL文件格式的特點(diǎn),決定了STL模型的截面輪廓必然由一系列微線段構(gòu)成,并且含有大量的數(shù)據(jù)冗余點(diǎn),肯定會(huì)影響后續(xù)的數(shù)據(jù)處理以及快速成型加工的過程。
本文在總結(jié)目前對(duì)STL模型進(jìn)行切片以后輪廓數(shù)據(jù)優(yōu)化方法的基礎(chǔ)上,提出了一種新的STL模型切片輪廓數(shù)據(jù)優(yōu)化的新算法—基于截面輪廓三角形面積及其累加誤差的計(jì)算方法,詳細(xì)闡述了本算法的基本思想和運(yùn)算過程。實(shí)踐證明,采用本算法進(jìn)行數(shù)據(jù)優(yōu)化以后,在保證加工精度的基礎(chǔ)上,每一層的數(shù)據(jù)點(diǎn)減少一半以上,不僅減少了加工過程的數(shù)據(jù)處理量,而且還能提高加工效率,同時(shí)也有利于后續(xù)的掃描路徑規(guī)劃。
[1] Ali Kamrani, Emad Abouel Nasr.Rapid Prototyping:Theory and Practice[M],Springer-Verlag New York Inc.2006.
[2] 平雪良,高同軍,孟凡虹.一種提高快速成形系統(tǒng)精度的新切片算法[J].機(jī)械科學(xué)與技術(shù)(西安),2008,27(9):1121-1124.
[3] 溫佩芝,黃文明,吳成柯.一種改進(jìn)的STL文件快速分層算法[J]. 計(jì)算機(jī)應(yīng)用,2008,28(7):1766-1768.
[4] 趙吉賓,劉偉軍.快速成形技術(shù)中基于STL模型的分層算法研究[J].應(yīng)用基礎(chǔ)與工程科學(xué)學(xué)報(bào),2008,16(2):224-233.
[5] 黃新華,孫琨,方亮,岑啟宏.STL模型的分層輪廓數(shù)據(jù)優(yōu)化算法[J].機(jī)械科學(xué)與技術(shù)(西安).2004,23(5):605-607.
[6] 郭新貴,汪德才,劉亞東,李從心.快速成型的切片數(shù)據(jù)優(yōu)化[J].制造技術(shù)與機(jī)床,2002,9(3):30-32.