• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      DXF文件的橢圓(弧)曲線擬合算法的設(shè)計(jì)與實(shí)現(xiàn)

      2011-06-01 03:22:06楊澤林
      自動(dòng)化儀表 2011年11期
      關(guān)鍵詞:代碼橢圓直線

      楊澤林 馬 凱 呂 靜

      (寧夏大學(xué)物理電氣信息學(xué)院,寧夏 銀川 750021)

      0 引言

      現(xiàn)有的基于可編程多軸運(yùn)動(dòng)控制卡(programmable multi-axis controller,PMAC)開(kāi)發(fā)實(shí)現(xiàn)的數(shù)控系統(tǒng),都是在離線狀態(tài)下人工調(diào)試計(jì)算機(jī)數(shù)控(computer numerical control,CNC)代碼后保存在計(jì)算機(jī)的外存儲(chǔ)器。在進(jìn)行加工時(shí),需人工將控制程序調(diào)入內(nèi)存再執(zhí)行加工。這種方式在數(shù)控系統(tǒng)加工的工件類(lèi)型較多時(shí),對(duì)操作人員的要求就比較高,且人工調(diào)試CNC代碼較為繁瑣。

      如何利用AutoCAD系統(tǒng)提供的對(duì)儲(chǔ)存在DXF文件中的圖形信息進(jìn)行數(shù)控加工過(guò)程的實(shí)時(shí)監(jiān)控和自動(dòng)生成數(shù)控代碼,是當(dāng)前數(shù)控領(lǐng)域研究的熱點(diǎn),也是目前研究的目標(biāo)。由于AutoCAD提供了圖形交換格式(drawing exchange format,DXF)文件與外界程序的接口方法[1],因此,為了實(shí)現(xiàn)對(duì)多種加工零件的實(shí)時(shí)監(jiān)控,首先應(yīng)將由AutoCAD所提供的零件信息讀入數(shù)據(jù)庫(kù)中,然后根據(jù)所讀入的參數(shù)在實(shí)時(shí)監(jiān)控系統(tǒng)中顯示出零件的外形加工輪廓。為此需要設(shè)計(jì)擬合算法,以便在橢圓(弧)曲線擬合插補(bǔ)時(shí)滿(mǎn)足數(shù)控加工的工藝需求[2]。本文就DXF文件所能提供的橢圓(弧)曲線的相關(guān)信息作簡(jiǎn)要說(shuō)明。

      1 DXF文件的橢圓(弧)信息

      1.1 DXF 文件概述

      DXF是具有規(guī)范格式的ASCII碼文本文件,易被其他程序處理,而且保存了CAD圖形的精確數(shù)據(jù)。因此,可以通過(guò)編制高級(jí)語(yǔ)言設(shè)計(jì)接口程序來(lái)提取相關(guān)圖形數(shù)據(jù),實(shí)現(xiàn)CAD圖形與計(jì)算機(jī)輔助制造(computer aided manufacturing,CAM)加工代碼之間的轉(zhuǎn)換,并結(jié)合相關(guān)數(shù)控工藝知識(shí),生成CAM加工程序。DXF文件的特點(diǎn)和優(yōu)勢(shì)為CAD/CAM接口程序的開(kāi)發(fā)提供了有利條件。

      利用高級(jí)語(yǔ)言編寫(xiě)接口程序,必須首先了解文件的結(jié)構(gòu)[3]。DXF數(shù)據(jù)文件包含設(shè)計(jì)過(guò)程的所有圖形和非圖形信息。一個(gè)完整的DXF文件必須包括標(biāo)題段(HEADER)、類(lèi)段(CLASSES)、表段(TABLES)、塊段(BLOCKS)、實(shí)體段(ENTITIES)和文件結(jié)束標(biāo)志(EOF)。

      DXF文件各組成部分具體介紹如下。

      ①標(biāo)題段(HEADER):它包含與本文件所繪制的圖形的基本信息,其中包括了AutoCAD數(shù)據(jù)庫(kù)的版本號(hào)、存盤(pán)時(shí)的各種設(shè)置以及許多系統(tǒng)變量。

      ②類(lèi)段(CLASSES):它包含所有應(yīng)用程序定義的類(lèi)的信息。它包括的大部分信息對(duì)非CAD應(yīng)用程序來(lái)說(shuō)沒(méi)有任何價(jià)值。

      ③表段(TABLES):它包含了四個(gè)表,每個(gè)表又包含可變數(shù)目的表項(xiàng)。按照這些表在文件中出現(xiàn)的順序,它們依次為線型表、圖層表、字樣表和視圖表。TABLES段與HEADER段一樣,有時(shí)也可以忽略。

      ④塊段(BLOCKS):它記錄和定義每一塊段的塊名、當(dāng)前圖層名、塊的種類(lèi)、塊的插入基點(diǎn)及組成該塊的所有成員。目前,它還沒(méi)有得到廣泛使用,但由于它允許繪圖的模塊化操作,所以現(xiàn)在的應(yīng)用越來(lái)越廣泛。

      ⑤ 實(shí)體段(ENTITIES):它通過(guò)使用點(diǎn)、線、圓、弧等定義實(shí)際的三維或二維幾何體(實(shí)體),記錄了每個(gè)幾何實(shí)體段的名稱(chēng)、所在圖層的名稱(chēng)、線型名、顏色號(hào)、基面高度、厚度以及有關(guān)幾何數(shù)據(jù)。它是實(shí)體交換的主要段。

      ⑥文件結(jié)束(EOF):它標(biāo)志了文件結(jié)束。

      文件中每個(gè)數(shù)據(jù)元素前面都帶有一個(gè)稱(chēng)為組碼的整數(shù),組碼的值表明了其后數(shù)據(jù)元素的類(lèi)型。相應(yīng)的一系列組碼和組值構(gòu)成了DXF文件中的段(SECTION),每一個(gè)段都以一個(gè)組碼為0、組值為字符串SECTION的組對(duì)開(kāi)始,其后再緊跟組碼為2和表示各段名稱(chēng)的字符串(如HEADER、ENTITIES等)。

      每個(gè)段中相應(yīng)的組碼和組值定義了相應(yīng)的DXF段,而每個(gè)段都以組碼為0和字符串為ENDSEC的組值構(gòu)成的代碼對(duì)結(jié)束。這些組碼和組值組織成的各段便組成了DXF文件。

      1.2 橢圓(弧)曲線信息

      橢圓(弧)曲線在DXF文件實(shí)體段中是以“AcD-bEllipse”開(kāi)始標(biāo)記。在圖元實(shí)體模塊中,橢圓(弧)曲線的實(shí)體信息如表1所示。

      表1 橢圓(弧)曲線實(shí)體信息Tab.1 The substantive information of ellipse(arc)curve

      2 橢圓(弧)擬合算法的設(shè)計(jì)

      由上述分析可知,基于PMAC卡的開(kāi)放式數(shù)控系統(tǒng)將由DXF文件讀取的圖元實(shí)體信息存儲(chǔ)于數(shù)據(jù)庫(kù)中,以便利用數(shù)據(jù)庫(kù)中的圖元信息自動(dòng)生成CNC代碼[4-5],并依據(jù)生成的CNC代碼實(shí)現(xiàn)在線實(shí)時(shí)監(jiān)控并加工。

      橢圓(弧)曲線的加工實(shí)際上是直線擬合曲線的加工[6],即橢圓(弧)曲線的 CNC代碼實(shí)際上是直線CNC代碼的組合[7];而在工控機(jī)中,對(duì)于橢圓(弧)曲線的繪制是利用計(jì)算機(jī)輔助幾何設(shè)計(jì)的數(shù)學(xué)知識(shí)采用畫(huà)直線模擬曲線的方法??傊?,橢圓(弧)曲線擬合算法的根本思想是利用連續(xù)的多條直線來(lái)擬合曲線[8]。所以,通過(guò)連續(xù)的多條直線正確地?cái)M合出曲線便成為生成橢圓(弧)曲線的CNC代碼與實(shí)現(xiàn)橢圓(弧)曲線加工實(shí)時(shí)監(jiān)控的關(guān)鍵。

      2.1 算法思想

      橢圓(弧)曲線擬合的基本思想是以弦進(jìn)給代替弧進(jìn)給[9]。第一象限內(nèi)橢圓(弧)逆時(shí)針擬合插補(bǔ)如圖1所示。

      圖1 橢圓(弧)逆時(shí)針擬合插補(bǔ)示意圖Fig.1 Schematic drawing of ellipse(arc)anti-clockwise fitting interpolation

      依據(jù)橢圓(弧)逆時(shí)針擬合插補(bǔ)示意圖,結(jié)合橢圓(弧)曲線的參數(shù)方程,根據(jù)最小擬合誤差給定的要求值,可依次確定各擬合點(diǎn)的坐標(biāo)值。

      橢圓(弧)方程的一般形式可表示為:

      由于橢圓(弧)在數(shù)控系統(tǒng)中無(wú)法直接識(shí)別,因此,必須將其分解為直線或圓弧。

      根據(jù)橢圓(弧)參數(shù)方程,其長(zhǎng)、短軸分別為a、b(a≥b)。設(shè)起始角和終止角分別為α、β(0≤α<β≤2π),擬合誤差為 δ,起點(diǎn)坐標(biāo) P0(a cosα,b sinα)為本次插補(bǔ)點(diǎn),求下次插補(bǔ)點(diǎn) P1(a cosθ1,b sinθ1),以此來(lái)生成一條滿(mǎn)足擬合誤差要求的逼近線段P0P1,并以弦長(zhǎng)P0P1代替弧長(zhǎng)P0P1,則有:

      式中:VFeed為擬合插補(bǔ)時(shí)的切削進(jìn)給速度,mm/s;Ti為插補(bǔ)采樣時(shí)間,s。

      設(shè)直線方程為y=kx+B,則直線P0P1的斜率為:

      同時(shí),作弦P0P1的平行線切橢圓弧于Q點(diǎn),則得橢圓上任意一點(diǎn) Qi(a cosθi,b sinθi)處的斜率為:

      設(shè)與直線P0P1平行,切橢圓(弧)于點(diǎn)P(θi)的直線為 l,其中 α≤θi≤β。比較式(4)、式(6),由于在切點(diǎn)處兩斜率相等,因此,可得:

      當(dāng)l到P0P1的距離小于擬合誤差δ時(shí),滿(mǎn)足逼近要求,由此可得到不等式:

      將式(4)、式(5)代入式(8),化簡(jiǎn)后得到:

      直接解不等式(9)便可求出θ1,即求出點(diǎn)P1。

      為了進(jìn)一步化簡(jiǎn)式(9),對(duì)其左邊采用放縮法化簡(jiǎn),可得:

      一般情況下,δ<a,0<θ1-α <π,解不等式(10),可得:

      由式(11)可求出下一個(gè)逼近點(diǎn)的參數(shù)坐標(biāo)。依次類(lèi)推,可以得到整個(gè)橢圓(弧)的線段擬合的參數(shù)坐標(biāo)值。

      需要說(shuō)明的是,上述算法中,由于弦長(zhǎng)P0P1近似等于弧長(zhǎng)P0P1,因此,每次插補(bǔ)實(shí)際進(jìn)給的輪廓步長(zhǎng)不等于VFeed×Ti,但它們之間相差非常小,在實(shí)際切削過(guò)程中,完全可以認(rèn)為輪廓步長(zhǎng)保持恒定,即切削進(jìn)給速度保持恒定。

      2.2 算法實(shí)現(xiàn)

      無(wú)論是橢圓(弧)曲線的CNC代碼的自動(dòng)生成,還是用于實(shí)時(shí)監(jiān)控的圖形繪制,其基礎(chǔ)都是運(yùn)用上述擬合算法[10]。

      本文以Visual C++6.0為前臺(tái)開(kāi)發(fā)工具,利用MFC的框架設(shè)計(jì)思想,在相應(yīng)的DOC類(lèi)下建立以下橢圓(弧)曲線擬合函數(shù)。

      針對(duì)橢圓(弧)順時(shí)針和逆時(shí)針這兩種插補(bǔ)方向,我們可以得出以下兩個(gè)橢圓(弧)擬合插補(bǔ)通用公式。

      當(dāng)Start_Angle<End_Angle,即橢圓(弧)按逆時(shí)針?lè)较驍M合插補(bǔ)時(shí),有:

      式中:ΔA為滿(mǎn)足擬合誤差Δ的角度增量,且ΔA=2×(float)a cos(1-Δ/a)。

      同理,當(dāng) End_Angle<Start_Angle,即橢圓(弧)按順時(shí)針?lè)较驍M合插補(bǔ)時(shí),有:

      可以看出,運(yùn)用式(12)、式(13)進(jìn)行插補(bǔ)計(jì)算,不必進(jìn)行過(guò)象限判別,就可實(shí)現(xiàn)插補(bǔ)點(diǎn)自動(dòng)過(guò)象限,從而避免了過(guò)象限時(shí)由于插補(bǔ)公式切換不及時(shí)而引起加工點(diǎn)表面粗糙度變大的現(xiàn)象。

      2.3 結(jié)果比較

      利用AutoCAD和上述方法繪制的典型橢圓(弧)曲線如圖2所示。

      圖2 典型橢圓(弧)曲線Fig.2 The typical ellipse(arc)curves

      從圖2可以看出,兩者是一致的。如果從PMAC卡中讀取出橢圓(弧)曲線的加工信息,則可以完成實(shí)時(shí)監(jiān)控。這也說(shuō)明了利用上述算法,通過(guò)直線模擬曲線生成的 CNC代碼可以完成橢圓(弧)曲線的加工[11-12]。

      同時(shí),利用上述擬合算法,在相應(yīng)的圖形文件夾中生成一個(gè)名為nc_code.gc的文件。該文件為文本文件,通過(guò)記事本或者文本處理軟件均可以打開(kāi),可以查看生成的CNC代碼。

      3 結(jié)束語(yǔ)

      本文針對(duì)實(shí)際應(yīng)用的需要,通過(guò)讀取DXF文件獲取了AutoCAD中橢圓(弧)曲線的幾何信息,提取出了橢圓(弧)曲線在數(shù)據(jù)庫(kù)中存儲(chǔ)的表結(jié)構(gòu);利用由連續(xù)的多條直線擬合曲線的設(shè)計(jì)思想,實(shí)現(xiàn)了小線段擬合插補(bǔ)算法,并通過(guò)Visual C++6.0重新繪制。由于此算法在設(shè)計(jì)過(guò)程中采用了插補(bǔ)點(diǎn)自動(dòng)過(guò)象限的設(shè)計(jì)思路,因此,在實(shí)際加工過(guò)程中,從根本上避免了過(guò)象限時(shí)由于插補(bǔ)公式切換不及時(shí)而引起加工點(diǎn)表面粗糙度變大的現(xiàn)象,為以PMAC卡為基礎(chǔ)的開(kāi)放式數(shù)控系統(tǒng)的動(dòng)態(tài)在線監(jiān)視系統(tǒng)和加工代碼的研發(fā)奠定了基礎(chǔ)。

      [1]于杰,王懷明.基于DXF文件的CAD/CAM接口程序開(kāi)發(fā)與應(yīng)用[J].制造業(yè)自動(dòng)化,2008,30(7):79 -81.

      [2]王亮德,馬金河.數(shù)控加工圖形輪廓與曲面的數(shù)學(xué)處理[J].機(jī)床與液壓,2008,36(8):74 -76.

      [3]余承飛,方勇.AutoCAD 2000二次開(kāi)發(fā)技術(shù)[M].北京:人民郵電出版社,1999.

      [4]Cogun C.NC parts programs generation from CAD exchange files[J].Computer in Industry,1992,20(2):193 -202.

      [5]Ulker E,Turanalp M E,Halkaci H S.An artificial immune system approach to CNC tool path generation[J].Journal of Intelligent Manufacturing,2009,20(1):67 -77.

      [6]冉樹(shù)成,曲長(zhǎng)虹,劉義翔.數(shù)控系統(tǒng)中橢圓插補(bǔ)功能的研究與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),1995(5):18-24.

      [7]曹斌,李光耀,李啟炎.基于DXF文件格式的二維復(fù)雜圖形數(shù)控代碼自動(dòng)生成法[J].機(jī)械設(shè)計(jì)與制造,2003,6(3):30 -32.

      [8]陽(yáng)濤.數(shù)控車(chē)床加工橢圓的方法探討[J].機(jī)電工程技術(shù),2008,37(9):20-21.

      [9]Piegl L.Curve fitting algorithm for rough cutting[J].Computeraided Design,1986,18(2):79 -82.

      [10]郭景峰,潘曉,吳雷.基于DXF文件的曲線擬合方法的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)床與液壓,2006(11):210 -213.

      [11]夏斌,王偉,黃學(xué)良,等.橢圓弧數(shù)控代碼的自動(dòng)生成方法[J].組合機(jī)床與自動(dòng)化加工技術(shù),2007(5):67-70.

      [12]羅先全,黃學(xué)良,王偉,等.基于PMAC卡數(shù)控的G代碼自動(dòng)生成[J].現(xiàn)代制造工程,2007(7):14-16.

      猜你喜歡
      代碼橢圓直線
      Heisenberg群上由加權(quán)次橢圓p-Laplace不等方程導(dǎo)出的Hardy型不等式及應(yīng)用
      例談橢圓的定義及其應(yīng)用
      一道橢圓試題的別樣求法
      畫(huà)直線
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      兩條直線 變變變
      畫(huà)直線
      修文县| 香河县| 绍兴市| 林甸县| 洞头县| 额尔古纳市| 佛坪县| 佛学| 喀喇沁旗| 历史| 东明县| 岐山县| 遵义县| 罗平县| 通山县| 宜川县| 临漳县| 得荣县| 罗田县| 沙湾县| 莱西市| 乳源| 长沙县| 临潭县| 溆浦县| 邻水| 毕节市| 九龙坡区| 东莞市| 光泽县| 湘西| 巢湖市| 陆河县| 镇坪县| 和平区| 赫章县| 格尔木市| 大新县| 临颍县| 乌拉特中旗| 罗城|