數(shù)控課程設(shè)計(jì)匯總_第1頁
數(shù)控課程設(shè)計(jì)匯總_第2頁
數(shù)控課程設(shè)計(jì)匯總_第3頁
數(shù)控課程設(shè)計(jì)匯總_第4頁
數(shù)控課程設(shè)計(jì)匯總_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課 程 設(shè) 計(jì)課程名稱 數(shù)控技術(shù)課程設(shè)計(jì) 題目名稱 _數(shù)控中非圓曲線逼近的算法實(shí)現(xiàn) 學(xué)生學(xué)院 _ _ 機(jī)電工程學(xué)院 專業(yè)班級 機(jī)械設(shè)計(jì)制造及其自動化 學(xué) 號 學(xué)生姓名 指導(dǎo)教師 _ 成績評定 教師簽名 2012 年 07 月 05 日廣東工業(yè)大學(xué)數(shù)控技術(shù)課程設(shè)計(jì)任務(wù)書題目名稱數(shù)控中非圓曲線逼近的算法實(shí)現(xiàn)學(xué)生學(xué)院機(jī)電工程學(xué)院專業(yè)班級機(jī)械設(shè)計(jì)制造及其自動化2009級3班姓 名學(xué) 號一、課程設(shè)計(jì)的內(nèi)容用計(jì)算機(jī)高級編程語言(如VB,VC+等)來實(shí)現(xiàn)非圓曲線的逼近,可任選(1)直線逼近(如等間距法、等弦長法、等誤差法等)、或(2)圓弧逼近。要求在滿足允許誤差的前提下,使得逼近的直線段或圓弧段的數(shù)量最少(

2、即最優(yōu)解), 根據(jù)加工曲線輪廓自動生成刀具中心軌跡,自動生成加工NC代碼。二、課程設(shè)計(jì)的要求與數(shù)據(jù)具體的要求如下:(1)列出一般的直線或圓弧逼近的算法(流程圖)。(2)列出改進(jìn)的直線或圓弧逼近的算法(流程圖)即優(yōu)化算法。比較改進(jìn)前與改進(jìn)后的兩種算法結(jié)果。(3)針對給定的某一由非圓曲線所構(gòu)成的平面輪廓,根據(jù)指定的走刀方向、起刀點(diǎn),自動生成CNC代碼。(4)有刀具自動補(bǔ)償功能,根據(jù)給定的補(bǔ)償量和進(jìn)給方向自動計(jì)算刀具中心軌跡,有過切報(bào)警功能。(5)在屏幕上顯示該非圓曲線所構(gòu)成的平面輪廓。根據(jù)給定的進(jìn)給速度能模擬加工過程,并在屏幕上留下刀具所走中心軌跡。非圓曲線選擇(根據(jù)組員最大最小學(xué)號選擇,選擇方法

3、:若本組學(xué)號最小的同學(xué)學(xué)號為xxxxxxa,學(xué)號最大的同學(xué)學(xué)號為yyyyyyb,取p=a8+1, q=b8+1,若q=p,則q=p+1; 則該組選擇的非圓曲線組合為第p組和第q組。 注:是取余運(yùn)算):1:漸開線凸輪;2:雙曲線3:橢圓曲線4:正弦線5:星形線6:心臟線7:拋物線8:外擺線三、課程設(shè)計(jì)應(yīng)完成的工作每組學(xué)生應(yīng)在規(guī)定時(shí)間內(nèi),獨(dú)立完成所選題目。運(yùn)用VB或其它編程語言,編寫計(jì)算機(jī)軟件在WINDOWS實(shí)現(xiàn)數(shù)控裝置的計(jì)算機(jī)仿真。要求清楚地分析問題、提出算法、確定人機(jī)界面、列出流程圖,最后用程序驗(yàn)證,完成軟件測試,并且提交程序說明書。要求用編寫計(jì)算機(jī)軟件的方法解決典型非圓曲線的CAM問題??梢?/p>

