程 慎, 張 力, 楊忠林
1. 上海開通數(shù)控有限公司 上海 200233 2. 上海電氣集團(tuán)股份有限公司 中央研究院 上海 200070
?
基于WPF技術(shù)的三維打印軟件
程 慎1, 張 力2, 楊忠林2
1. 上海開通數(shù)控有限公司 上海 200233 2. 上海電氣集團(tuán)股份有限公司 中央研究院 上海 200070
在視窗操作系統(tǒng)中開發(fā)了一款基于WPF技術(shù)的三維打印機(jī)控制軟件。這一軟件利用OpenTK實現(xiàn)對三維模型的預(yù)覽、編輯,通過切片功能將.stl格式的三維模型文件轉(zhuǎn)換為三維打印路徑代碼,解碼后通過網(wǎng)絡(luò)通信來控制打印機(jī)的運(yùn)動部件,進(jìn)而實現(xiàn)三維模型的打印。這一軟件功能豐富、性能穩(wěn)定、界面友好、實際效果良好,為三維模型的打印提供了一種有效的解決方案。
三維打??; 計算機(jī); 軟件; 設(shè)計
三維打印是快速成型技術(shù)[1-2]的一種,最早由美國麻省理工學(xué)院提出,融入了增材制造的思想。增材制造是指沿分層方向?qū)⑷S模型離散為一組二維圖形,即一組切片,逐層有序加工,層層疊加,最后形成三維模型實體的制造工藝[3]。增材制造技術(shù)具有設(shè)備簡單、材料便宜、成本低、體積小、工作過程無污染、成型速度快等優(yōu)點(diǎn),按照成型工藝的不同,可分為熔融沉積(FDM)、光固化成型(SLA)、選擇性激光燒結(jié)(SLS)、分層實體制造(LOM)[4]等技術(shù)。
結(jié)合產(chǎn)品的硬件平臺及創(chuàng)客們的實際需求,本文所涉及的三維打印系統(tǒng)采用FDM技術(shù),這一技術(shù)一般采用熱塑性材料,如丙烯腈-丁二烯-苯乙烯共聚物(ABS)、聚乳酸(PLA)等,以絲狀供料。材料在打印噴頭內(nèi)經(jīng)過加熱熔化后,噴頭沿三維打印軟件生成的路徑移動時,將熔化的材料擠出。材料在室溫下快速固化,與周圍的材料粘結(jié)在一起,當(dāng)前層的材料被堆積到前一層的材料上,如此循環(huán)往復(fù)、逐層疊加,形成最終的立體模型實體[5-6]。
筆者所設(shè)計的三維打印軟件是在Microsoft Visual studio 2010開發(fā)環(huán)境下以WPF(Windows Presentation Foundation)作為界面實現(xiàn)技術(shù),基于.Net Framework 4.0框架,應(yīng)用C#語言編寫控制邏輯開發(fā)的,具有對三維打印機(jī)運(yùn)動控制、三維模型預(yù)覽和編輯、三維模型切片、打印實時仿真、參數(shù)配置等功能。
WPF是微軟公司推出的新一代界面設(shè)計技術(shù),運(yùn)行在.Net架構(gòu)下,為用戶界面設(shè)計、二維與三維圖形設(shè)計、媒體及文檔制作提供了統(tǒng)一的描述和操作方法,實現(xiàn)了界面與代碼的分離?;赪PF技術(shù)開發(fā)的三維打印軟件界面清晰、友好、易擴(kuò)展,可以很好地滿足用戶需求[7]。
三維打印系統(tǒng)的框架如圖1所示。上位機(jī)軟件基于WPF技術(shù)開發(fā),主要功能是將導(dǎo)入的三維模型文件轉(zhuǎn)換為可供系統(tǒng)運(yùn)行的路徑代碼(Gcode),并將其解析后發(fā)送至下位機(jī)。下位機(jī)采用的是上海開通數(shù)控有限公司的KT-510運(yùn)動控制器,執(zhí)行運(yùn)動指令,對電機(jī)進(jìn)行運(yùn)行控制,并將運(yùn)行狀態(tài)的數(shù)據(jù)反饋至上位機(jī)。用戶可以通過軟件界面進(jìn)行實時監(jiān)控。
圖1 三維打印系統(tǒng)框架
通過抽象類NetBridge封裝了上位機(jī)界面軟件與下位機(jī)控制器KT-510的網(wǎng)絡(luò)通信,MACServer通過NetBridge類對打印機(jī)的參數(shù)和狀態(tài)進(jìn)行讀取、寫入和指令執(zhí)行。
MACServer的接口類型架構(gòu)如圖2所示,它集成了多個繼承自MACServer的數(shù)據(jù)接口類,這些類一共有兩大功能類型: NCServer、NCChannel、NCAxis和NCGcode屬于控制器運(yùn)動控制類型的接口類,Extruder、Hotbed和3DFan屬于專為三維打印機(jī)床應(yīng)用在原有架構(gòu)上新開放的接口類。新開放的接口類是通過C#的多態(tài)特性,從MACServer抽象類中拓展出來的。
圖2 MACServer接口類型架構(gòu)
上述這些具有獨(dú)立功能的MACServer接口類都集成到3DPrintBroker類中,以組裝成本系統(tǒng)軟件核心控制器,實現(xiàn)界面與控制模型代碼分離,降低系統(tǒng)結(jié)構(gòu)的耦合度。其中,NCServer提供了機(jī)床的全局參數(shù)和復(fù)位、激活、通信等功能接口,NCChannel提供了對機(jī)床程序自動運(yùn)行的控制和參數(shù)監(jiān)控接口,NCAxis提供了手動、回零、定位等移動操作及電機(jī)驅(qū)動器參數(shù)監(jiān)控的接口,NCGcode提供了對Gcode錯誤信息檢查的接口,Extruder提供了三維打印機(jī)噴頭溫度采集和控制的接口,Hotbed提供了熱床溫度采集和控制的接口,3DFan提供了散熱風(fēng)扇開關(guān)及速度控制的接口。
軟件支持對.stl格式三維模型的導(dǎo)入、顯示和編輯功能。 .stl基于由3D SYSTEMS公司于1988年制定的一個接口協(xié)議,是一種為快速成型制造技術(shù)服務(wù)的三維圖形文件格式。 .stl文件由多個三角形面片的定義組成,每個三角形面片的定義包括三角形各個頂點(diǎn)的三維坐標(biāo)及三角形面片的法矢量[8-9]。
筆者所設(shè)計的軟件對.stl文件進(jìn)行解析,然后調(diào)用OpenTK庫函數(shù)將模型繪制出來。OpenTK對OpenGL、OpenAL、OpenCL進(jìn)行了跨平臺的封裝,是用C#語言編寫、遵循MIT許可的開源庫。OpenTK可以集成到Windows.Forms、WPF或GTK#等應(yīng)用程序中,但要求視窗平臺上.Net版本至少為2.0[10]。本軟件使用的是.Net Framework 4.0。
圖3是軟件載入凱蒂.stl文件后編程界面的繪制效果圖。使用OpenTK庫繪制模型過程中的矩陣變換如圖4所示。視圖模型矩陣由模型矩陣和視圖矩陣組合而成,模型矩陣確定世界坐標(biāo)系中的點(diǎn)經(jīng)過變換后的新位置,視圖矩陣將世界坐標(biāo)系中的點(diǎn)轉(zhuǎn)換到觀察者的眼中。當(dāng)觀察者位于原點(diǎn),面向X軸、Y軸或Z軸的正半軸時,視圖矩陣就是一個單位矩陣,觀察者看到的點(diǎn)就是世界坐標(biāo)系下的實際位置點(diǎn)。當(dāng)觀察者的位置和方向發(fā)生變化時,就需要使用視圖矩陣來變換。
圖3 凱蒂.stl文件預(yù)覽
圖4 三維圖形矩陣變換
模型矩陣變換如下。
(1) 平移變換:
(1)
式中:tX、tY、tZ依次為模型沿X、Y、Z軸方向平移的位移量。
(2) 旋轉(zhuǎn)變換,以繞Z軸旋轉(zhuǎn)為例:
(2)
式中:θ為沿Z軸旋轉(zhuǎn)的角度。
(3) 縮放變換:
(3)
式中:sX、sY、sZ依次為沿X、Y、Z軸方向縮放的比例。
視圖矩陣同樣也有平移、旋轉(zhuǎn)和縮放,與模型矩陣的變換呈相反效果,如觀察者平移了(tX,tY,tZ),相當(dāng)于整個世界平移了(-tX,-tY,-tZ)。
本系統(tǒng)集成了Slic3r軟件,實現(xiàn)了對模型的切片功能。Slic3r是一款用于將三維模型文件轉(zhuǎn)換為Gcode的開源軟件。Slic3r中交互界面等高層模塊使用Perl開發(fā),重要的切片算法和數(shù)據(jù)結(jié)構(gòu)使用C++編寫,其中C++應(yīng)用程序編程接口是開放的,鼓勵在其它項目中使用。
筆者通過命令行的方式來調(diào)用Slic3r生成切片代碼,將Slic3r運(yùn)行過程中所需的參數(shù)與WPF界面中的控件雙向綁定,并在用戶設(shè)置成功后以.ini文件格式保存至上位機(jī),實現(xiàn)切片參數(shù)的管理。 .ini文件是一種具有特定結(jié)構(gòu)的文本文件,其結(jié)構(gòu)如圖5所示。
avoid_crossing_perimeters=0bed_shape=0×0,200×0,200×200,0×200bed_temperature=70before_layer_gcode=bottom_solid_layers=3bridge_acceleration=0bridge_fan_speed=100bridge_flow_ratio=1
圖5 .ini文件結(jié)構(gòu)示例
在自動切片結(jié)束后,生成的與模型文件同名的.Gcode文件由上位機(jī)通過網(wǎng)絡(luò)端口通信傳遞至控制器。在自動界面開始運(yùn)行.Gcode文件后,軟件開啟定時器實時讀取下位機(jī)各軸當(dāng)前坐標(biāo)值,并根據(jù)該值來繪制噴頭的運(yùn)動軌跡,呈現(xiàn)出當(dāng)前已打印出的模型部分。凱蒂模型打印效果仿真如圖6所示,實際打印結(jié)果如圖7所示。
圖6 凱蒂.Gcode打印效果仿真
圖7 凱蒂.stl打印結(jié)果
經(jīng)過實際運(yùn)行驗證,筆者所設(shè)計的三維軟件功能完善、性能穩(wěn)定,能很好地滿足用戶的三維打印需求,為三維打印提供了一種有效的解決方案。
[1] PANG A, JONEJA A, LAM D C C, et al. A CAD/CAM System for Process Planning and Optimization in
LOM(Laminated Object Manufacturing)[J].IIE Transactions,2001,33(4): 345-355.
[2] 胡發(fā)宗,趙毅,陳罡,等.三維立體打印機(jī)的成形技術(shù)[J].模具技術(shù),2004(1): 60-62.
[3] 顏永年,單忠德.快速成形與鑄造技術(shù)[M].北京: 機(jī)械工業(yè)出版社,2004: 8-27.
[4] 阮雪榆,婁臻亮.21世紀(jì)數(shù)字化塑性成形技術(shù)與科學(xué)[J].模具技術(shù),2003(2): 3-8,35.
[5] 王文濤,劉燕華.3D打印制造技術(shù)發(fā)展趨勢及對我國結(jié)構(gòu)轉(zhuǎn)型的影響[J].科技管理研究,2014(6): 22-25,30.
[6] 廖文俊,胡捷.增材制造技術(shù)的現(xiàn)狀和產(chǎn)業(yè)前景[J].裝備機(jī)械,2015(1): 1-7.
[7] NATHAN A.WPF揭秘[M].瞿杰,單佐一,夏寒,譯.北京: 人民郵電出版社,2008: 109-111.
[8] 朱虎,楊忠鳳,張偉.STL文件的應(yīng)用與研究進(jìn)展[J].機(jī)床與液壓,2009,37(6): 186-189.
[9] 張培.基于快速成型的三維模型數(shù)據(jù)處理技術(shù)研究[D].洛陽: 河南科技大學(xué),2013.
[10] 鄒曄.三維軟件在大型復(fù)雜鍛件制造中的應(yīng)用[J].上海電氣技術(shù),2010,3(4): 22-26.
(編輯: 爾 東)
In Windows operating system a 3D printer control software was developed based on WPF technology. This software uses OpenTK to realize the preview and edit of the 3D model, convert the 3D model file in .stl format into the 3D print path code by the slice function, control the moving parts of the printer through the network communication after decoding, and then realize the printing of the 3D model. Owing to rich software functions, stable performances, friendly interface and sound actual effect, this software may provide an effective solution for printing of the 3D model.
3D Printing; Computer; Software; Design
2016年8月
程慎(1982— ),男,碩士,工程師,主要從事數(shù)控技術(shù)研究工作, E-mail: cscheng7907@hotmail.com
TM762;TP23
A
1674-540X(2017)02-020-04