數(shù)控課程設計--數(shù)控中非圓曲線逼近的算法實現(xiàn)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課 程 設 計</b></p><p>  課程名稱 數(shù)控技術課程設計 </p><p>  題目名稱 _數(shù)控中非圓曲線逼近的算法實現(xiàn) </p><p>  學生學院 _ _ 機電工程學院 </p><p>  專業(yè)班級 機械設計制造及其自動化        

2、     </p><p><b>  學 號 </b></p><p><b>  學生姓名 </b></p><p>  指導教師 _ </p><p>  成績評定 </p>

3、<p>  教師簽名 </p><p>  2012 年 07 月 05 日</p><p>  數(shù)控技術課程設計任務書</p><p><b>  一、課程設計的內(nèi)容</b></p><p>  用計算機高級編程語言(如VB,VC++等)來實現(xiàn)非圓曲

4、線的逼近,可任選(1)直線逼近(如等間距法、等弦長法、等誤差法等)、或(2)圓弧逼近。要求在滿足允許誤差的前提下,使得逼近的直線段或圓弧段的數(shù)量最少(即最優(yōu)解), 根據(jù)加工曲線輪廓自動生成刀具中心軌跡,自動生成加工NC代碼。</p><p>  二、課程設計的要求與數(shù)據(jù)</p><p><b>  具體的要求如下:</b></p><p>  

5、(1)列出一般的直線或圓弧逼近的算法(流程圖)。</p><p> ?。?)列出改進的直線或圓弧逼近的算法(流程圖)——即優(yōu)化算法。比較改進前與改進后的兩種算法結果。</p><p>  (3)針對給定的某一由非圓曲線所構成的平面輪廓,根據(jù)指定的走刀方向、起刀點,自動生成CNC代碼。</p><p>  (4)有刀具自動補償功能,根據(jù)給定的補償量和進給方向自動計算刀

6、具中心軌跡,有過切報警功能。</p><p> ?。?)在屏幕上顯示該非圓曲線所構成的平面輪廓。根據(jù)給定的進給速度能模擬加工過程,并在屏幕上留下刀具所走中心軌跡。</p><p>  非圓曲線選擇(根據(jù)組員最大最小學號選擇,選擇方法:若本組學號最小的同學學號為xxxxxxa,學號最大的同學學號為yyyyyyb,取p=a%8+1, q=b%8+1,若q==p,則q=p+1; 則該組選擇的非圓

7、曲線組合為第p組和第q組。 注:’%’是取余運算):</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>  三、課程設計應完成的工

9、作</p><p>  每組學生應在規(guī)定時間內(nèi),獨立完成所選題目。運用VB或其它編程語言,編寫計算機軟件在WINDOWS實現(xiàn)數(shù)控裝置的計算機仿真。要求清楚地分析問題、提出算法、確定人機界面、列出流程圖,最后用程序驗證,完成軟件測試,并且提交程序說明書。</p><p>  要求用編寫計算機軟件的方法解決典型非圓曲線的CAM問題。可以任選用自己熟悉的一種編程語言,要求清楚地分析問題、提出算法

10、、列出流程圖,最后用程序驗證,并且提交程序說明書。</p><p>  四、課程設計進程安排</p><p>  五、應收集的資料及主要參考文獻</p><p>  1《機床設計手冊》第三分冊</p><p>  2廖效果.數(shù)字控制機床.武漢:華中理工大學出版社.1992.9</p><p>  3廖效果.數(shù)控技術.

11、武漢:湖北科學技術出版社.2000.7</p><p>  4劉又午.數(shù)字控制機床.北京:機械工業(yè)出版社</p><p>  5龔浦泉.機床電氣控制.重慶:重慶大學出版社</p><p>  6 譚浩強.Basic語言結構化程序設計教程.北京:中國科學技術出版社.1990</p><p>  7 楊林,李繼良. Visual Basic編程高

12、手.北京:北京大學出版社.2000</p><p>  8 一組專用凸輪的計算機輔助設計.機械工程師1998,(4): p58-59</p><p>  9 凸輪曲線的快速畫法.機械工程師1998,(6): p22-23</p><p>  10 平面凸輪機構CAD系統(tǒng)的研究與開發(fā).機械設計與制造2000,(5):p12-13</p><p>