4、任選用自己熟悉的一種編程語言,要求清楚地分析問題、提出算法、列出流程圖,最后用程序驗(yàn)證,并且提交程序說明書。四、課程設(shè)計(jì)進(jìn)程安排序號設(shè)計(jì)各階段內(nèi)容地點(diǎn)起止日期11、布置任務(wù),領(lǐng)取課程設(shè)計(jì)任務(wù)書,了解課程設(shè)計(jì)的目的、內(nèi)容和要求;了解課程設(shè)計(jì)的步驟;2、理解本課程設(shè)計(jì)題目的具體內(nèi)容要求,根據(jù)各自不同情況選擇題目;3:了解和掌握有關(guān)軟件開發(fā)的知識,如VB編程、VC編程、軟件工程、軟件開發(fā)的常用技巧及注意事項(xiàng);4:調(diào)查研究,收集資料,查閱文獻(xiàn)。學(xué)生對所選題目進(jìn)行論證及確定設(shè)計(jì)方案, 學(xué)生 宿舍18周21:掌握數(shù)控結(jié)構(gòu)設(shè)計(jì)要求,具體技術(shù)指標(biāo)和計(jì)算要求; 進(jìn)行軟件設(shè)計(jì);2: 進(jìn)行數(shù)控系統(tǒng)和算法的軟件編程與

5、開發(fā),初步實(shí)現(xiàn)系統(tǒng)的基本功能學(xué)生 宿舍19周31:通過多個(gè)實(shí)例來驗(yàn)證和改進(jìn)系統(tǒng)功能,完善軟件界面2:對所開發(fā)的軟件程序進(jìn)行標(biāo)識和說明3:按要求的格式編制課程設(shè)計(jì)說明書4:課程設(shè)計(jì)答辯學(xué)生 宿舍20周五、應(yīng)收集的資料及主要參考文獻(xiàn)1機(jī)床設(shè)計(jì)手冊第三分冊2廖效果.數(shù)字控制機(jī)床.武漢:華中理工大學(xué)出版社.1992.93廖效果.數(shù)控技術(shù). 武漢:湖北科學(xué)技術(shù)出版社.2000.74劉又午.數(shù)字控制機(jī)床.北京:機(jī)械工業(yè)出版社5龔浦泉.機(jī)床電氣控制.重慶:重慶大學(xué)出版社6 譚浩強(qiáng).Basic語言結(jié)構(gòu)化程序設(shè)計(jì)教程.北京:中國科學(xué)技術(shù)出版社.19907 楊林,李繼良. Visual Basic編程高手.北京:

6、北京大學(xué)出版社.20008 一組專用凸輪的計(jì)算機(jī)輔助設(shè)計(jì).機(jī)械工程師1998,(4): p58-599 凸輪曲線的快速畫法.機(jī)械工程師1998,(6): p22-2310 平面凸輪機(jī)構(gòu)CAD系統(tǒng)的研究與開發(fā).機(jī)械設(shè)計(jì)與制造2000,(5):p12-1311 圓柱非圓曲線槽凸輪的數(shù)控加工.制造技術(shù)與機(jī)床2000,(8):p3412 圓柱凸輪的參數(shù)化設(shè)計(jì)及數(shù)控加工.精密制造及自動化2001,11: p2813 參數(shù)化凸輪輪廓轉(zhuǎn)換及NC代碼自動生成.機(jī)床與液壓2001,6, p2931發(fā)出任務(wù)書日期:2012年 5月 28日 計(jì)劃完成日期: 2012年 7月 6 日 指導(dǎo)教師簽名: 基層教學(xué)單位責(zé)任

7、人簽章: 主管院長簽章:摘 要基于Visual Basic 6.0編程軟件平臺,使用直線逼近算法實(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)非圓曲線的模擬加工過程,根據(jù)刀具補(bǔ)償量和進(jìn)給方向在屏幕上留下刀具所走中心軌跡,根據(jù)軟件計(jì)算出的點(diǎn)坐標(biāo)能夠自動生出CNC代碼,并能夠保存在電腦里面。關(guān)鍵詞:直線逼近,Visual Basic 6

