婁志超,趙先鋒,史紅艷,姜雪婷
(貴州大學(xué) 機(jī)械工程學(xué)院,貴陽(yáng) 550025)
立銑刀作為一種高性能的自由曲面加工刀具,具有良好的切削加工性能和加工表面質(zhì)量,在航空航天、汽車(chē)、模具等行業(yè)廣泛使用。但是由于立銑刀結(jié)構(gòu)復(fù)雜,規(guī)格繁多,螺旋槽復(fù)雜曲面的設(shè)計(jì)算法復(fù)雜,人工計(jì)算工作效率較低,因此可利用CAD技術(shù)對(duì)刀具設(shè)計(jì)進(jìn)行參數(shù)化的開(kāi)發(fā)。近些年,隨著國(guó)內(nèi)外眾多優(yōu)秀的商業(yè)化三維建模軟件的發(fā)展和廣泛應(yīng)用(達(dá)索公司的CATIA和SolidWorks、西門(mén)子公司的UG以及PTC公司的Pro/Enginee等),為復(fù)雜刀具的建模系統(tǒng)的實(shí)現(xiàn)提供了新的平臺(tái),國(guó)內(nèi)相應(yīng)的展開(kāi)了針對(duì)復(fù)雜刀具三維建模技術(shù)的研究工作。米蓉[1]基于CATIA和UG二次開(kāi)發(fā)技術(shù)建立了基于加工過(guò)程的整體式立銑刀三維模型;趙鑫[2]通過(guò)UG/Open二次開(kāi)發(fā)工具實(shí)現(xiàn)了錐度球頭銑刀的設(shè)計(jì);熊烽[3]基于Matlab軟件,進(jìn)行數(shù)學(xué)建模,繪制設(shè)計(jì)圖形一種等螺旋角、等前角圓錐球頭立銑刀;李宏德[4]基于PRO/E軟件,對(duì)立銑刀螺旋容屑槽的法向截形參數(shù)與立銑刀螺旋角與截面旋轉(zhuǎn)角的關(guān)系進(jìn)行分析,實(shí)現(xiàn)立銑刀實(shí)體建模;趙先鋒[5-6]利用包絡(luò)原理在SolidWorks的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā),建立了立銑刀的三維模型,其螺旋槽截面圖形和Walter的截面圖形完全一致;然而上述研究大多通過(guò)商業(yè)軟件繪圖軟件進(jìn)行二次開(kāi)發(fā),依賴(lài)于國(guó)外軟件的圖形系統(tǒng),沒(méi)有自主知識(shí)產(chǎn)權(quán),具有很大的應(yīng)用局限性。
OpenGL是個(gè)基層圖形庫(kù),如商業(yè)軟件中CAD、UG等三維建模軟件都是以O(shè)penGL圖形庫(kù)進(jìn)行開(kāi)發(fā),通過(guò)OpenGL構(gòu)建三維曲面[8],將三維圖形劃分為點(diǎn)云,再進(jìn)行點(diǎn)云的相互點(diǎn)之間的連接形成三角網(wǎng)格,將模型網(wǎng)格進(jìn)行OpenGL渲染,以此實(shí)現(xiàn)立銑刀螺旋槽的建模[9];并且OpenGL是個(gè)與硬件無(wú)關(guān)的軟件接口,可以在不同的平臺(tái)如Windows 7、Unix、Linux等之間進(jìn)行移植。具有很好的移植性,可以獲得非常廣泛的應(yīng)用?;贠penGL的程序框架構(gòu)造好后,用戶(hù)只需要在對(duì)應(yīng)的函數(shù)中添加程序代碼即可,擴(kuò)展性好,由于OpenGL是圖形的底層圖形庫(kù),不需要依賴(lài)于其他繪圖軟件的技術(shù),具有獨(dú)立性。
因此,本文在Visual Studio 2015平臺(tái)下基于OpenGL研究開(kāi)發(fā)立銑刀三維參數(shù)化建模軟件,省略將商業(yè)建模軟件作為搭建建模系統(tǒng)的中介,而直接由OpenGL底層圖形庫(kù),采用點(diǎn)云進(jìn)行三維曲繪制方法進(jìn)行開(kāi)發(fā),并提出了以關(guān)鍵點(diǎn)進(jìn)行數(shù)學(xué)建模的思想,通過(guò)改變關(guān)鍵點(diǎn)的位置實(shí)現(xiàn)立銑刀的三維建模;由于是從底層實(shí)現(xiàn)繪圖,建模精確精度大大提高,建模效率也有提升。該軟件以CAD工程圖作為參考進(jìn)行模型的繪制,可直接以CAD工程圖進(jìn)行參數(shù)的輸入,方便快捷,具有較好的實(shí)用性;直接通過(guò)OpenGL進(jìn)行建模,具有獨(dú)立的技術(shù)體系和自主知識(shí)產(chǎn)權(quán),具有廣闊的市場(chǎng)應(yīng)用前景。
立銑刀螺旋槽三維模型生成方式,如圖1所示。
圖1 立銑刀螺旋槽模型生成流程
由于OpenGL是個(gè)狀態(tài)機(jī)的概念,需要通過(guò)創(chuàng)建OpenGL的渲染設(shè)備,并依次將其所需狀態(tài)進(jìn)行設(shè)置,使得OpenGL具有這些狀態(tài)功能,從而在OpenGL環(huán)境下進(jìn)行立銑刀建模系統(tǒng)的開(kāi)發(fā),由于OpenGL環(huán)境搭建文獻(xiàn)與教程有很多,而且搭建OpenGL流程已成固定化,本文不再進(jìn)行重述(參見(jiàn)文獻(xiàn)[9-13]),而以視口方面進(jìn)行闡述OpenGL的搭建過(guò)程。
在OpenGL中包含倆個(gè)矩陣:projection和model view,其中又包含3個(gè)坐標(biāo)系:世界坐標(biāo)系、視口坐標(biāo)系、屏幕坐標(biāo)系;要使圖形顯示,就需要對(duì)坐標(biāo)系進(jìn)行一系列的矩陣變化,才能顯示到屏幕上被觀(guān)測(cè)到,如圖2所示模型處理流程圖。首先圖形的建模是在世界坐標(biāo)系下完成,由于計(jì)算機(jī)屏幕上只能表現(xiàn)二維平面,所以要使得立銑刀建模系統(tǒng)顯示三維圖形,需要在投影矩陣(projection)作用下把所繪制三維物體轉(zhuǎn)到二維平面圖像間的變換,投影矩陣會(huì)把所有的3D信息投影到2D屏幕上,此時(shí),模型在視口坐標(biāo)下,再通過(guò)模型視口矩陣(model view)對(duì)模型進(jìn)行作用,從而轉(zhuǎn)換到屏幕坐標(biāo)系下,然后把模型投影到屏幕的范圍內(nèi),才能使圖形顯示到屏幕上,其中投影的操作如同攝像機(jī)的原理,需要在攝像機(jī)拍攝范圍內(nèi),鏡頭畫(huà)面才有模型的顯示。如此,所建模的立銑刀螺旋槽三維圖形便可在屏幕中顯示。
參考代碼:
//設(shè)置矩陣
glMatrixMode(GL_PROJECTION);//告訴gpu顯卡對(duì)投影矩陣進(jìn)行操作;并進(jìn)行投影矩陣設(shè)置
gluPerspective(50.0f, 800.0f/600.0f, 0.1f, 1000.0f);//對(duì)投影矩陣進(jìn)行操作
glMatrixMode(GL_MODELVIEW);//設(shè)置模型視口矩陣
//模型的繪制代碼
........
圖2 模型處理流程
立銑刀螺旋槽參數(shù)如表1所示,首先以螺旋槽截面中心設(shè)為原點(diǎn),搭建xy正交坐標(biāo)系,如圖3所示,通過(guò)計(jì)算與截面參數(shù)相關(guān)的所有關(guān)鍵點(diǎn)坐標(biāo),并將關(guān)鍵點(diǎn)進(jìn)行依次連接實(shí)現(xiàn)螺旋槽截面建模。
分析螺旋槽截面形狀及特征,將螺旋槽截面劃分為幾個(gè)關(guān)鍵點(diǎn)構(gòu)成的線(xiàn)段或曲線(xiàn)??芍菪劢孛嬗申P(guān)鍵點(diǎn)B、A、C、E、F、G、H共7點(diǎn),如圖3、圖4所示,將關(guān)鍵點(diǎn)相互連接,形成線(xiàn)段或曲線(xiàn)再進(jìn)行旋轉(zhuǎn)即可得到完整的螺旋槽截面圖形。
表1 立銑刀螺旋槽面截面相關(guān)參數(shù)
圖3 立銑刀螺旋槽截面
圖4 螺旋槽截面局部放大圖
將銑刀截面中心設(shè)定在坐標(biāo)原點(diǎn),并把O2點(diǎn)設(shè)定為小圓弧AB的圓心,由此可知點(diǎn)C坐標(biāo)為(0,L1/2),分別作輔助線(xiàn)CO,O2A,O2O,AO2,其中與坐標(biāo)軸交于點(diǎn)D,如圖3、圖4所示,通過(guò)表1螺旋槽參數(shù)可求得:
L(BO)=L1-L4
(1)
∠(CDA)=90°-c
(2)
設(shè)線(xiàn)段DC為y值,線(xiàn)段CA為x值,那么在ΔACD中x與y的關(guān)系為x/y=cos(c),而且通過(guò)ΔOO2D的關(guān)系,可知:
L(O2D)=y·sin(c)
(3)
L(O1D)=L1/(2-y)
(4)
L(OO2)=L/2-L4+L6
(5)
應(yīng)用三角形余弦定理,構(gòu)造一元二次方程,從而解出y與x的值。
A=sin2(c)
(6)
B=L1-L1·sin2(c)
(7)
(8)
通過(guò)式(6)~式(8)聯(lián)立可得:
(9)
x=y·cos(c)
(10)
由此可知點(diǎn)A、C、D的坐標(biāo),點(diǎn)C坐標(biāo):(0,L1/2);
點(diǎn)D坐標(biāo):(0,L1/2-y);
而點(diǎn)A坐標(biāo)可通過(guò)旋轉(zhuǎn)法求得,在y軸取一點(diǎn)A1,A1C的長(zhǎng)度為AC,則點(diǎn)A1坐標(biāo)為(0,L1/2-x),將點(diǎn)A1以C為圓心AC長(zhǎng)度為半徑逆時(shí)針旋轉(zhuǎn)∠DCA(∠DCA=c)到AC所在直線(xiàn)上即可得到A點(diǎn)坐標(biāo)。
B點(diǎn)坐標(biāo)則可仍使用旋轉(zhuǎn)法求解,先求出點(diǎn)O2的坐標(biāo),再由點(diǎn)A繞圓心O2以槽底圓弧L6順時(shí)針旋轉(zhuǎn)∠AO2B,由此可得點(diǎn)B坐標(biāo)。
點(diǎn)B坐標(biāo)具體解法:作輔助線(xiàn)O2M垂直于y軸,如圖4所示,由式(9)、式(10)求得CA和DC長(zhǎng)度,通過(guò)簡(jiǎn)單三角函數(shù)可推得∠(O2OC)=c,通過(guò)旋轉(zhuǎn)法,從y軸選取點(diǎn)OO2長(zhǎng)度,繞原點(diǎn)繞逆時(shí)針旋轉(zhuǎn)c角,可得槽底圓弧AB的圓心O2點(diǎn)坐標(biāo),并由式(11)~式(13)推得式(14),再由式(14)推出式(15)、式(16),即槽底圓弧起點(diǎn)A與終點(diǎn)B的角度∠sa與∠ea角度,通過(guò)∠sa與∠ea的差值,可得∠AO2B,由于已知小圓弧AB半徑為槽底圓弧長(zhǎng)度L6,逆時(shí)針旋轉(zhuǎn)∠AO2B可得B點(diǎn)坐標(biāo)。
a1=L6-y·sin(c)
(11)
b1=L6+L1/2-L4
(12)
c1=L1/2-y
(13)
通過(guò)式(11)~式(13)可得
(14)
通過(guò)式(14)可推出起始角度sa
sa=c-ap
(15)
ea=c
(16)
現(xiàn)已求得關(guān)鍵點(diǎn)坐標(biāo)B、A、C,而點(diǎn)E、F、G可通過(guò)作輔助線(xiàn)EN,F(xiàn)P分別垂直于y軸,構(gòu)建直角三角形ΔECN與ΔEUF,如圖4所示,根據(jù)所給參數(shù):螺旋槽第一后角寬度L2、螺旋槽第二后角寬度L3、螺旋槽第一后角a、螺旋槽第二后角b、刻背深度L5;直接利用直角三角形三角函數(shù)便可依次求得點(diǎn)E、F、G;而點(diǎn)H可將點(diǎn)B以O(shè)B長(zhǎng)度為半徑繞軸心順時(shí)針旋轉(zhuǎn)120°可得。
至此,單齒的螺旋槽截面關(guān)鍵點(diǎn)B、A、C、E、F、G、H坐標(biāo)已全部計(jì)算完畢,將所有關(guān)鍵點(diǎn)繞原點(diǎn)旋轉(zhuǎn)復(fù)制120°、240°可得螺旋槽截面所有關(guān)鍵坐標(biāo)點(diǎn);將關(guān)鍵點(diǎn)之間的線(xiàn)段,將截出的每個(gè)線(xiàn)段倆個(gè)端點(diǎn),將這些端點(diǎn)以及所求出的關(guān)鍵點(diǎn)形成點(diǎn)云,點(diǎn)越多,模型繪制越精密,但是運(yùn)行速度回會(huì)大幅度減慢,本文則直接將關(guān)鍵點(diǎn)進(jìn)行連接,而其中如AB與GH不是直線(xiàn)段的圓弧段,需要采用微積分方法,將其圓弧分成若干個(gè)直線(xiàn)段,通過(guò)圓心、旋轉(zhuǎn)角度和半徑的信息,可依次求得圓弧中每一線(xiàn)段中的端點(diǎn)信息,進(jìn)而求出AB與GH圓弧的點(diǎn)信息,由此可得到整個(gè)螺旋槽截面的點(diǎn)云信息。
通過(guò)已建模的螺旋槽截面,根據(jù)螺旋運(yùn)動(dòng)的特點(diǎn),可知立銑刀螺旋槽建模是由螺旋槽截面進(jìn)行拉伸與旋轉(zhuǎn)運(yùn)動(dòng)所形成,將立銑刀螺旋槽由平行于螺旋槽截面的平面進(jìn)行切分,可知每一被平面截出的分段都都與切割平面呈螺旋角d的夾角,運(yùn)用微積分方法,沿軸線(xiàn)把螺旋槽切分成無(wú)數(shù)個(gè)微小單元體,其各相鄰單元體繞軸線(xiàn)都旋轉(zhuǎn)固定角度,將這些單元體疊加起來(lái)的,即可完成螺旋槽的三維建模。
基于上述理論,需要求得每一單元體所旋轉(zhuǎn)的角度,如圖5所示為螺旋槽刃線(xiàn)分析視圖,選取刀立銑刀刀頭B1位置為螺旋線(xiàn)的起點(diǎn)位置,通過(guò)螺旋角d延A1B1螺旋刃線(xiàn)旋轉(zhuǎn)到A1點(diǎn)螺旋槽終點(diǎn)位置,那么將螺旋槽展開(kāi)成矩形,通過(guò)式(17)求得由B1點(diǎn)到A1點(diǎn)螺旋截面繞刀具軸線(xiàn)所旋轉(zhuǎn)轉(zhuǎn)的總角度v。
v=2L7·tan(u)/L1
(17)
再通過(guò)微積分的方法可以求出每個(gè)單元體所轉(zhuǎn)的角度v1,將其每一單元體結(jié)合,便獲取到整個(gè)螺旋槽所需要的點(diǎn)云信息。
圖5 螺旋槽展開(kāi)
由于在OpenGL中模型的繪制都是以三角面片為基本圖元進(jìn)行搭建的,所以需要將所求得的螺旋槽關(guān)鍵點(diǎn)以三角面片進(jìn)行相連,其中如圖3的螺旋槽截面,可將所有的關(guān)鍵點(diǎn)與截面中心點(diǎn)O1進(jìn)行連接直接構(gòu)建出螺旋槽截面的三角網(wǎng)格;在螺旋槽網(wǎng)格化中,由于螺旋槽是柱狀形體,可將螺旋槽簡(jiǎn)化為圓柱體,把螺旋槽的每個(gè)分段以圓柱體的分段連接作為參考,然而在螺旋槽的建模中,需要考慮到每個(gè)單元體都是在上一個(gè)單元體的基礎(chǔ)上經(jīng)過(guò)一定的角度旋轉(zhuǎn)后得到,那么在螺旋槽的關(guān)鍵點(diǎn)連接中,由式(17)得到旋轉(zhuǎn)的總角度,則每個(gè)單元體都在上個(gè)單元體基礎(chǔ)上旋轉(zhuǎn)了v1,則相鄰倆個(gè)單元體的連接,如圖6所示,T1是T2的上一個(gè)單元體,ω為旋轉(zhuǎn)方向,通過(guò)關(guān)鍵點(diǎn)的索引信息構(gòu)建三角形,即倆個(gè)三角形Δ0′1′1,Δ1′12模板,將所有的相鄰單元體關(guān)鍵點(diǎn)按照索引Δ0′1′1,Δ1′12模板進(jìn)行連接,即可完成螺旋槽部分網(wǎng)格建模如圖7所示。
圖6 相鄰單元體連接
圖7 螺旋槽網(wǎng)格建模
利用vs2015可視化編程工具進(jìn)行OpenGL繪制,將所得螺旋槽三角網(wǎng)格進(jìn)行OpenGL渲染,添加光照、材質(zhì)等渲染參數(shù)。
并通過(guò)MFC設(shè)計(jì)合理的參數(shù)輸入、參數(shù)顯示以及繪制的操作界面,構(gòu)建完整的參數(shù)化建模系統(tǒng),以某型號(hào)硬質(zhì)合金圓柱立銑刀進(jìn)行參數(shù)化建模,其參數(shù)如表2所示。
表2 立銑刀螺旋槽面截面相關(guān)參數(shù)與數(shù)值
依次設(shè)置參數(shù)完畢后,如圖8所示,點(diǎn)擊“計(jì)算模型”生成立銑刀螺旋槽的三維模型,如圖9所示。
圖8 系統(tǒng)參數(shù)輸入
圖9 系統(tǒng)運(yùn)行結(jié)果
不同螺旋槽槽深(1.8mm,2.4mm)的模型如圖10所示。
(a)1.8mm螺旋槽截面 (b)2.4mm螺旋槽截面圖10 螺旋槽截面對(duì)比
本文通過(guò)詳細(xì)分析立銑刀螺旋槽的結(jié)構(gòu)特點(diǎn),以面向立銑刀工程圖進(jìn)行立銑刀螺旋槽特征設(shè)計(jì),研究商業(yè)建模軟件的建模原理,提出了關(guān)鍵點(diǎn)建模的方法,建立了立銑刀螺旋槽的數(shù)學(xué)模型,并完成模型的三角網(wǎng)格化,在Visual Studio2015平臺(tái)上,將模型網(wǎng)格進(jìn)行OpenGL渲染,搭建出立銑刀螺旋槽三維參數(shù)化建模系統(tǒng)。建模實(shí)例證明該系統(tǒng)能夠精確的完成立銑刀螺旋槽的三維參數(shù)化建模,系統(tǒng)運(yùn)行穩(wěn)定可靠,操作方便快捷,并具有獨(dú)立的技術(shù)體系,可以實(shí)現(xiàn)刀具的設(shè)計(jì)與制造的市場(chǎng)推廣與相關(guān)的研究擴(kuò)展,并為類(lèi)似的機(jī)械設(shè)計(jì)建模提供了參考。
[參考文獻(xiàn)]
[1] 米蓉. 立銑刀三維參數(shù)化設(shè)計(jì)系統(tǒng)研發(fā)[D]. 成都:西南交通大學(xué),2011.
[2] 趙鑫,卓勇,展慧嫻,等.整體硬質(zhì)合金刀具參數(shù)化直接建模的研究與實(shí)現(xiàn)[J].機(jī)電工程,2014,31(6):725-728.
[3] 熊烽,賓鴻贊.復(fù)雜形狀刀具設(shè)計(jì)的三維可視化[J].工具技術(shù),2002(4):18-21.
[4] 李宏德.立銑刀優(yōu)化設(shè)計(jì)[J].制造技術(shù)與機(jī)床,2007(5):25-27.
[5] 夏文勝,趙先鋒,高飛,等.錐度球頭立銑刀磨削加工數(shù)學(xué)模型研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2016(1):122-126.
[6] 趙先鋒.立銑刀螺旋槽數(shù)學(xué)模型及刀具切削性能仿真分析[D]. 貴州:貴州大學(xué), 2013.
[7] 董元平,璩柏青,張潔,等. 運(yùn)用逆向工程方法與OpenGL創(chuàng)建三維曲面[J]. 計(jì)算機(jī)仿真, 2007,24(9):168-171.
[8] 晏海平, 吳祿慎, 陳華偉. 基于VC和OpenGL的三維點(diǎn)云處理軟件系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2014, 31(6):177-180.
[9] 王蘭美, 趙繼成, 秦華東. OpenGL及其在VC++下的開(kāi)發(fā)應(yīng)用[C]. 中國(guó)工程圖學(xué)學(xué)會(huì)2006年計(jì)算機(jī)圖學(xué)、理論圖學(xué)等專(zhuān)委會(huì)綜合學(xué)術(shù)會(huì)議, 2006.
[10] 王蘭美, 趙繼成, 秦華東. OpenGL及其在VC++下的開(kāi)發(fā)應(yīng)用[J]. 武漢大學(xué)學(xué)報(bào)(工學(xué)版), 2006, 39(4):62-65.
[11] 劉建寧,李占鋒,李大鵬.整體立銑刀參數(shù)化建模分析與研究[J].現(xiàn)代制造工程,2015(1):90-93.
[12] Tandon P, rajik K M.Three dimensional modeling and finiteelement simulation of a generic End mill [J].Computer aided design, 2009,41 (2):106-114.
[13] Kim, J H, park J W, Ko t j.End mill design and machiningvia cutting simulation [J].Computer aided design, 2008,40 (3):324-333.