13、;  11 圓柱非圓曲線槽凸輪的數(shù)控加工.制造技術與機床2000,(8):p34</p><p>  12 圓柱凸輪的參數(shù)化設計及數(shù)控加工.精密制造及自動化2001,11: p28</p><p>  13 參數(shù)化凸輪輪廓轉換及NC代碼自動生成.機床與液壓2001,6, p29~31</p><p>  發(fā)出任務書日期:2012年 5月 28日 </

14、p><p>  計劃完成日期: 2012年 7月 6 日 </p><p><b>  指導教師簽名:</b></p><p>  基層教學單位責任人簽章:</p><p><b>  主管院長簽章:</b></p><p><b>  摘 要</

15、b></p><p>  基于Visual Basic 6.0編程軟件平臺,使用直線逼近算法實現(xiàn)設計模擬橢圓曲線和星形線曲線兩種非圓曲線輪廓的加工過程。根據(jù)所編的等間距算法和等誤差算法的流程圖,初步使用等間距法來實現(xiàn)直線逼近兩種非圓曲線的過程,然后使用節(jié)點數(shù)較少的等誤差法來優(yōu)化直線逼近非圓曲線的過程。利用Visual Basic 6.0編程語言,根據(jù)指定的走刀方向包括順時針和逆時針,指定的走刀點,實現(xiàn)非圓曲

16、線的模擬加工過程,根據(jù)刀具補償量和進給方向在屏幕上留下刀具所走中心軌跡,根據(jù)軟件計算出的點坐標能夠自動生出CNC代碼,并能夠保存在電腦里面。</p><p>  關鍵詞:直線逼近,Visual Basic 6.0,非圓曲線,編程</p><p><b>  目 錄</b></p><p>  1 前言…………………………………………………

17、…………………………… 1</p><p>  2 非圓曲線逼近的關鍵…………………………………………………………… 1</p><p>  2.1 算法的選擇………………………………………………………………… 1</p><p>  2.2 算法實現(xiàn)的關鍵…………………………………………………………… 1</p><p>  3 非圓曲線逼

18、近的算法實現(xiàn)……………………………………………………… 1</p><p>  3.1 算法的流程圖……………………………………………………………… 1</p><p>  3.2 算法的解析………………………………………………………………… 4</p><p>  4 軟件開發(fā)與運行………………………………………………………………… 7</p>&l

19、t;p>  4.1 系統(tǒng)界面…………………………………………………………………… 7</p><p>  4.2 軟件運行…………………………………………………………………… 8</p><p>  4.3 運行分析…………………………………………………………………… 9</p><p>  5 總結………………………………………………………………………………

20、 9</p><p>  參考文獻…………………………………………………………………………… 11</p><p>  附錄………………………………………………………………………………… 12</p><p><b>  1 前言</b></p><p>  數(shù)控機床是一種依靠數(shù)字化的信息來實現(xiàn)自動控制的高度自動化機床

21、,它具有高效率、加工精度高和加工質(zhì)量穩(wěn)定等優(yōu)點,這使得數(shù)控機床在機械制造業(yè)中得到了日益廣泛的應用。當前我國的經(jīng)濟型數(shù)控機床,一般只具有直線插補和圓弧插補功能,并不具備拋物線、橢圓等非圓曲線的插補功能。因此,當我們需要數(shù)控加工非圓曲線的輪廓時,就必須用直線或圓弧段去逼近非圓曲線。</p><p>  對非圓曲線的逼近有直線逼近、圓弧逼近,分別可由G01、G02、G03完成加工,其中直線逼近較為簡單,但逼近節(jié)點數(shù)多,

22、導致數(shù)控程序往往過多,而圓弧逼近具有高效性,但計算過于復雜。直線逼近的方法有等間距直線逼近、等弦長直線逼近和等誤差直線逼近,圓弧逼近的方法有曲率圓法、三點圓法和相切圓法。</p><p>  對于一個已知曲線,它的節(jié)點數(shù)主要取決于所用逼近線段的形狀(直線段還是圓弧段)、曲線方程的特性和允許的逼近誤差。</p><p>  2 非圓曲線逼近的關鍵</p><p>&l