8、.0,非圓曲線,編程目 錄1 前言 12 非圓曲線逼近的關(guān)鍵 12.1 算法的選擇 12.2 算法實(shí)現(xiàn)的關(guān)鍵 13 非圓曲線逼近的算法實(shí)現(xiàn) 13.1 算法的流程圖 13.2 算法的解析 44 軟件開發(fā)與運(yùn)行 74.1 系統(tǒng)界面 74.2 軟件運(yùn)行 84.3 運(yùn)行分析 95 總結(jié) 9參考文獻(xiàn) 11附錄 121 前言數(shù)控機(jī)床是一種依靠數(shù)字化的信息來實(shí)現(xiàn)自動控制的高度自動化機(jī)床,它具有高效率、加工精度高和加工質(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ù)控加工非

9、圓曲線的輪廓時(shí),就必須用直線或圓弧段去逼近非圓曲線。對非圓曲線的逼近有直線逼近、圓弧逼近,分別可由G01、G02、G03完成加工,其中直線逼近較為簡單,但逼近節(jié)點(diǎn)數(shù)多,導(dǎo)致數(shù)控程序往往過多,而圓弧逼近具有高效性,但計(jì)算過于復(fù)雜。直線逼近的方法有等間距直線逼近、等弦長直線逼近和等誤差直線逼近,圓弧逼近的方法有曲率圓法、三點(diǎn)圓法和相切圓法。對于一個(gè)已知曲線,它的節(jié)點(diǎn)數(shù)主要取決于所用逼近線段的形狀(直線段還是圓弧段)、曲線方程的特性和允許的逼近誤差。2 非圓曲線逼近的關(guān)鍵2.1 算法的選擇對非圓曲線進(jìn)行逼近,有不同的實(shí)現(xiàn)方法,包括直線逼近和圓弧逼近。方法不同,最終得到的節(jié)點(diǎn)數(shù)也有所不同,因此選擇好的

10、一個(gè)算法對提高加工的效率和降低加工成本有著重要的作用。在這次課程設(shè)計(jì)中,我們選擇的算法是等間距直線逼近,并用等誤差直線逼近作為優(yōu)化算法。2.2 算法實(shí)現(xiàn)的關(guān)鍵算法實(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)鍵的問題。3 非圓曲線逼近的算法實(shí)現(xiàn)3.1 算法的流程圖開始給定曲線的起點(diǎn),終點(diǎn),等間距s,允許誤差v設(shè)置起點(diǎn)坐標(biāo)

