3D打印機(jī)等層厚切片算法研究及軟件實(shí)現(xiàn)
第 1 章 緒論
在使用快速成形工藝制造物體時(shí),一個(gè)零件的模型必須首先經(jīng)過(guò)分層處理,然后用戶才能將模型數(shù)據(jù)輸入到 3D 打印機(jī)中進(jìn)行打印。分層處理過(guò)程是采用分層切片算法在 3D 打印機(jī)切片軟件中完成的。其中,分層切片算法的作用是將三維模型信息轉(zhuǎn)化為以層片信息為基礎(chǔ)的模型信息,便于 3D 打印機(jī)后期處理。因?yàn),分層切片算法占?D 打印切片軟件的大部分運(yùn)行時(shí)間,所以,分層切片算法的好壞對(duì)于 3D 打印機(jī)切片軟件來(lái)講是至關(guān)重要的。本文利用模型文件中邊的連續(xù)性,使用層變邊數(shù)組結(jié)構(gòu)存儲(chǔ)模型中與切平面相交的邊的信息,并使用鄰接邊順序鏈表結(jié)構(gòu)保存邊與邊之間的鄰接關(guān)系來(lái)完成算法。該算法與傳統(tǒng)的分層切片算法相比,在處理相同模型的情況下用時(shí)更短,從而節(jié)省 3D 打印整個(gè)工作流程的用時(shí)。
.........
第 2 章 3D 打印機(jī)切片軟件使用的算法
2.1 STL 文件格式
STL 文件的設(shè)計(jì)原理是采用三角面片來(lái)模擬 CAD 模型的表面,每個(gè)三角面片用三個(gè)頂點(diǎn)表示,每個(gè)頂點(diǎn)由其坐標(biāo)(x,y,z)表示,每個(gè)點(diǎn)當(dāng)中 x 代表在坐標(biāo)系下該點(diǎn)在 x坐標(biāo)軸方向上的 x 坐標(biāo)值,y 代表在坐標(biāo)系下該點(diǎn)在 y 坐標(biāo)軸方向上的 y 坐標(biāo)值,z 代表在坐標(biāo)系下該點(diǎn)在 z 坐標(biāo)軸方向上的 z 坐標(biāo)值,每個(gè)三角形面片的定義還包括三角形面片的法向量。當(dāng)三角面片尺寸小到一定程度,擬合的誤差就能達(dá)到被接受的精度范圍,這種文件格式能夠描述幾乎所有形體復(fù)雜的三維模型,三角面片的數(shù)量取決于需要表示的模型精度[14]。STL 文件[50]的另一來(lái)源是通過(guò)逆反工程[51](三維掃描)采集模型數(shù)據(jù)點(diǎn)云,再由點(diǎn)云直接生成 STL 文件,而不需要轉(zhuǎn)換到 CAD 模型[52]。 根據(jù)數(shù)據(jù)存儲(chǔ)方式的不同,STL 文件可分為 ASCII 碼和 BINARY 碼兩種存儲(chǔ)方式[49],STL 文件的 ASCII 文件格式如圖 2.1 所示。2.2 等層厚切片算法
往返直線掃描法是在快速成型制造中所使用的較為簡(jiǎn)單的掃描填充算法。這種算法在對(duì)截面輪廓內(nèi)部進(jìn)行填充的時(shí)候,采用從下到上或者從上到下逐行掃描,在掃描一行的過(guò)程中,對(duì)截面實(shí)體部分按照設(shè)定好的速度掃描;遇到空腔部分時(shí),噴頭會(huì)快速的跨越空腔部分,這種掃描方式的基本思想與計(jì)算機(jī)圖形學(xué)中的區(qū)域填充很相似。往返直線掃描填充法示意圖如圖 2.2 所示。算法的特點(diǎn)在于:實(shí)現(xiàn)比較簡(jiǎn)單、運(yùn)行速度快能夠滿足快速成型制造“快速”的要求,對(duì)于數(shù)據(jù)的處理比較可靠,但是該算法存在下述問(wèn)題[50]:(1)對(duì)于那些存在空腔結(jié)構(gòu)的模型文件,使用此算法在打印模型的過(guò)程當(dāng)中,噴頭要頻繁地跨越內(nèi)輪廓,掃描系統(tǒng)需要頻繁地在填充速度與快進(jìn)速度之間切換,這樣不但對(duì)絲杠和 3D 打印機(jī)控制系統(tǒng)要求很高,還會(huì)加劇對(duì) 3D 打印機(jī)的硬件磨損,如軸承、絲杠,產(chǎn)生的嚴(yán)重震動(dòng)也對(duì) 3D 打印機(jī)的機(jī)器壽命有著不好的影響。另外,打印噴頭在打印時(shí)空跑的現(xiàn)象比較多,,這也會(huì)增加打印模型所需的時(shí)間。 (2)由于在掃描過(guò)程中要頻繁地由一條矢量向另外一條矢量快速的跳轉(zhuǎn),這樣容易引入由機(jī)器造成的打印誤差,使成型的模型在邊緣處存在許多毛刺,也就是材料“拉絲”現(xiàn)象。
第 3 章 基于層變邊數(shù)組和鄰接邊順序鏈表的等層厚切片算法.......... 12
3.1 算法的原理 ............... 123.2 算法的實(shí)現(xiàn) .................. 15
3.3 實(shí)驗(yàn)結(jié)果分析 ................. 22
3.4 本章小結(jié) .................. 29
4.1 軟件環(huán)境 .......... 30
4.2 硬件環(huán)境 ..................... 30
4.3 軟件的設(shè)計(jì)與實(shí)現(xiàn).......... 31
4.4 本章小結(jié).................... 42
第 4 章 3D 打印機(jī)切片軟件的實(shí)現(xiàn) .......... 30
第 5 章 結(jié)論 ................ 43
第 4 章 3D 打印機(jī)切片軟件的實(shí)現(xiàn)
4.1 軟件環(huán)境
3D 打印機(jī)切片軟件在 64 位的 Windows 10 專業(yè)版操作系統(tǒng)下進(jìn)行開(kāi)發(fā),開(kāi)發(fā)平臺(tái)為 Visual Studio2013,采用 MFC 框架作為軟件主框架,開(kāi)發(fā)語(yǔ)言為 C++,開(kāi)發(fā)過(guò)程中使用 OpenGL 開(kāi)發(fā)庫(kù)用于模型顯示。OpenGL 開(kāi)發(fā)庫(kù)定義了一個(gè)跨編程語(yǔ)言、跨平臺(tái)的編程接口規(guī)格的專業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的底層圖形庫(kù)。 同時(shí)開(kāi)發(fā)中用到一些輔助軟件,其中選用Sublime2作為STL模型文件的讀取軟件,用于查看模型的原始參數(shù)。使用 Repetier-Host Windows 和 Win10 自帶的 3D Builder 查看模型預(yù)期顯示效果。在軟件開(kāi)發(fā)后期上述兩款軟件也用于對(duì)比模型的顯示細(xì)節(jié),米老鼠在 3D Builder 軟件上顯示效果如圖 4.1 所示。4.2 硬件環(huán)境
開(kāi)發(fā)硬件環(huán)境為 MC975 筆記本,硬件參數(shù)如下: CPU:Inter(R)Core(TM)i7-3615QM CPU@2.3GHZ內(nèi)存:16 GB (DDR3 1600MHz) 顯卡:Nvidia GeForce GT 650M (1 GB)顯示器分辨率:2880*1800
......
第 5 章 結(jié)論
3D 打印機(jī)采用分層累積成型技術(shù)制造三維物體,利用 3D 打印機(jī)切片軟件處理模型,通過(guò) 3D 打印機(jī)硬件設(shè)備打印由軟件處理后的模型。3D 打印機(jī)切片軟件使用 STL格式的模型文件作為輸入文件,通過(guò)模型載入、模型數(shù)據(jù)處理、切片生成輪廓環(huán),填充輪廓環(huán)等功能,將模型的文件格式轉(zhuǎn)化為以層片信息為基礎(chǔ)的模型文件格式,其中切片效果和切片用時(shí)是該過(guò)程的關(guān)鍵。本文針對(duì) 3D 打印機(jī)切片軟件運(yùn)行效率的問(wèn)題,對(duì)現(xiàn)有的等層厚切片算法進(jìn)行分類研究,利用 STL 模型文件中邊的幾何連續(xù)性,提出了基于層變邊數(shù)組和鄰接邊順序鏈表的等層厚切片算法,實(shí)現(xiàn)了 3D 打印機(jī)切片軟件。下面對(duì)本文作以下總結(jié):(1)利用標(biāo)準(zhǔn)模板庫(kù)中 SET 容器中的元素唯一性,對(duì) STL 文件進(jìn)行點(diǎn)、邊信息去重,去重后的點(diǎn)數(shù)量為去重前的 1/6,去重后的邊數(shù)量為去重前的 1/2,去重后切片算法工作量將會(huì)減少;(2)由于以三角面片作為基本操作單位的分層切片算法,通過(guò)三角面片尋找邊的過(guò)程會(huì)降低算法的運(yùn)行效率,因此本文選用邊作為基本操作單位實(shí)現(xiàn)分層切片算法,實(shí)驗(yàn)證實(shí)該方法可行。在解決了以邊作為基本操作單位建立模型拓?fù)潢P(guān)系的問(wèn)題后,實(shí)現(xiàn)了以邊作為基本操作單位的分層切片算法。
.........
參考文獻(xiàn)(略)
本文編號(hào):61250
本文鏈接:http://sikaile.net/wenshubaike/lwfw/61250.html