23、t;b>  2.1 算法的選擇</b></p><p>  對非圓曲線進行逼近,有不同的實現(xiàn)方法,包括直線逼近和圓弧逼近。方法不同,最終得到的節(jié)點數(shù)也有所不同,因此選擇好的一個算法對提高加工的效率和降低加工成本有著重要的作用。在這次課程設計中,我們選擇的算法是等間距直線逼近,并用等誤差直線逼近作為優(yōu)化算法。</p><p>  2.2 算法實現(xiàn)的關鍵</p>

24、<p>  算法實現(xiàn)需要求出曲線的節(jié)點,而要求曲線的節(jié)點得先求出直線段與所逼近的曲線之間的最大逼近誤差,而最大逼近誤差的計算點就在曲線上某一點的切線斜率與直線段斜率相等的切點處,故關鍵問題是求出該切點。一旦求出了該切點,就可以求出逼近時的最大誤差,用于與允許誤差作比較。另外,由于此次課程設計是對任意非圓曲線進行逼近,因此求導數(shù)也成了一個關鍵的問題。</p><p>  3 非圓曲線逼近的算法實現(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>  等間距直線逼近是最簡單的方法,已知橢圓方程,給定第一點(x(0),y(0)),間距步長Δx=0.1,求出,將代入即可求得一系列。、即為每個線段的終點坐標,并以該坐標值編制直線程序段(圖3)。</p&

28、gt;<p>  圖3 等間距直線逼近</p><p>  根據(jù)M( x(0) , y(0) )、N( x(1) , y(1) )兩節(jié)點的坐標可求得如圖3所示的逼近誤差,方法如下:</p><p>  MN方程:y=kx+c,則直線MN的斜率為</p><p><b>  (3-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的切點坐標(x(2),y(2)),對參數(shù)方程進行求導得切點對應的參數(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>  如果計算出來的逼近誤差w小于或等于輸入的允許誤差v,則滿足誤差要求,即可進

31、行直線逼近;否則令Δx為原來的一半,且返回重新計算逼近誤差再次比較,直到滿足誤差要求為止。</p><p>  等間距直線逼近的流程圖如圖1所示,星形線的等間距直線逼近算法與橢圓計算方法相同,參考橢圓計算過程即可。</p><p>  3.2.2 等誤差直線逼近</p><p>  等間距直線逼近雖然計算簡單,但由于取定值Δx應保證曲線曲率最大處的逼近誤差小于允許值

32、,所以程序可能過多。因此,在選擇優(yōu)化算法時,我們采用的是等誤差直線逼近的節(jié)點計算法,而且對于曲率變化較大的曲線,用等誤差法求得的節(jié)點數(shù)最少,從而輸出的NC代碼也大大減少,等誤差算法計算如下:</p><p>  等誤差直線去逼近曲線,就是使所有逼近線段的誤差相等,如圖4。</p><p>  圖4 等誤差直線逼近</p><p>  橢圓參數(shù)方程為x=a Cos(i

33、),y=b Sin(i),A點坐標(x(0) , y(0)),T點坐標(x(1) , y(1)),B點坐標(x(2) , y(2))。</p><p>  (1)確定所有逼近線段的誤差的圓方程,即以起點A(x(0) , y(0))為圓心,為半徑作圓; </p><p> ?。?)確定等誤差圓與曲線公切線PT的斜率k:</p><p>  以A點為起點,利用參數(shù)方程x

34、=a Cos(i),y=b Sin(i),增大弧度i從而使橫坐標變大。從而得到下一個點T坐標(x(1) , y(1)),弧度i增大的步長為Δi=0.001*π。對橢圓方程進行求導,利用T點坐標求出曲線切線PT斜率k:</p><p><b> ?。?-5)</b></p><p>  PT直線方程為y=kx+c,代入點T求得:</p><p>

35、  c=y(1)-kx(1) (3-6)</p><p>  聯(lián)立2式(3-5)、(3-6)和點A(x(0) , y(0))求得A點到直線PT距離:</p><p><b> ?。?-7)</b></p><p>  比較距離w與等誤差圓半徑是否相等,若相等,則直線PT為等誤差圓與曲線兩者的公切線;若w<

