版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計(jì)</b></p><p> 課程名稱 數(shù)控技術(shù)課程設(shè)計(jì) </p><p> 題目名稱 _數(shù)控中非圓曲線逼近的算法實(shí)現(xiàn) </p><p> 學(xué)生學(xué)院 _ _ 機(jī)電工程學(xué)院 </p><p> 專業(yè)班級 機(jī)械設(shè)計(jì)制造及其自動(dòng)化
2、 </p><p><b> 學(xué) 號 </b></p><p><b> 學(xué)生姓名 </b></p><p> 指導(dǎo)教師 _ </p><p> 成績評定 </p>
3、<p> 教師簽名 </p><p> 2012 年 07 月 05 日</p><p> 數(shù)控技術(shù)課程設(shè)計(jì)任務(wù)書</p><p><b> 一、課程設(shè)計(jì)的內(nèi)容</b></p><p> 用計(jì)算機(jī)高級編程語言(如VB,VC++等)來實(shí)現(xiàn)非圓曲
4、線的逼近,可任選(1)直線逼近(如等間距法、等弦長法、等誤差法等)、或(2)圓弧逼近。要求在滿足允許誤差的前提下,使得逼近的直線段或圓弧段的數(shù)量最少(即最優(yōu)解), 根據(jù)加工曲線輪廓自動(dòng)生成刀具中心軌跡,自動(dòng)生成加工NC代碼。</p><p> 二、課程設(shè)計(jì)的要求與數(shù)據(jù)</p><p><b> 具體的要求如下:</b></p><p>
5、(1)列出一般的直線或圓弧逼近的算法(流程圖)。</p><p> ?。?)列出改進(jìn)的直線或圓弧逼近的算法(流程圖)——即優(yōu)化算法。比較改進(jìn)前與改進(jìn)后的兩種算法結(jié)果。</p><p> ?。?)針對給定的某一由非圓曲線所構(gòu)成的平面輪廓,根據(jù)指定的走刀方向、起刀點(diǎn),自動(dòng)生成CNC代碼。</p><p> (4)有刀具自動(dòng)補(bǔ)償功能,根據(jù)給定的補(bǔ)償量和進(jìn)給方向自動(dòng)計(jì)算刀
6、具中心軌跡,有過切報(bào)警功能。</p><p> ?。?)在屏幕上顯示該非圓曲線所構(gòu)成的平面輪廓。根據(jù)給定的進(jìn)給速度能模擬加工過程,并在屏幕上留下刀具所走中心軌跡。</p><p> 非圓曲線選擇(根據(jù)組員最大最小學(xué)號選擇,選擇方法:若本組學(xué)號最小的同學(xué)學(xué)號為xxxxxxa,學(xué)號最大的同學(xué)學(xué)號為yyyyyyb,取p=a%8+1, q=b%8+1,若q==p,則q=p+1; 則該組選擇的非圓
7、曲線組合為第p組和第q組。 注:’%’是取余運(yùn)算):</p><p><b> 1:漸開線凸輪;</b></p><p><b> 2:雙曲線</b></p><p><b> 3:橢圓曲線</b></p><p><b> 4:正弦線</b>&l
8、t;/p><p><b> 5:星形線</b></p><p><b> 6:心臟線</b></p><p><b> 7:拋物線</b></p><p><b> 8:外擺線</b></p><p> 三、課程設(shè)計(jì)應(yīng)完成的工
9、作</p><p> 每組學(xué)生應(yīng)在規(guī)定時(shí)間內(nèi),獨(dú)立完成所選題目。運(yùn)用VB或其它編程語言,編寫計(jì)算機(jī)軟件在WINDOWS實(shí)現(xiàn)數(shù)控裝置的計(jì)算機(jī)仿真。要求清楚地分析問題、提出算法、確定人機(jī)界面、列出流程圖,最后用程序驗(yàn)證,完成軟件測試,并且提交程序說明書。</p><p> 要求用編寫計(jì)算機(jī)軟件的方法解決典型非圓曲線的CAM問題??梢匀芜x用自己熟悉的一種編程語言,要求清楚地分析問題、提出算法
10、、列出流程圖,最后用程序驗(yàn)證,并且提交程序說明書。</p><p> 四、課程設(shè)計(jì)進(jìn)程安排</p><p> 五、應(yīng)收集的資料及主要參考文獻(xiàn)</p><p> 1《機(jī)床設(shè)計(jì)手冊》第三分冊</p><p> 2廖效果.數(shù)字控制機(jī)床.武漢:華中理工大學(xué)出版社.1992.9</p><p> 3廖效果.數(shù)控技術(shù).
11、武漢:湖北科學(xué)技術(shù)出版社.2000.7</p><p> 4劉又午.數(shù)字控制機(jī)床.北京:機(jī)械工業(yè)出版社</p><p> 5龔浦泉.機(jī)床電氣控制.重慶:重慶大學(xué)出版社</p><p> 6 譚浩強(qiáng).Basic語言結(jié)構(gòu)化程序設(shè)計(jì)教程.北京:中國科學(xué)技術(shù)出版社.1990</p><p> 7 楊林,李繼良. Visual Basic編程高
12、手.北京:北京大學(xué)出版社.2000</p><p> 8 一組專用凸輪的計(jì)算機(jī)輔助設(shè)計(jì).機(jī)械工程師1998,(4): p58-59</p><p> 9 凸輪曲線的快速畫法.機(jī)械工程師1998,(6): p22-23</p><p> 10 平面凸輪機(jī)構(gòu)CAD系統(tǒng)的研究與開發(fā).機(jī)械設(shè)計(jì)與制造2000,(5):p12-13</p><p>
13、; 11 圓柱非圓曲線槽凸輪的數(shù)控加工.制造技術(shù)與機(jī)床2000,(8):p34</p><p> 12 圓柱凸輪的參數(shù)化設(shè)計(jì)及數(shù)控加工.精密制造及自動(dòng)化2001,11: p28</p><p> 13 參數(shù)化凸輪輪廓轉(zhuǎn)換及NC代碼自動(dòng)生成.機(jī)床與液壓2001,6, p29~31</p><p> 發(fā)出任務(wù)書日期:2012年 5月 28日 </
14、p><p> 計(jì)劃完成日期: 2012年 7月 6 日 </p><p><b> 指導(dǎo)教師簽名:</b></p><p> 基層教學(xué)單位責(zé)任人簽章:</p><p><b> 主管院長簽章:</b></p><p><b> 摘 要</
15、b></p><p> 基于Visual Basic 6.0編程軟件平臺(tái),使用直線逼近算法實(shí)現(xiàn)設(shè)計(jì)模擬橢圓曲線和星形線曲線兩種非圓曲線輪廓的加工過程。根據(jù)所編的等間距算法和等誤差算法的流程圖,初步使用等間距法來實(shí)現(xiàn)直線逼近兩種非圓曲線的過程,然后使用節(jié)點(diǎn)數(shù)較少的等誤差法來優(yōu)化直線逼近非圓曲線的過程。利用Visual Basic 6.0編程語言,根據(jù)指定的走刀方向包括順時(shí)針和逆時(shí)針,指定的走刀點(diǎn),實(shí)現(xiàn)非圓曲
16、線的模擬加工過程,根據(jù)刀具補(bǔ)償量和進(jìn)給方向在屏幕上留下刀具所走中心軌跡,根據(jù)軟件計(jì)算出的點(diǎn)坐標(biāo)能夠自動(dòng)生出CNC代碼,并能夠保存在電腦里面。</p><p> 關(guān)鍵詞:直線逼近,Visual Basic 6.0,非圓曲線,編程</p><p><b> 目 錄</b></p><p> 1 前言…………………………………………………
17、…………………………… 1</p><p> 2 非圓曲線逼近的關(guān)鍵…………………………………………………………… 1</p><p> 2.1 算法的選擇………………………………………………………………… 1</p><p> 2.2 算法實(shí)現(xiàn)的關(guān)鍵…………………………………………………………… 1</p><p> 3 非圓曲線逼
18、近的算法實(shí)現(xiàn)……………………………………………………… 1</p><p> 3.1 算法的流程圖……………………………………………………………… 1</p><p> 3.2 算法的解析………………………………………………………………… 4</p><p> 4 軟件開發(fā)與運(yùn)行………………………………………………………………… 7</p>&l
19、t;p> 4.1 系統(tǒng)界面…………………………………………………………………… 7</p><p> 4.2 軟件運(yùn)行…………………………………………………………………… 8</p><p> 4.3 運(yùn)行分析…………………………………………………………………… 9</p><p> 5 總結(jié)………………………………………………………………………………
20、 9</p><p> 參考文獻(xiàn)…………………………………………………………………………… 11</p><p> 附錄………………………………………………………………………………… 12</p><p><b> 1 前言</b></p><p> 數(shù)控機(jī)床是一種依靠數(shù)字化的信息來實(shí)現(xiàn)自動(dòng)控制的高度自動(dòng)化機(jī)床
21、,它具有高效率、加工精度高和加工質(zhì)量穩(wěn)定等優(yōu)點(diǎn),這使得數(shù)控機(jī)床在機(jī)械制造業(yè)中得到了日益廣泛的應(yīng)用。當(dāng)前我國的經(jīng)濟(jì)型數(shù)控機(jī)床,一般只具有直線插補(bǔ)和圓弧插補(bǔ)功能,并不具備拋物線、橢圓等非圓曲線的插補(bǔ)功能。因此,當(dāng)我們需要數(shù)控加工非圓曲線的輪廓時(shí),就必須用直線或圓弧段去逼近非圓曲線。</p><p> 對非圓曲線的逼近有直線逼近、圓弧逼近,分別可由G01、G02、G03完成加工,其中直線逼近較為簡單,但逼近節(jié)點(diǎn)數(shù)多,
22、導(dǎo)致數(shù)控程序往往過多,而圓弧逼近具有高效性,但計(jì)算過于復(fù)雜。直線逼近的方法有等間距直線逼近、等弦長直線逼近和等誤差直線逼近,圓弧逼近的方法有曲率圓法、三點(diǎn)圓法和相切圓法。</p><p> 對于一個(gè)已知曲線,它的節(jié)點(diǎn)數(shù)主要取決于所用逼近線段的形狀(直線段還是圓弧段)、曲線方程的特性和允許的逼近誤差。</p><p> 2 非圓曲線逼近的關(guān)鍵</p><p>&l
23、t;b> 2.1 算法的選擇</b></p><p> 對非圓曲線進(jìn)行逼近,有不同的實(shí)現(xiàn)方法,包括直線逼近和圓弧逼近。方法不同,最終得到的節(jié)點(diǎn)數(shù)也有所不同,因此選擇好的一個(gè)算法對提高加工的效率和降低加工成本有著重要的作用。在這次課程設(shè)計(jì)中,我們選擇的算法是等間距直線逼近,并用等誤差直線逼近作為優(yōu)化算法。</p><p> 2.2 算法實(shí)現(xiàn)的關(guān)鍵</p>
24、<p> 算法實(shí)現(xiàn)需要求出曲線的節(jié)點(diǎn),而要求曲線的節(jié)點(diǎn)得先求出直線段與所逼近的曲線之間的最大逼近誤差,而最大逼近誤差的計(jì)算點(diǎn)就在曲線上某一點(diǎn)的切線斜率與直線段斜率相等的切點(diǎn)處,故關(guān)鍵問題是求出該切點(diǎn)。一旦求出了該切點(diǎn),就可以求出逼近時(shí)的最大誤差,用于與允許誤差作比較。另外,由于此次課程設(shè)計(jì)是對任意非圓曲線進(jìn)行逼近,因此求導(dǎo)數(shù)也成了一個(gè)關(guān)鍵的問題。</p><p> 3 非圓曲線逼近的算法實(shí)現(xiàn)<
25、;/p><p> 3.1 算法的流程圖</p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p&
26、gt; 圖1 等間距直線逼近的流程</p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖2 等誤差直
27、線逼近的流程圖</p><p><b> 3.2 算法的解析</b></p><p> 3.2.1 等間距直線逼近</p><p> 等間距直線逼近是最簡單的方法,已知橢圓方程,給定第一點(diǎn)(x(0),y(0)),間距步長Δx=0.1,求出,將代入即可求得一系列。、即為每個(gè)線段的終點(diǎn)坐標(biāo),并以該坐標(biāo)值編制直線程序段(圖3)。</p&
28、gt;<p> 圖3 等間距直線逼近</p><p> 根據(jù)M( x(0) , y(0) )、N( x(1) , y(1) )兩節(jié)點(diǎn)的坐標(biāo)可求得如圖3所示的逼近誤差,方法如下:</p><p> MN方程:y=kx+c,則直線MN的斜率為</p><p><b> ?。?-1)</b></p><p>
29、; 將M( x(0) , y(0) )代入MN方程:y=kx+c,求得</p><p> c=y(0)-kx(0) (3-2)</p><p> 利用橢圓參數(shù)方程x=a Cos(i),y=b Sin(i),求出橢圓曲線上的切線斜率為k的切點(diǎn)坐標(biāo)(x(2),y(2)),對參數(shù)方程進(jìn)行求導(dǎo)得切點(diǎn)對應(yīng)的參數(shù)弧度為</p><p>&l
30、t;b> (3-3)</b></p><p> 從而求出(x(2),y(2))。</p><p> 聯(lián)立式(3-1)、(3-2)、(3-3)求出逼近誤差為</p><p><b> ?。?-4)</b></p><p> 如果計(jì)算出來的逼近誤差w小于或等于輸入的允許誤差v,則滿足誤差要求,即可進(jìn)
31、行直線逼近;否則令Δx為原來的一半,且返回重新計(jì)算逼近誤差再次比較,直到滿足誤差要求為止。</p><p> 等間距直線逼近的流程圖如圖1所示,星形線的等間距直線逼近算法與橢圓計(jì)算方法相同,參考橢圓計(jì)算過程即可。</p><p> 3.2.2 等誤差直線逼近</p><p> 等間距直線逼近雖然計(jì)算簡單,但由于取定值Δx應(yīng)保證曲線曲率最大處的逼近誤差小于允許值
32、,所以程序可能過多。因此,在選擇優(yōu)化算法時(shí),我們采用的是等誤差直線逼近的節(jié)點(diǎn)計(jì)算法,而且對于曲率變化較大的曲線,用等誤差法求得的節(jié)點(diǎn)數(shù)最少,從而輸出的NC代碼也大大減少,等誤差算法計(jì)算如下:</p><p> 等誤差直線去逼近曲線,就是使所有逼近線段的誤差相等,如圖4。</p><p> 圖4 等誤差直線逼近</p><p> 橢圓參數(shù)方程為x=a Cos(i
33、),y=b Sin(i),A點(diǎn)坐標(biāo)(x(0) , y(0)),T點(diǎn)坐標(biāo)(x(1) , y(1)),B點(diǎn)坐標(biāo)(x(2) , y(2))。</p><p> ?。?)確定所有逼近線段的誤差的圓方程,即以起點(diǎn)A(x(0) , y(0))為圓心,為半徑作圓; </p><p> ?。?)確定等誤差圓與曲線公切線PT的斜率k:</p><p> 以A點(diǎn)為起點(diǎn),利用參數(shù)方程x
34、=a Cos(i),y=b Sin(i),增大弧度i從而使橫坐標(biāo)變大。從而得到下一個(gè)點(diǎn)T坐標(biāo)(x(1) , y(1)),弧度i增大的步長為Δi=0.001*π。對橢圓方程進(jìn)行求導(dǎo),利用T點(diǎn)坐標(biāo)求出曲線切線PT斜率k:</p><p><b> (3-5)</b></p><p> PT直線方程為y=kx+c,代入點(diǎn)T求得:</p><p>
35、 c=y(1)-kx(1) (3-6)</p><p> 聯(lián)立2式(3-5)、(3-6)和點(diǎn)A(x(0) , y(0))求得A點(diǎn)到直線PT距離:</p><p><b> ?。?-7)</b></p><p> 比較距離w與等誤差圓半徑是否相等,若相等,則直線PT為等誤差圓與曲線兩者的公切線;若w<
36、;,則返回以上算法令Δi增大一倍重新計(jì)算距離w直到w=;若w>,則返回以上算法令Δi變?yōu)樵瓉硪话胫匦掠?jì)算距離w直到w=。</p><p> ?。?)求B點(diǎn)坐標(biāo)(x(2) , y(2))。使AB弦的斜率為k,即使AB平行PT,設(shè)AB的方程為y-y(0)=k(x-x(0)),聯(lián)立式(3-5)公切線PT的斜率k和橢圓方程可求得:</p><p><b> (3-8)</b
37、></p><p><b> 其中</b></p><p> 進(jìn)而求出 y(2)=k(x(2)-x(0))+y(0) (3-9)</p><p> ?。?)按以上步驟順次求得其他各節(jié)點(diǎn)坐標(biāo)。</p><p> 星形線等誤差逼近算法與橢圓相似,參考橢圓計(jì)算
38、方法即可求得。</p><p><b> 4 軟件開發(fā)與運(yùn)行</b></p><p><b> 4.1 系統(tǒng)界面</b></p><p> 本次課程設(shè)計(jì)使用Visual Basic 6.0軟件,設(shè)計(jì)了兩個(gè)窗口為一體的可執(zhí)行程序,其中主界面可選擇所需加工的非圓曲線函數(shù)、走刀方向、刀補(bǔ)、起刀點(diǎn)、NC代碼坐標(biāo)以及相關(guān)的加工
39、參數(shù),具有等間距直線逼近和等誤差直線逼近兩種逼近方法,并且對這兩種方法進(jìn)行比較分析。通過點(diǎn)擊“生成NC代碼”按鈕,可以進(jìn)入圖6的生成NC代碼的窗口,可以對NC代碼進(jìn)行保存,可以返回主界面,也可以退出該程序。</p><p><b> 圖5 主界面</b></p><p> 圖6 生成NC代碼窗口</p><p><b> 4.2
40、 軟件運(yùn)行</b></p><p> 以橢圓內(nèi)輪廓加工、順時(shí)針走刀方向?yàn)槔f明等間距算法和等誤差算法直線逼近非圓曲線的刀具軌跡,并比較兩者的節(jié)點(diǎn)數(shù)和生成NC代碼程序的長度,設(shè)允許誤差為0.01,選擇項(xiàng)和輸入?yún)?shù)如圖7所示。 </p><p> 圖7 加工參數(shù)的選擇與輸入</p><p> 單擊“繪原圖” 、“等間距逼近”按鈕,運(yùn)行結(jié)果的刀具軌跡如圖
41、8所示,等間距逼近所用的線段數(shù)為5920,生成的NC代碼如圖9所示。</p><p> 圖8 等間距逼近的刀具軌跡 圖9 等間距逼近的NC代碼</p><p> 單擊“繪原圖” 、“等誤差逼近”按鈕,運(yùn)行結(jié)果的刀具軌跡如圖10所示,等誤差逼近所用的線段數(shù)為666,生成的NC代碼如圖11所示。</p><p> 圖10 等誤差逼近
42、的刀具軌跡 圖11 等誤差逼近的NC代碼</p><p><b> 4.3 運(yùn)行分析</b></p><p> 從以上運(yùn)行結(jié)果可以看出,非圓曲線的等間距直線逼近算法雖然簡單,但逼近處理后的直線段較多,從經(jīng)濟(jì)效益上講,此方法較差。而由等誤差直線逼近處理后,可以得到相對較少的直線段,經(jīng)濟(jì)效益高。</p><p>&
43、lt;b> 5 總結(jié)</b></p><p> 這次的課程設(shè)計(jì),在剛開始做之前,我們組的每個(gè)人都感到了壓力,因?yàn)楫吘惯@次是要利用VB或VC編程語言結(jié)合數(shù)控技術(shù)課程內(nèi)容來完成課程設(shè)計(jì),而且時(shí)間也并不充足。在剛開始接觸題目時(shí)候,沒有絲毫的頭緒,借住前人的成果,理解前人所做的東西,來逐步摸清我們課程設(shè)計(jì)真正所要做的工作。</p><p> 課堂上老師講直線逼近非圓曲線的數(shù)
44、學(xué)處理時(shí)大概講了三種的方法:等間距、等弦長和等誤差,在我們理解了三種方法之后,確定使用等間距為初步算法,等誤差為優(yōu)化算法,因?yàn)榈乳g距計(jì)算簡單,但程序過多,而等誤差計(jì)算復(fù)雜,但程序和節(jié)點(diǎn)數(shù)都相對少。確定算法之后,我們遇到的問題是如何地在Visual Basic 6.0編程軟件平臺(tái)去實(shí)現(xiàn)直線逼近橢圓和星形線,VB編程語言我們大致都弄懂,但是具體操作還是不明白。一開始我們使用橢圓和星形線的參數(shù)方程進(jìn)行數(shù)學(xué)處理,實(shí)現(xiàn)過程很容易,而且不用分每一個(gè)
45、象限去討論,但是又遇到了另一個(gè)問題,使用參數(shù)方程計(jì)算出來的逼近誤差太大了,遠(yuǎn)大于日常所要求的加工誤差,所以還是以失敗告終。通過查閱高數(shù)知識(shí)和數(shù)控技術(shù)課本還有其他的一些參考資料,借住高數(shù)知識(shí)所提供的數(shù)學(xué)方法,我們使用標(biāo)準(zhǔn)方程去進(jìn)行數(shù)學(xué)處理,雖然要考慮每一個(gè)象限,程序也由此變得繁瑣,但是最終還是實(shí)現(xiàn)了我們之前的設(shè)想,計(jì)算出來的逼近誤差最終可以變到0.01甚至更小。有了等間距直線逼近的成功基礎(chǔ),在做等誤差算法直線逼近的時(shí)候,只需理解好等誤差數(shù)
46、學(xué)計(jì)算的方法即可完成逼近,也通過比較,等誤差法確實(shí)比等間距法所走的步數(shù)少一倍以上,符合了</p><p> 通過這次的課程設(shè)計(jì),把VB語言和數(shù)控仿真結(jié)合起來,加深了對非圓曲線加工的算法及其實(shí)現(xiàn)過程的理解,也提高了我們查閱資料和獨(dú)自解決問題的能力,在遇到問題時(shí)候,我們組成員的互相討論,迸發(fā)出來的學(xué)習(xí)激情,也提高了我們課程設(shè)計(jì)的積極性,給我們不僅帶來了知識(shí)的增長和能力的提高,而且?guī)砹烁嗟臉啡ぁ?lt;/p>
47、;<p> 參 考 文 獻(xiàn)</p><p> [1] 廖效果.數(shù)字控制機(jī)床[M].武漢:華中理工大學(xué)出版社,1992.9.</p><p> [2] 廖效果.數(shù)控技術(shù)[M].武漢:湖北科學(xué)技術(shù)出版社,2000.7.</p><p> [3] 劉又午.數(shù)字控制機(jī)床[M].北京:機(jī)械工業(yè)出版社.</p><p> [
48、4] 龔浦泉.機(jī)床電氣控制[M].重慶:重慶大學(xué)出版社.</p><p> [5] 譚浩強(qiáng).Basic語言結(jié)構(gòu)化程序設(shè)計(jì)教程[M].北京:中國科學(xué)技術(shù)出版社,1990.</p><p> [6] 楊林,李繼良.Visual Basic編程高手[M].北京:北京大學(xué)出版社,2000.</p><p> [7] 一組專用凸輪的計(jì)算機(jī)輔助設(shè)計(jì)[J].機(jī)械工程師,19
49、98,(4): 58-59.</p><p> [8] 凸輪曲線的快速畫法[J].機(jī)械工程師,1998,(6): 22-23.</p><p> [9] 平面凸輪機(jī)構(gòu)CAD系統(tǒng)的研究與開發(fā)[J].機(jī)械設(shè)計(jì)與制造,2000,(5):12-13.</p><p> [10] 圓柱非圓曲線槽凸輪的數(shù)控加工[J].制造技術(shù)與機(jī)床,2000,(8):34.</p&
50、gt;<p> [11] 圓柱凸輪的參數(shù)化設(shè)計(jì)及數(shù)控加工[J].精密制造及自動(dòng)化,2001,11: 28.</p><p> [12] 參數(shù)化凸輪輪廓轉(zhuǎn)換及NC代碼自動(dòng)生成[J].機(jī)床與液壓,2001,6, 29-31.</p><p> 附錄 VB主要源程序</p><p> Dim daolu As Integer, daobu As I
51、nteger</p><p> Dim X(5) As Double, Y(5) As Double</p><p> Dim qidaox As Single, qidaoy As Single, qidaoz As Single</p><p> Dim quxian As Integer, pi As Double, zuobiao As Integer
52、‘定義變量</p><p> Private Sub Command1_Click()</p><p> Picture1.Cls</p><p> Text8.Text = ""</p><p> Text9.Text = ""</p><p> End Sub‘
53、清屏繪圖區(qū)域</p><p> Private Sub Command2_Click()‘繪制坐標(biāo)系</p><p> Picture1.DrawStyle = vbSolid</p><p> Picture1.DrawWidth = 1</p><p> Picture1.Scale (-50, 50)-(50, -50)<
54、;/p><p> Picture1.Line (-50, 0)-(50, 0)</p><p> Picture1.Line -(48, 2)</p><p> Picture1.Line (50, 0)-(48, -2)</p><p> Picture1.Print "X"</p><p>
55、 Picture1.Line (0, -50)-(0, 50)</p><p> Picture1.Line -(-2, 48)</p><p> Picture1.Line (0, 50)-(2, 48)</p><p> Picture1.Print "Y"</p><p> Picture1.Current
56、X = 2</p><p> Picture1.CurrentY = -2</p><p> Picture1.Print "O"</p><p> pi = 3.1415926</p><p> Picture1.CurrentX = a</p><p> Picture1.Curren
57、tY = 0</p><p> If quxian = 1 Then</p><p> a = Val(Text1.Text)</p><p> b = Val(Text2.Text)</p><p> For i = 0 To 2 * pi Step 0.001‘點(diǎn)命令繪制非圓曲線原圖</p><p>
58、Picture1.PSet (a * Cos(i), b * Sin(i))</p><p><b> Next</b></p><p><b> End If</b></p><p> If quxian = 2 Then</p><p> a = Val(Text1.Text)</
59、p><p> For i = 0 To 2 * pi Step 0.001</p><p> Picture1.PSet (a * Cos(i) ^ 3, a * Sin(i) ^ 3)</p><p><b> Next</b></p><p><b> End If</b></p>
60、;<p><b> End Sub</b></p><p> Private Sub Command3_Click()‘等間距直線逼近</p><p><b> s = 0.1</b></p><p> pi = 3.1415926</p><p><b> o
61、= 4</b></p><p> a = Val(Text1.Text)‘輸入加工參數(shù)</p><p> b = Val(Text2.Text)</p><p> v = Val(Text3.Text)</p><p> n = Val(Text4.Text)</p><p> F = Val(
62、Text5.Text)</p><p> r = Val(Text6.Text)</p><p> qidaox = Val(Text10.Text)</p><p> qidaoy = Val(Text11.Text)</p><p> qidaoz = Val(Text12.Text)</p><p>
63、d = Val(Text13.Text)</p><p> Picture1.DrawStyle = vbDash</p><p> Picture1.DrawWidth = 1</p><p> If quxian = 1 Then‘畫橢圓</p><p> If daolu = 1 Then‘順時(shí)針走刀方向</p>
64、<p> If daobu = 1 Then</p><p><b> e = 1</b></p><p><b> a = a + r</b></p><p><b> b = b + r</b></p><p><b> End If&l
65、t;/b></p><p> If daobu = 2 Then</p><p><b> e = 2</b></p><p><b> a = a - r</b></p><p><b> b = b - r</b></p><p>&l
66、t;b> End If</b></p><p><b> X(0) = a</b></p><p><b> Y(0) = 0</b></p><p> Picture1.PSet (qidaox, qidaoy), vbRed</p><p> Picture1.Lin
67、e -(X(0), Y(0)), vbRed</p><p> Picture1.DrawStyle = vbSolid</p><p> Picture1.PSet (X(0), Y(0)), vbRed</p><p> p = Format(X(0), "##0.00")</p><p> q = Forma
68、t(Y(0), "##0.00")</p><p> If zuobiao = 1 Then</p><p> Form2.Text1.Text = "N1 G90 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrL
69、f</p><p> Form2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLf</p><p> Form2.Text1.Text = Form2.Text1.Text & "N3 Z-" &
70、 d & vbCrLf</p><p><b> Else</b></p><p> Form2.Text1.Text = "N1 G91 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLf</p&
71、gt;<p> Form2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLf</p><p> Form2.Text1.Text = Form2.Text1.Text & "N3 Z-" & d + 30
72、& vbCrLf</p><p><b> End If</b></p><p><b> line1:</b></p><p> Do While X(0) >= (-a + 0.0001)</p><p> X(1) = X(0) - s</p><p&
73、gt; Y(1) = -(b * Sqr(Abs(a ^ 2 - X(1) ^ 2))) / a</p><p> If X(1) <> X(0) And Y(1) <> Y(0) Then</p><p> k = (Y(1) - Y(0)) / (X(1) - X(0))</p><p> If k > 0 Then<
74、/p><p> j = Atn(-b / (a * k))</p><p><b> End If</b></p><p> If k < 0 Then</p><p> j = Atn(-b / (a * k)) + pi</p><p><b> End If</b
75、></p><p> X(2) = a * Cos(j)</p><p> Y(2) = b * Sin(j)</p><p> w = Abs(k * X(2) - Y(2) + Y(0) - k * X(0)) / (Sqr(k ^ 2 + 1))</p><p><b> End If</b><
76、/p><p> If w <= v Then</p><p> Picture1.Line -(X(1), Y(1)), vbRed</p><p><b> Else</b></p><p><b> s = s / 2</b></p><p> GoTo li
77、ne1</p><p><b> End If</b></p><p> If zuobiao = 1 Then</p><p> p = Format(X(1), "##0.00")</p><p> q = Format(Y(1), "##0.00")</p>
78、;<p> If o = 4 Then</p><p> Form2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLf</p><p><b>
79、; End If</b></p><p> If o >= 5 Then</p><p> Form2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLf<
80、/p><p><b> End If</b></p><p><b> Else</b></p><p> If o = 4 Then</p><p> p = Format(X(1) - X(0), "##0.00")</p><p> q = F
81、ormat(Y(1) - Y(0), "##0.00")</p><p> Form2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLf</p><p&
82、gt;<b> End If</b></p><p> If o >= 5 Then</p><p> p = Format(X(1) - X(0), "##0.00")</p><p> q = Format(Y(1) - Y(0), "##0.00")</p><p&
83、gt; Form2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLf</p><p><b> End If</b></p><p><b> E
84、nd If</b></p><p><b> o = o + 1</b></p><p> X(0) = X(1)</p><p> Y(0) = Y(1)</p><p><b> Loop</b></p><p> Private Sub Comma
85、nd4_Click()‘等誤差直線逼近</p><p><b> s = 0.001</b></p><p> pi = 3.1415926</p><p><b> o = 4</b></p><p> a = Val(Text1.Text)‘輸入加工參數(shù)</p><
86、;p> b = Val(Text2.Text)</p><p> v = Val(Text3.Text)</p><p> n = Val(Text4.Text)</p><p> F = Val(Text5.Text)</p><p> r = Val(Text6.Text)</p><p> qi
87、daox = Val(Text10.Text)</p><p> qidaoy = Val(Text11.Text)</p><p> qidaoz = Val(Text12.Text)</p><p> d = Val(Text13.Text)</p><p> i = Val(Text7.Text)</p><
88、p> Picture1.DrawStyle = vbDash</p><p> Picture1.DrawWidth = 1</p><p> If quxian = 1 Then‘畫橢圓</p><p> If daolu = 1 Then‘順時(shí)針走刀方向</p><p> If daobu = 1 Then</p
89、><p><b> e = 1</b></p><p><b> a = a + r</b></p><p><b> b = b + r</b></p><p><b> End If</b></p><p> If dao
90、bu = 2 Then</p><p><b> e = 2</b></p><p><b> a = a - r</b></p><p><b> b = b - r</b></p><p><b> End If</b></p>
91、<p> X(0) = a * Cos(i)</p><p> Y(0) = b * Sin(i)</p><p> Picture1.PSet (qidaox, qidaoy), vbGreen</p><p> Picture1.Line -(X(0), Y(0)), vbGreen</p><p> Picture1
92、.DrawStyle = vbSolid</p><p> Picture1.PSet (X(0), Y(0)), vbGreen</p><p> p = Format(X(0), "##0.00")</p><p> q = Format(Y(0), "##0.00")</p><p> I
93、f zuobiao = 1 Then</p><p> Form2.Text1.Text = "N1 G90 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLf</p><p> Form2.Text1.Text = Form2.Te
94、xt1.Text & "N2 X" & p & " Y" & q & vbCrLf</p><p> Form2.Text1.Text = Form2.Text1.Text & "N3 Z-" & d & vbCrLf</p><p><b> Else
95、</b></p><p> Form2.Text1.Text = "N1 G91 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLf</p><p> Form2.Text1.Text = Form2.Text1.Text
96、 & "N2 X" & p & " Y" & q & vbCrLf</p><p> Form2.Text1.Text = Form2.Text1.Text & "N3 Z-" & d + 30 & vbCrLf</p><p><b> End If&
97、lt;/b></p><p><b> line1:</b></p><p> Do While i > 0</p><p> i = i - s * pi</p><p> X(1) = a * Cos(i)</p><p> Y(1) = b * Sin(i)</p
98、><p> If Y(1) <> 0 Then</p><p> k = -(b ^ 2 * X(1)) / (a ^ 2 * Y(1))</p><p> w = Abs(k * X(0) - Y(0) + Y(1) - k * X(1)) / (Sqr(k ^ 2 + 1))</p><p><b> End I
99、f</b></p><p> If (w - v) >= 0.0001 Then</p><p> Picture1.Line -(X(1), Y(1)), vbGreen</p><p><b> Else</b></p><p> s = s + 0.001</p><p
100、> GoTo line1</p><p><b> End If</b></p><p> If zuobiao = 1 Then</p><p> p = Format(X(1), "##0.00")</p><p> q = Format(Y(1), "##0.00&qu
101、ot;)</p><p> If o = 4 Then</p><p> Form2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLf</p><
102、p><b> End If</b></p><p> If o >= 5 Then</p><p> Form2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q &am
103、p; vbCrLf</p><p><b> End If</b></p><p><b> Else</b></p><p> If o = 4 Then</p><p> p = Format(X(1) - X(0), "##0.00")</p><
104、;p> q = Format(Y(1) - Y(0), "##0.00")</p><p> Form2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLf</
105、p><p><b> End If</b></p><p> If o >= 5 Then</p><p> p = Format(X(1) - X(0), "##0.00")</p><p> q = Format(Y(1) - Y(0), "##0.00")</
106、p><p> Form2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLf</p><p><b> End If</b></p><p>
107、;<b> End If</b></p><p><b> o = o + 1</b></p><p> X(0) = X(1)</p><p> Y(0) = Y(1)</p><p><b> Loop</b></p><p> Form
108、2.Text1.Text = Form2.Text1.Text & "N" & o & " G40 M02" & vbCrLf</p><p><b> End If</b></p><p><b> End If</b></p><p> Pr
109、ivate Sub Command5_Click()</p><p> Form2.Visible = True</p><p><b> End Sub</b></p><p> Private Sub Command6_Click()‘程序結(jié)束</p><p><b> End</b>
110、</p><p><b> End Sub</b></p><p> Private Sub Label21_Click()</p><p><b> End Sub</b></p><p> Private Sub Option1_Click()‘顯示當(dāng)前繪制的非圓曲線方程</p&
111、gt;<p> quxian = 1</p><p> Label4.Visible = True</p><p> Text2.Visible = True</p><p> Label1.Caption = "標(biāo)準(zhǔn)方程:x^2 / a^2 + y^2 / b^2 = 1" & vbCrLf & vbCrL
112、f & "參數(shù)方程:x=a * Cos(i) , y=b * Sin(i)"</p><p><b> End Sub</b></p><p> Private Sub Option2_Click()</p><p> quxian = 2</p><p> Label4.Visibl
113、e = False</p><p> Text2.Visible = False</p><p> Label1.Caption = "標(biāo)準(zhǔn)方程:x^(2/3) + y^(2/3) = a^(2/3)" & vbCrLf & vbCrLf & "參數(shù)方程:x=a * Cos(i)^3 , y=a * Sin(i)^3"&l
114、t;/p><p><b> End Sub</b></p><p> Private Sub Option3_Click()‘選定順時(shí)針走刀方向</p><p><b> daolu = 1</b></p><p><b> End Sub</b></p>
115、<p> Private Sub Option4_Click()‘選定逆時(shí)針走刀方向</p><p><b> daolu = 2</b></p><p><b> End Sub</b></p><p> Private Sub Option5_Click()‘選定左刀具補(bǔ)償</p>
116、<p><b> daobu = 1</b></p><p><b> End Sub</b></p><p> Private Sub Option6_Click()‘選定右刀具補(bǔ)償</p><p><b> daobu = 2</b></p><p>&
117、lt;b> End Sub</b></p><p> Private Sub Option7_Click()‘選定輸出絕對坐標(biāo)的NC代碼</p><p> zuobiao = 1</p><p><b> End Sub</b></p><p> Private Sub Option8_Cl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- NURBS曲線的直線與圓弧數(shù)控逼近算法研究.pdf
- 數(shù)控課程設(shè)計(jì)
- 數(shù)控編程課程設(shè)計(jì)-- 數(shù)控機(jī)床
- 數(shù)控課程設(shè)計(jì)總結(jié)
- 數(shù)控平面圓軌跡插補(bǔ)程序設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--數(shù)控平臺(tái)設(shè)計(jì)
- 數(shù)控機(jī)床課程設(shè)計(jì)
- 數(shù)控系統(tǒng)課程設(shè)計(jì)
- 數(shù)控機(jī)床課程設(shè)計(jì)
- 數(shù)控加工課程設(shè)計(jì)--連接軸數(shù)控車削加工
- 數(shù)控機(jī)床課程設(shè)計(jì)
- 數(shù)控編程加工課程設(shè)計(jì)
- 數(shù)控程序編程課程設(shè)計(jì)
- 數(shù)控課程設(shè)計(jì)--車削加工設(shè)計(jì)
- 數(shù)控課程設(shè)計(jì)---數(shù)控車床六工位刀架設(shè)計(jì)
- 數(shù)控銑床縱向進(jìn)給軸設(shè)計(jì)數(shù)控課程設(shè)計(jì)
- 數(shù)控技術(shù)課程設(shè)計(jì)--數(shù)控編程技術(shù)
- 球形手柄數(shù)控編程課程設(shè)計(jì)
- 數(shù)控技術(shù)課程設(shè)計(jì)
- 數(shù)控課程設(shè)計(jì)--數(shù)控機(jī)床操作與加工仿真
評論
0/150
提交評論