本發(fā)明屬于三維打印領(lǐng)域,特別涉及一種三維打印方法及系統(tǒng)。
背景技術(shù):借助于計(jì)算機(jī)控制和快速成型材料等技術(shù)的發(fā)展,三維打印成為當(dāng)前工業(yè)設(shè)計(jì)、制造行業(yè)的熱門話題,通過計(jì)算機(jī)控制噴頭,現(xiàn)有技術(shù)已可以成功地將計(jì)算機(jī)虛擬設(shè)計(jì)的三維數(shù)字模型打印成真實(shí)的物品。三維打印是一個(gè)將虛擬模型通過逐層打印構(gòu)造成實(shí)體物品的過程,在將虛擬轉(zhuǎn)化為現(xiàn)實(shí)時(shí)需要面對虛擬設(shè)計(jì)中所未考慮的實(shí)際物理性質(zhì)的影響,典型地如物體的重力、重心、體積、各方向長度以及打印環(huán)境等因素,都可能影響成品的實(shí)際效果。在三維打印時(shí),起始打印方向?qū)Τ善仿视休^大影響,對于不太規(guī)則的物體,打印過程中重力會逐漸產(chǎn)生作用影響物體的穩(wěn)定性,因而打印方向不對可能會造成打印失敗和浪費(fèi)材料等結(jié)果。例如,在打印如圖1所示的物體時(shí),如果選擇了左側(cè)方案為打印方向,則物體打印過程中重心穩(wěn)定,效果最佳;如果選擇了右側(cè)方案為打印方向,則因?yàn)橹匦牟环€(wěn)很難保證模型和打印平板的貼合,打印很可能會失敗。為解決上述問題,現(xiàn)有技術(shù)一般會在用戶選定模型后再讓用戶選擇起始打印方向。在人工設(shè)定的情況下,打印方向的選擇很需要經(jīng)驗(yàn),專業(yè)的工程師一般可以根據(jù)經(jīng)驗(yàn)選擇一個(gè)合適的打印方向;越有經(jīng)驗(yàn)的工程師,選擇的方向越理想,從而可得到更好的打印效果。然而,個(gè)人消費(fèi)者用戶一般沒有很多三維打印經(jīng)驗(yàn),特別是初學(xué)者,經(jīng)驗(yàn)更少,往往使用默認(rèn)的模型打印方向,既Z軸向上。通常專門針對三維打印而設(shè)計(jì)的模型為了方便打印,設(shè)計(jì)完成的默認(rèn)方向已經(jīng)是最優(yōu)方向;但是,更多的三維數(shù)字模型本身并不是為三維打印所設(shè)計(jì)的,因此很多時(shí)候三維打印方向未必為最優(yōu)方向,大大影響了三維打印的成品率。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種三維模型預(yù)處理的三維打印技術(shù),在向三維打印機(jī)輸出三維形體時(shí),通過分析和處理三維數(shù)字模型,確定合適的打印方向;采用本發(fā)明的技術(shù)方案可大幅優(yōu)化三維打印效果。根據(jù)本發(fā)明的一個(gè)方面,提供了一種三維打印方法,包括步驟:讀取模型數(shù)據(jù),確定模型形狀,按默認(rèn)打印方向預(yù)置模型;判斷在當(dāng)前打印方向下模型是否超出打印體積和/或模型是否需要支撐;若模型超出打印體積,則遍歷旋轉(zhuǎn)角度篩選邊界距離最小的打印方向作為實(shí)際打印方向;若模型需要支撐,則利用支撐系統(tǒng)生成算法篩選支撐體積最小且底面積較大的打印方向作為實(shí)際打印方向;若上述兩種情況均不存在,則以默認(rèn)打印方向作為實(shí)際打印方向;按照實(shí)際打印方向重新配置模型數(shù)據(jù),控制噴頭按照實(shí)際打印方向進(jìn)行三維打印?;谏鲜龇椒?,優(yōu)選地,所述遍歷旋轉(zhuǎn)角度篩選包括步驟:在默認(rèn)打印方向下將模型的中心平移到打印體積的中心;進(jìn)行邊界檢查,定義第一目標(biāo)函數(shù)為在打印空間以外的模型點(diǎn)到打印空間矩形邊界的距離,計(jì)算默認(rèn)打印方向下第一目標(biāo)函數(shù)值;以二分法調(diào)整旋轉(zhuǎn)角度進(jìn)行遍歷,分別計(jì)算各旋轉(zhuǎn)角度下的第一目標(biāo)函數(shù)值;若在遍歷過程中出現(xiàn)第一目標(biāo)函數(shù)值為0的情況,則直接以當(dāng)前旋轉(zhuǎn)角度對應(yīng)方向作為實(shí)際打印方向;若遍歷結(jié)束也無第一目標(biāo)函數(shù)值為0的情況,則以第一目標(biāo)函數(shù)值最小的旋轉(zhuǎn)角度縮小模型并以其對應(yīng)方向作為實(shí)際打印方向。基于上述方法,優(yōu)選地,所述利用支撐系統(tǒng)生成算法篩選包括步驟:定義第二目標(biāo)函數(shù)為需要生成的支撐體積,讀取模型的各個(gè)三角形,判斷其是否滿足作為底面的條件;若某三角形可作為底面,則將該三角形及其法矢量加入備選打印方向集合;對于備選打印方向集合中的每個(gè)打印方向按底面積大小排序,隨后計(jì)算每個(gè)打印方向第二目標(biāo)函數(shù)值,以第二目標(biāo)函數(shù)值最小的作為實(shí)際打印方向?;谏鲜龇椒?,優(yōu)選地,三角形面滿足作為底面的條件包括:以三角形所在的面為xy平面,以三角形法矢量的反向?yàn)閦軸,以三角形中心為原點(diǎn),建立坐標(biāo)系,將模型旋轉(zhuǎn)至該坐標(biāo)系下;如果模型全部點(diǎn)的z值都不小于0,那么此三角形可以作為底面?;谏鲜龇椒ǎ瑑?yōu)選地,所述每個(gè)打印方向按底面積大小排序包括:對于每個(gè)打印方向,計(jì)算屬于這個(gè)方向的三角形面積之和作為該方向的底面積并以此排序?;谏鲜龇椒?,優(yōu)選地,所述以二分法調(diào)整旋轉(zhuǎn)角度進(jìn)行遍歷包括:預(yù)設(shè)模型的初始旋轉(zhuǎn)角度和最小旋轉(zhuǎn)角度,預(yù)設(shè)當(dāng)前旋轉(zhuǎn)角度為初始旋轉(zhuǎn)角度;遍歷時(shí),每次按當(dāng)前旋轉(zhuǎn)角度的大小旋轉(zhuǎn)模型,計(jì)算旋轉(zhuǎn)后的第一目標(biāo)函數(shù)值并與旋轉(zhuǎn)前第一目標(biāo)函數(shù)值比較,選擇值較小的作為新的方向;在新的方向的基礎(chǔ)上繼續(xù)旋轉(zhuǎn)模型,直至遍歷完當(dāng)前旋轉(zhuǎn)角度下的所有方向;若未出現(xiàn)第一目標(biāo)函數(shù)值為0的情況,在將當(dāng)前旋轉(zhuǎn)角度的值乘以1/2后重復(fù)上述遍歷;若在上述遍歷過程中出現(xiàn)第一目標(biāo)函數(shù)值為0的情況、或者當(dāng)前旋轉(zhuǎn)角度小于最小旋轉(zhuǎn)角度,則結(jié)束遍歷輸出第一目標(biāo)函數(shù)值為0或最小的方向。基于上述方法,優(yōu)選地,所述方法中,預(yù)設(shè)可接受的最小底面積值,該最小面積值由支撐是否牢固決定,小于此值的底面積不予考慮。根據(jù)本發(fā)明的另一個(gè)方面,還同時(shí)提供了一種三維打印系統(tǒng),包括:預(yù)置模塊,用于讀取模型數(shù)據(jù),確定模型形狀,按默認(rèn)打印方向預(yù)置模型;判斷模塊,用于判斷在當(dāng)前打印方向下模型是否超出打印體積和/或模型是否需要支撐;旋轉(zhuǎn)優(yōu)化模塊,用于在模型超出打印體積時(shí),遍歷旋轉(zhuǎn)角度篩選邊界距離最小的打印方向作為實(shí)際打印方向;支撐優(yōu)化模塊,用于在模型需要支撐時(shí),利用支撐系統(tǒng)生成算法篩選支撐體積最小且底面積較大的打印方向作為實(shí)際打印方向;默認(rèn)打印模塊,用于在上述兩種情況均不存在時(shí),以默認(rèn)打印方向作為實(shí)際打印方向;打印控制模塊,用于按照實(shí)際打印方向重新配置模型數(shù)據(jù),控制噴頭按照實(shí)際打印方向進(jìn)行三維打印?;谏鲜鱿到y(tǒng),優(yōu)選地,所述旋轉(zhuǎn)優(yōu)化模塊包括:平移模塊,用于在默認(rèn)打印方向下將模型的中心平移到打印體積的中心;檢查模塊,用于進(jìn)行邊界檢查,定義第一目標(biāo)函數(shù)為在打印空間以外的模型點(diǎn)到打印空間矩形邊界的距離,計(jì)算默認(rèn)打印方向下第一目標(biāo)函數(shù)值;遍歷模塊,用于以二分法調(diào)整旋轉(zhuǎn)角度進(jìn)行遍歷,分別計(jì)算各旋轉(zhuǎn)角度下的第一目標(biāo)函數(shù)值;第一輸出模塊,用于在遍歷過程中出現(xiàn)第一目標(biāo)函數(shù)值為0的情況時(shí),直接以當(dāng)前旋轉(zhuǎn)角度對應(yīng)方向作為實(shí)際打印方向;或者在遍歷結(jié)束也無第一目標(biāo)函數(shù)值為0的情況時(shí),以第一目標(biāo)函數(shù)值最小的旋轉(zhuǎn)角度縮小模型并以其對應(yīng)方向作為實(shí)際打印方向?;谏鲜鱿到y(tǒng),優(yōu)選地,所述支撐優(yōu)化模塊包括:...