36、;,則返回以上算法令Δi增大一倍重新計算距離w直到w=;若w>,則返回以上算法令Δi變?yōu)樵瓉硪话胫匦掠嬎憔嚯xw直到w=。</p><p>  (3)求B點坐標(x(2) , y(2))。使AB弦的斜率為k,即使AB平行PT,設AB的方程為y-y(0)=k(x-x(0)),聯(lián)立式(3-5)公切線PT的斜率k和橢圓方程可求得:</p><p><b> ?。?-8)</b

37、></p><p><b>  其中</b></p><p>  進而求出 y(2)=k(x(2)-x(0))+y(0) (3-9)</p><p> ?。?)按以上步驟順次求得其他各節(jié)點坐標。</p><p>  星形線等誤差逼近算法與橢圓相似,參考橢圓計算

38、方法即可求得。</p><p><b>  4 軟件開發(fā)與運行</b></p><p><b>  4.1 系統(tǒng)界面</b></p><p>  本次課程設計使用Visual Basic 6.0軟件,設計了兩個窗口為一體的可執(zhí)行程序,其中主界面可選擇所需加工的非圓曲線函數(shù)、走刀方向、刀補、起刀點、NC代碼坐標以及相關的加工

39、參數(shù),具有等間距直線逼近和等誤差直線逼近兩種逼近方法,并且對這兩種方法進行比較分析。通過點擊“生成NC代碼”按鈕,可以進入圖6的生成NC代碼的窗口,可以對NC代碼進行保存,可以返回主界面,也可以退出該程序。</p><p><b>  圖5 主界面</b></p><p>  圖6 生成NC代碼窗口</p><p><b>  4.2

40、 軟件運行</b></p><p>  以橢圓內(nèi)輪廓加工、順時針走刀方向為例說明等間距算法和等誤差算法直線逼近非圓曲線的刀具軌跡,并比較兩者的節(jié)點數(shù)和生成NC代碼程序的長度,設允許誤差為0.01,選擇項和輸入?yún)?shù)如圖7所示。 </p><p>  圖7 加工參數(shù)的選擇與輸入</p><p>  單擊“繪原圖” 、“等間距逼近”按鈕,運行結果的刀具軌跡如圖

41、8所示,等間距逼近所用的線段數(shù)為5920,生成的NC代碼如圖9所示。</p><p>  圖8 等間距逼近的刀具軌跡 圖9 等間距逼近的NC代碼</p><p>  單擊“繪原圖” 、“等誤差逼近”按鈕,運行結果的刀具軌跡如圖10所示,等誤差逼近所用的線段數(shù)為666,生成的NC代碼如圖11所示。</p><p>  圖10 等誤差逼近

42、的刀具軌跡 圖11 等誤差逼近的NC代碼</p><p><b>  4.3 運行分析</b></p><p>  從以上運行結果可以看出,非圓曲線的等間距直線逼近算法雖然簡單,但逼近處理后的直線段較多,從經(jīng)濟效益上講,此方法較差。而由等誤差直線逼近處理后,可以得到相對較少的直線段,經(jīng)濟效益高。</p><p>&

43、lt;b>  5 總結</b></p><p>  這次的課程設計,在剛開始做之前,我們組的每個人都感到了壓力,因為畢竟這次是要利用VB或VC編程語言結合數(shù)控技術課程內(nèi)容來完成課程設計,而且時間也并不充足。在剛開始接觸題目時候,沒有絲毫的頭緒,借住前人的成果,理解前人所做的東西,來逐步摸清我們課程設計真正所要做的工作。</p><p>  課堂上老師講直線逼近非圓曲線的數(shù)

44、學處理時大概講了三種的方法:等間距、等弦長和等誤差,在我們理解了三種方法之后,確定使用等間距為初步算法,等誤差為優(yōu)化算法,因為等間距計算簡單,但程序過多,而等誤差計算復雜,但程序和節(jié)點數(shù)都相對少。確定算法之后,我們遇到的問題是如何地在Visual Basic 6.0編程軟件平臺去實現(xiàn)直線逼近橢圓和星形線,VB編程語言我們大致都弄懂,但是具體操作還是不明白。一開始我們使用橢圓和星形線的參數(shù)方程進行數(shù)學處理,實現(xiàn)過程很容易,而且不用分每一個