11、(X(0),Y(0)而下一點(diǎn)為X(1)=X(0)+sY(1)=f(X(1)s=s/2將(X(0),Y(0)設(shè)為下一段的起始點(diǎn)連接兩點(diǎn)并求其斜率k,取曲線上切線上起斜率為k的一點(diǎn)(X(2),Y(2),求這點(diǎn)到上一直線段的距離w距離w<誤差? N Y到達(dá)終點(diǎn)? N Y結(jié)束圖1 等間距直線逼近的流程到達(dá)終點(diǎn)?開始給定曲線起點(diǎn),終點(diǎn),步長s,系數(shù)a,b,允許誤差v設(shè)定起點(diǎn)坐標(biāo)(X(0),Y(0)求臨時(shí)插補(bǔ)點(diǎn)(X(2),Y(2),其中X(2)=X(0)+ s,Y(2)=f(X(2),以此點(diǎn)為切點(diǎn)作曲線切線,并計(jì)算起點(diǎn)至切線的距離ws=s+0.001將插補(bǔ)點(diǎn)(X(1),Y(1)設(shè)為下一直線段的起點(diǎn)w

12、<誤差? N Y過起點(diǎn)作與切線平行的直線,求出直線與曲線的交點(diǎn),則另一交點(diǎn)(x(1),y(1)為插補(bǔ)點(diǎn),用直線連接起點(diǎn)與插補(bǔ)點(diǎn)結(jié)束 N Y圖2 等誤差直線逼近的流程圖3.2 算法的解析3.2.1 等間距直線逼近等間距直線逼近是最簡單的方法,已知橢圓方程,給定第一點(diǎn)(x(0),y(0),間距步長x=0.1,求出,將代入即可求得一系列。、即為每個(gè)線段的終點(diǎn)坐標(biāo),并以該坐標(biāo)值編制直線程序段(圖3)。圖3 等間距直線逼近根據(jù)M( x(0) , y(0) )、N( x(1) , y(1) )兩節(jié)點(diǎn)的坐標(biāo)可求得如圖3所示的逼近誤差,方法如下:MN方程:y=kx+c,則直線MN的斜率為 (3-1)將M

13、( x(0) , y(0) )代入MN方程:y=kx+c,求得 c=y(0)-kx(0) (3-2)利用橢圓參數(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ù)弧度為 (3-3)從而求出(x(2),y(2))。聯(lián)立式(3-1)、(3-2)、(3-3)求出逼近誤差為 (3-4)如果計(jì)算出來的逼近誤差w小于或等于輸入的允許誤差v,則滿足誤差要求,即可進(jìn)行直線逼近;否則令x為原來的一半,且返回重新計(jì)算逼近誤差再次比較,直到滿足誤差要求為止。等間距直線逼近的流程圖如圖1所示,星形線的等間距直線逼近算法與橢圓

14、計(jì)算方法相同,參考橢圓計(jì)算過程即可。3.2.2 等誤差直線逼近等間距直線逼近雖然計(jì)算簡單,但由于取定值x應(yīng)保證曲線曲率最大處的逼近誤差小于允許值,所以程序可能過多。因此,在選擇優(yōu)化算法時(shí),我們采用的是等誤差直線逼近的節(jié)點(diǎn)計(jì)算法,而且對于曲率變化較大的曲線,用等誤差法求得的節(jié)點(diǎn)數(shù)最少,從而輸出的NC代碼也大大減少,等誤差算法計(jì)算如下:等誤差直線去逼近曲線,就是使所有逼近線段的誤差相等,如圖4。圖4 等誤差直線逼近橢圓參數(shù)方程為x=a Cos(i),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))。(1)確定所有逼近線

15、段的誤差的圓方程,即以起點(diǎn)A(x(0) , y(0))為圓心,為半徑作圓; (2)確定等誤差圓與曲線公切線PT的斜率k: 以A點(diǎn)為起點(diǎn),利用參數(shù)方程x=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: (3-5) PT直線方程為y=kx+c,代入點(diǎn)T求得: c=y(1)-kx(1) (3-6)聯(lián)立2式(3-5)、(3-6)和點(diǎn)A(x(0) , y(0))求得A點(diǎn)到直線PT距離: (3-7)比較距離w與等誤差圓半徑是否相等,若相等,則直

16、線PT為等誤差圓與曲線兩者的公切線;若w<,則返回以上算法令i增大一倍重新計(jì)算距離w直到w=;若w>,則返回以上算法令i變?yōu)樵瓉硪话胫匦掠?jì)算距離w直到w=。(3)求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和橢圓方程可求得: (3-8)其中 進(jìn)而求出 y(2)=k(x(2)-x(0)+y(0) (3-9)(5)按以上步驟順次求得其他各節(jié)點(diǎn)坐標(biāo)。星形線等誤差逼近算法與橢圓相似,參考橢圓計(jì)算方法即可求得。4 軟件開發(fā)與運(yùn)行4.1 系統(tǒng)界面本次課程設(shè)計(jì)使用Visual Basi

17、c 6.0軟件,設(shè)計(jì)了兩個(gè)窗口為一體的可執(zhí)行程序,其中主界面可選擇所需加工的非圓曲線函數(shù)、走刀方向、刀補(bǔ)、起刀點(diǎn)、NC代碼坐標(biāo)以及相關(guān)的加工參數(shù),具有等間距直線逼近和等誤差直線逼近兩種逼近方法,并且對這兩種方法進(jìn)行比較分析。通過點(diǎn)擊“生成NC代碼”按鈕,可以進(jìn)入圖6的生成NC代碼的窗口,可以對NC代碼進(jìn)行保存,可以返回主界面,也可以退出該程序。圖5 主界面圖6 生成NC代碼窗口4.2 軟件運(yùn)行以橢圓內(nèi)輪廓加工、順時(shí)針走刀方向?yàn)槔f明等間距算法和等誤差算法直線逼近非圓曲線的刀具軌跡,并比較兩者的節(jié)點(diǎn)數(shù)和生成NC代碼程序的長度,設(shè)允許誤差為0.01,選擇項(xiàng)和輸入?yún)?shù)如圖7所示。 圖7 加工參數(shù)的選

18、擇與輸入單擊“繪原圖” 、“等間距逼近”按鈕,運(yùn)行結(jié)果的刀具軌跡如圖8所示,等間距逼近所用的線段數(shù)為5920,生成的NC代碼如圖9所示。 圖8 等間距逼近的刀具軌跡 圖9 等間距逼近的NC代碼單擊“繪原圖” 、“等誤差逼近”按鈕,運(yùn)行結(jié)果的刀具軌跡如圖10所示,等誤差逼近所用的線段數(shù)為666,生成的NC代碼如圖11所示。 圖10 等誤差逼近的刀具軌跡 圖11 等誤差逼近的NC代碼4.3 運(yùn)行分析從以上運(yùn)行結(jié)果可以看出,非圓曲線的等間距直線逼近算法雖然簡單,但逼近處理后的直線段較多,從經(jīng)濟(jì)效益上講,此方法較差。而由等誤差直線逼近處理后,可以得到相對較少的直線段,經(jīng)濟(jì)效益高。5 總結(jié)這次的課程設(shè)計(jì)

19、,在剛開始做之前,我們組的每個(gè)人都感到了壓力,因?yàn)楫吘惯@次是要利用VB或VC編程語言結(jié)合數(shù)控技術(shù)課程內(nèi)容來完成課程設(shè)計(jì),而且時(shí)間也并不充足。在剛開始接觸題目時(shí)候,沒有絲毫的頭緒,借住前人的成果,理解前人所做的東西,來逐步摸清我們課程設(shè)計(jì)真正所要做的工作。課堂上老師講直線逼近非圓曲線的數(shù)學(xué)處理時(shí)大概講了三種的方法:等間距、等弦長和等誤差,在我們理解了三種方法之后,確定使用等間距為初步算法,等誤差為優(yōu)化算法,因?yàn)榈乳g距計(jì)算簡單,但程序過多,而等誤差計(jì)算復(fù)雜,但程序和節(jié)點(diǎn)數(shù)都相對少。確定算法之后,我們遇到的問題是如何地在Visual Basic 6.0編程軟件平臺去實(shí)現(xiàn)直線逼近橢圓和星形線,VB編程

20、語言我們大致都弄懂,但是具體操作還是不明白。一開始我們使用橢圓和星形線的參數(shù)方程進(jìn)行數(shù)學(xué)處理,實(shí)現(xiàn)過程很容易,而且不用分每一個(gè)象限去討論,但是又遇到了另一個(gè)問題,使用參數(shù)方程計(jì)算出來的逼近誤差太大了,遠(yuǎn)大于日常所要求的加工誤差,所以還是以失敗告終。通過查閱高數(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ù)學(xué)計(jì)算的方法即可完成逼近,也通過比

21、較,等誤差法確實(shí)比等間距法所走的步數(shù)少一倍以上,符合了我們之前的設(shè)想。通過這次的課程設(shè)計(jì),把VB語言和數(shù)控仿真結(jié)合起來,加深了對非圓曲線加工的算法及其實(shí)現(xiàn)過程的理解,也提高了我們查閱資料和獨(dú)自解決問題的能力,在遇到問題時(shí)候,我們組成員的互相討論,迸發(fā)出來的學(xué)習(xí)激情,也提高了我們課程設(shè)計(jì)的積極性,給我們不僅帶來了知識的增長和能力的提高,而且?guī)砹烁嗟臉啡?。?考 文 獻(xiàn)1 廖效果.數(shù)字控制機(jī)床M.武漢:華中理工大學(xué)出版社,1992.9.2 廖效果.數(shù)控技術(shù)M.武漢:湖北科學(xué)技術(shù)出版社,2000.7.3 劉又午.數(shù)字控制機(jī)床M.北京:機(jī)械工業(yè)出版社.4 龔浦泉.機(jī)床電氣控制M.重慶:重慶大學(xué)出版

22、社.5 譚浩強(qiáng).Basic語言結(jié)構(gòu)化程序設(shè)計(jì)教程M.北京:中國科學(xué)技術(shù)出版社,1990.6 楊林,李繼良.Visual Basic編程高手M.北京:北京大學(xué)出版社,2000.7 一組專用凸輪的計(jì)算機(jī)輔助設(shè)計(jì)J.機(jī)械工程師,1998,(4): 58-59.8 凸輪曲線的快速畫法J.機(jī)械工程師,1998,(6): 22-23.9 平面凸輪機(jī)構(gòu)CAD系統(tǒng)的研究與開發(fā)J.機(jī)械設(shè)計(jì)與制造,2000,(5):12-13.10 圓柱非圓曲線槽凸輪的數(shù)控加工J.制造技術(shù)與機(jī)床,2000,(8):34.11 圓柱凸輪的參數(shù)化設(shè)計(jì)及數(shù)控加工J.精密制造及自動化,2001,11: 28.12 參數(shù)化凸輪輪廓轉(zhuǎn)換及N

23、C代碼自動生成J.機(jī)床與液壓,2001,6, 29-31.附錄 VB主要源程序Dim daolu As Integer, daobu As IntegerDim X(5) As Double, Y(5) As DoubleDim qidaox As Single, qidaoy As Single, qidaoz As SingleDim quxian As Integer, pi As Double, zuobiao As Integer定義變量Private Sub Command1_Click()Picture1.ClsText8.Text = ""Text9.Tex

24、t = ""End Sub清屏繪圖區(qū)域Private Sub Command2_Click()繪制坐標(biāo)系Picture1.DrawStyle = vbSolidPicture1.DrawWidth = 1Picture1.Scale (-50, 50)-(50, -50)Picture1.Line (-50, 0)-(50, 0)Picture1.Line -(48, 2)Picture1.Line (50, 0)-(48, -2)Picture1.Print "X"Picture1.Line (0, -50)-(0, 50)Picture1.Line

25、-(-2, 48)Picture1.Line (0, 50)-(2, 48)Picture1.Print "Y"Picture1.CurrentX = 2Picture1.CurrentY = -2Picture1.Print "O"pi = 3.1415926Picture1.CurrentX = aPicture1.CurrentY = 0If quxian = 1 Thena = Val(Text1.Text)b = Val(Text2.Text)For i = 0 To 2 * pi Step 0.001點(diǎn)命令繪制非圓曲線原圖Picture1.P

26、Set (a * Cos(i), b * Sin(i)NextEnd IfIf quxian = 2 Thena = Val(Text1.Text)For i = 0 To 2 * pi Step 0.001Picture1.PSet (a * Cos(i) 3, a * Sin(i) 3)NextEnd IfEnd SubPrivate Sub Command3_Click()等間距直線逼近s = 0.1pi = 3.1415926o = 4a = Val(Text1.Text)輸入加工參數(shù)b = Val(Text2.Text)v = Val(Text3.Text)n = Val(Text4

27、.Text)F = Val(Text5.Text)r = Val(Text6.Text)qidaox = Val(Text10.Text)qidaoy = Val(Text11.Text)qidaoz = Val(Text12.Text)d = Val(Text13.Text)Picture1.DrawStyle = vbDashPicture1.DrawWidth = 1If quxian = 1 Then畫橢圓If daolu = 1 Then順時(shí)針走刀方向If daobu = 1 Thene = 1a = a + rb = b + rEnd IfIf daobu = 2 Thene =

28、2a = a - rb = b - rEnd IfX(0) = aY(0) = 0Picture1.PSet (qidaox, qidaoy), vbRedPicture1.Line -(X(0), Y(0), vbRedPicture1.DrawStyle = vbSolidPicture1.PSet (X(0), Y(0), vbRedp = Format(X(0), "#0.00")q = Format(Y(0), "#0.00")If zuobiao = 1 ThenForm2.Text1.Text = "N1 G90 G17 G00

29、G4" & e & " D01" & " Z30 M03 S" & n & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N3 Z-" & d & vbCrLfElseForm2.Text1.Text =

30、"N1 G91 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N3 Z-" & d + 30 & vbC

31、rLfEnd Ifline1:Do While X(0) >= (-a + 0.0001)X(1) = X(0) - sY(1) = -(b * Sqr(Abs(a 2 - X(1) 2) / aIf X(1) <> X(0) And Y(1) <> Y(0) Thenk = (Y(1) - Y(0) / (X(1) - X(0)If k > 0 Thenj = Atn(-b / (a * k)End IfIf k < 0 Thenj = Atn(-b / (a * k) + piEnd IfX(2) = a * Cos(j)Y(2) = b * Si

32、n(j)w = Abs(k * X(2) - Y(2) + Y(0) - k * X(0) / (Sqr(k 2 + 1)End IfIf w <= v ThenPicture1.Line -(X(1), Y(1), vbRedElses = s / 2GoTo line1End IfIf zuobiao = 1 Thenp = Format(X(1), "#0.00")q = Format(Y(1), "#0.00")If o = 4 ThenForm2.Text1.Text = Form2.Text1.Text & "N4 G

33、01 X" & p & " Y" & q & " F" & F & vbCrLfEnd IfIf o >= 5 ThenForm2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLfEnd IfElseIf o = 4 Thenp = Format(X(1) - X(0), "#

34、0.00")q = Format(Y(1) - Y(0), "#0.00")Form2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLfEnd IfIf o >= 5 Thenp = Format(X(1) - X(0), "#0.00")q = Format(Y(1) - Y(0), "#0.00"

35、)Form2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLfEnd IfEnd Ifo = o + 1X(0) = X(1)Y(0) = Y(1)LoopPrivate Sub Command4_Click()等誤差直線逼近s = 0.001pi = 3.1415926o = 4a = Val(Text1.Text)輸入加工參數(shù)b = Val(Text2.Text)v = Val(Tex

36、t3.Text)n = Val(Text4.Text)F = Val(Text5.Text)r = Val(Text6.Text)qidaox = Val(Text10.Text)qidaoy = Val(Text11.Text)qidaoz = Val(Text12.Text)d = Val(Text13.Text)i = Val(Text7.Text)Picture1.DrawStyle = vbDashPicture1.DrawWidth = 1If quxian = 1 Then畫橢圓If daolu = 1 Then順時(shí)針走刀方向If daobu = 1 Thene = 1a = a

37、 + rb = b + rEnd IfIf daobu = 2 Thene = 2a = a - rb = b - rEnd IfX(0) = a * Cos(i)Y(0) = b * Sin(i)Picture1.PSet (qidaox, qidaoy), vbGreenPicture1.Line -(X(0), Y(0), vbGreenPicture1.DrawStyle = vbSolidPicture1.PSet (X(0), Y(0), vbGreenp = Format(X(0), "#0.00")q = Format(Y(0), "#0.00&q

38、uot;)If zuobiao = 1 ThenForm2.Text1.Text = "N1 G90 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLfForm2.Text1.Text = Form2.Text1.Text &am

39、p; "N3 Z-" & d & vbCrLfElseForm2.Text1.Text = "N1 G91 G17 G00 G4" & e & " D01" & " Z30 M03 S" & n & vbCrLfForm2.Text1.Text = Form2.Text1.Text & "N2 X" & p & " Y" & q & vbCrLfForm2.Text1.Text =

40、 Form2.Text1.Text & "N3 Z-" & d + 30 & vbCrLfEnd Ifline1:Do While i > 0i = i - s * piX(1) = a * Cos(i)Y(1) = b * Sin(i)If Y(1) <> 0 Thenk = -(b 2 * X(1) / (a 2 * Y(1)w = Abs(k * X(0) - Y(0) + Y(1) - k * X(1) / (Sqr(k 2 + 1)End IfIf (w - v) >= 0.0001 ThenPicture1.Lin

41、e -(X(1), Y(1), vbGreenElses = s + 0.001GoTo line1End IfIf zuobiao = 1 Thenp = Format(X(1), "#0.00")q = Format(Y(1), "#0.00")If o = 4 ThenForm2.Text1.Text = Form2.Text1.Text & "N4 G01 X" & p & " Y" & q & " F" & F & vbCrLfE

42、nd IfIf o >= 5 ThenForm2.Text1.Text = Form2.Text1.Text & "N" & o & " X" & p & " Y" & q & vbCrLfEnd IfElseIf o = 4 Thenp = Format(X(1) - X(0), "#0.00")q = Format(Y(1) - Y(0), "#0.00")Form2.Text1.Text = Form2.Text1.Text & "

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論