2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論