45、象限去討論,但是又遇到了另一個問題,使用參數(shù)方程計算出來的逼近誤差太大了,遠大于日常所要求的加工誤差,所以還是以失敗告終。通過查閱高數(shù)知識和數(shù)控技術課本還有其他的一些參考資料,借住高數(shù)知識所提供的數(shù)學方法,我們使用標準方程去進行數(shù)學處理,雖然要考慮每一個象限,程序也由此變得繁瑣,但是最終還是實現(xiàn)了我們之前的設想,計算出來的逼近誤差最終可以變到0.01甚至更小。有了等間距直線逼近的成功基礎,在做等誤差算法直線逼近的時候,只需理解好等誤差數(shù)

46、學計算的方法即可完成逼近,也通過比較,等誤差法確實比等間距法所走的步數(shù)少一倍以上,符合了</p><p>  通過這次的課程設計,把VB語言和數(shù)控仿真結合起來,加深了對非圓曲線加工的算法及其實現(xiàn)過程的理解,也提高了我們查閱資料和獨自解決問題的能力,在遇到問題時候,我們組成員的互相討論,迸發(fā)出來的學習激情,也提高了我們課程設計的積極性,給我們不僅帶來了知識的增長和能力的提高,而且?guī)砹烁嗟臉啡ぁ?lt;/p>

47、;<p>  參 考 文 獻</p><p>  [1] 廖效果.數(shù)字控制機床[M].武漢:華中理工大學出版社,1992.9.</p><p>  [2] 廖效果.數(shù)控技術[M].武漢:湖北科學技術出版社,2000.7.</p><p>  [3] 劉又午.數(shù)字控制機床[M].北京:機械工業(yè)出版社.</p><p>  [

48、4] 龔浦泉.機床電氣控制[M].重慶:重慶大學出版社.</p><p>  [5] 譚浩強.Basic語言結構化程序設計教程[M].北京:中國科學技術出版社,1990.</p><p>  [6] 楊林,李繼良.Visual Basic編程高手[M].北京:北京大學出版社,2000.</p><p>  [7] 一組專用凸輪的計算機輔助設計[J].機械工程師,19

49、98,(4): 58-59.</p><p>  [8] 凸輪曲線的快速畫法[J].機械工程師,1998,(6): 22-23.</p><p>  [9] 平面凸輪機構CAD系統(tǒng)的研究與開發(fā)[J].機械設計與制造,2000,(5):12-13.</p><p>  [10] 圓柱非圓曲線槽凸輪的數(shù)控加工[J].制造技術與機床,2000,(8):34.</p&

50、gt;<p>  [11] 圓柱凸輪的參數(shù)化設計及數(shù)控加工[J].精密制造及自動化,2001,11: 28.</p><p>  [12] 參數(shù)化凸輪輪廓轉換及NC代碼自動生成[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()‘繪制坐標系</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‘點命令繪制非圓曲線原圖</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‘順時針走刀方向</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‘順時針走刀方向</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()‘程序結束</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()‘顯示當前繪制的非圓曲線方程</p&

111、gt;<p>  quxian = 1</p><p>  Label4.Visible = True</p><p>  Text2.Visible = True</p><p>  Label1.Caption = "標準方程: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 = "標準方程: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()‘選定順時針走刀方向</p><p><b>  daolu = 1</b></p><p><b>  End Sub</b></p>

115、<p>  Private Sub Option4_Click()‘選定逆時針走刀方向</p><p><b>  daolu = 2</b></p><p><b>  End Sub</b></p><p>  Private Sub Option5_Click()‘選定左刀具補償</p>

116、<p><b>  daobu = 1</b></p><p><b>  End Sub</b></p><p>  Private Sub Option6_Click()‘選定右刀具補償</p><p><b>  daobu = 2</b></p><p>&

117、lt;b>  End Sub</b></p><p>  Private Sub Option7_Click()‘選定輸出絕對坐標的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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論