• 
    

    
    

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

      數(shù)控激光加工路徑鏈表快速搜索優(yōu)化

      2014-02-27 02:47:51王學(xué)華劉莉君馬凡杰王華龍劉文琪李存榮
      關(guān)鍵詞:圖元鏈表解析

      王學(xué)華,劉莉君,馬凡杰,王華龍,劉文琪,李存榮

      1.武漢工程大學(xué)材料科學(xué)與工程學(xué)院,湖北 武漢 430074;2.武漢桑普瑞奇科技有限公司,湖北 武漢 430073

      0 引 言

      在傳統(tǒng)的激光加工系統(tǒng)中,均采用數(shù)控代碼手工編程,只能處理簡(jiǎn)單軌跡零件的加工過(guò)程,在編程中容易出錯(cuò),效率低.隨著CAD技術(shù)的不斷發(fā)展,國(guó)內(nèi)外研究人員將CAD技術(shù)應(yīng)用于激光加工中.其中圖形交換文件(Drawing Exchange File,以下簡(jiǎn)稱(chēng): DXF)作為Autodesk公司開(kāi)發(fā)的用于AutoCAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的一種文件格式,其可讀性好,占用內(nèi)存小,易于二次開(kāi)發(fā),被用于各種圖形化數(shù)控加工系統(tǒng)[1-5].胡勝紅[6]等人利用Visual C++成功對(duì)DXF文件進(jìn)行解析,完成對(duì)簡(jiǎn)單幾何面域圖形的快速掃描.

      由于在DXF文件中,圖形元素的記錄順序是以設(shè)計(jì)人員在CAD中隨機(jī)繪制圖形的先后順序?yàn)橹饕罁?jù),且控制點(diǎn)的順序是隨系統(tǒng)默認(rèn),容易導(dǎo)致激光加工過(guò)程中路徑的無(wú)序性,增加了激光加工過(guò)程中的空程路徑[7].因此,快速搜索合適的最短激光加工路徑對(duì)提高加工效率十分必要.筆者采用高級(jí)語(yǔ)言Delphi編程完成DXF文件的解析,并對(duì)圖元信息進(jìn)行存儲(chǔ)優(yōu)化,實(shí)現(xiàn)了DXF數(shù)據(jù)與激光加工路徑之間的數(shù)據(jù)轉(zhuǎn)換,減少激光空程加工時(shí)間,提高加工效率.

      1 DXF圖形文件與加工過(guò)程轉(zhuǎn)換

      1.1 DXF文件解析

      一個(gè)完整的DXF文件由表1所列的各部分組成.DXF文件是由很多的代碼和值組成的數(shù)據(jù)對(duì)構(gòu)造而成,這里的代碼稱(chēng)為組碼.需指定組碼的值的類(lèi)型和用途,每個(gè)組碼的值必須為單獨(dú)的一行.該組碼不僅指出了其對(duì)應(yīng)組值的類(lèi)型,而且與此組值配對(duì).通過(guò)以上配對(duì)的組碼和組值,DXF文件被組織成由記錄構(gòu)成的段,而記錄又是由按順序排列的組碼和數(shù)據(jù)條目所構(gòu)成的[8-9].

      表1 DXF文件的基本構(gòu)成

      1.2 加工數(shù)據(jù)的獲取

      DXF文件中的內(nèi)容都是以組碼/組值的形式出現(xiàn),在讀取DXF文件的時(shí)候,只需要了解模型的幾何信息,因此只用掃描解析DXF文檔的ENTITIES實(shí)體段區(qū)域,它包含了所繪制圖形的所有數(shù)據(jù),其中實(shí)體類(lèi)型包括直線(xiàn)(LINE)、圓(CIRCLE)、圓弧(ARC)、橢圓(ELLIPSE)、多段線(xiàn)(POLYLINE)、文本(TEXT)等十幾種[10-11].

      DXF文件的解析過(guò)程可以分解成搜索各種圖元并將各種圖元組合起來(lái)的過(guò)程.針對(duì)DXF文件的每一個(gè)段及子類(lèi),只需搜索到對(duì)應(yīng)的字符串,然后順序去讀取其后的圖元數(shù)據(jù)信息[12-13],解析流程如圖1所示.

      圖1 DXF文件實(shí)體段解析

      1.3 加工過(guò)程轉(zhuǎn)換

      以直線(xiàn)段(LINE)為例,該圖元的第一行組碼10、20、30 和 11、21、31 分別代表直線(xiàn)段的坐標(biāo)起點(diǎn)(X1,Y1,Z1)和終點(diǎn) (X2、Y2、Z2)標(biāo)志,而其具體的坐標(biāo)數(shù)值則存在其對(duì)應(yīng)的下一行(組值)中.與直線(xiàn)相關(guān)的數(shù)據(jù)信息以及與直線(xiàn)圖元相關(guān)的讀取、寫(xiě)入、繪制等函數(shù)在Delphi中定義類(lèi)的過(guò)程如下:

      Type Dxf_Cline= Class

      Public Movetype:Integer; //0:表示移動(dòng),不加工;1:表示加工.

      startX,startY,endX,endY:Integer; //定義直線(xiàn)的起點(diǎn)和終點(diǎn)

      Previous:Dxf_Cline;

      Next:Dxf_Cline;

      ……

      將DXF文件中的圖元按其類(lèi)型進(jìn)行分類(lèi)解析,提取的各圖元信息存儲(chǔ)于各類(lèi)數(shù)據(jù)結(jié)構(gòu)中,將各圖元類(lèi)作為鏈表結(jié)構(gòu)中的結(jié)點(diǎn)并按DXF文件中圖元出現(xiàn)的先后順序存儲(chǔ)在給定的鏈表結(jié)構(gòu)中,鏈表中的每一結(jié)點(diǎn)元素即為一種類(lèi)型的圖元,則可以構(gòu)成圖元的數(shù)據(jù)鏈表結(jié)構(gòu).在鏈表中每個(gè)結(jié)點(diǎn)中有兩個(gè)用于鏈接其他結(jié)點(diǎn)的指針,一個(gè)指向前趨結(jié)點(diǎn)(Previous),另一個(gè)指向后繼結(jié)點(diǎn)(Next),構(gòu)成雙向鏈表,如圖2所示.

      圖2 圖元的鏈表結(jié)構(gòu)

      讀取直線(xiàn)段并顯示在界面上的部分程序示例如下:

      Define DXF_line_count:Integer // DXF文件文本的行數(shù)

      i:Integer; // 行數(shù)計(jì)數(shù)

      str:String;// 中間變量,儲(chǔ)存DXF文本的一行內(nèi)容

      if str='AcDbLine' then // 讀取直線(xiàn)圖元信息

      startX:= round(strtofloat(mdxf.Lines[i+2])) ; // 讀取直線(xiàn)段起始坐標(biāo)X

      startY:= height_coordiate-round(strtofloat(mdxf.Lines[i+4])) ;//讀取直線(xiàn)段起始坐標(biāo)Y

      endX:= round(strtofloat(mdxf.Lines[i+8])) ; //讀取終點(diǎn)坐標(biāo)X

      endY:= height_coordiate-round(strtofloat(mdxf.Lines[i+10])) ;//讀取終點(diǎn)坐標(biāo)Y

      Image.Canvas.MoveTo(startX, startY) ;

      Image.Canvas.LineTo(endX,endY) ;//繪制直線(xiàn)

      ……

      2 加工路徑優(yōu)化實(shí)例

      在實(shí)體段ENTITIES中,若交換圖形元素出現(xiàn)的先后順序和改變?cè)搱D元的控制點(diǎn)排序,對(duì)實(shí)體圖形的位置和形狀沒(méi)有影響,因此在解析提取DXF文件的有效圖元數(shù)據(jù)信息時(shí),對(duì)隨機(jī)無(wú)序的離散圖元進(jìn)行連接處理之后再應(yīng)用最近距離排序算法,可以有效的提高激光加工過(guò)程的效率.圖3為路徑加工優(yōu)化示意圖,以圖3為例,虛線(xiàn)箭頭表示模擬加工路徑,優(yōu)化前的加工順序是和設(shè)計(jì)人員的繪圖順序一致,從編程零點(diǎn)V0→V1→V2→V3,依次完成后回到加工原點(diǎn)V0.通過(guò)采取最近距離法優(yōu)化之后,讀取第一個(gè)圖形的起點(diǎn),開(kāi)始進(jìn)行加工,到直線(xiàn)的終點(diǎn)結(jié)束,在進(jìn)行下一個(gè)圖元拾取時(shí),找尋離上一個(gè)終點(diǎn)距離最近的端點(diǎn)為新的起始點(diǎn),完成下一個(gè)圖元的加工,路線(xiàn)則變?yōu)閺腣0→V1→V3→V2→V0,大大縮短加工距離,提高了加工效率.

      圖3 路徑優(yōu)化加工示意圖

      圖4為路徑優(yōu)化前后數(shù)據(jù)點(diǎn)的位置狀態(tài).優(yōu)化前圖形數(shù)據(jù)只是按照初始的CAD存儲(chǔ)順序進(jìn)行,優(yōu)化后,激光加工路徑從某個(gè)圖元起點(diǎn)開(kāi)始,移動(dòng)至該圖元終點(diǎn)后,尋找離其距離最近的下一個(gè)圖元的起點(diǎn).

      圖4 路徑優(yōu)化前后數(shù)據(jù)點(diǎn)的位置變化

      結(jié)合MPC03運(yùn)動(dòng)控制卡的驅(qū)動(dòng),將優(yōu)化后直線(xiàn)段的數(shù)據(jù)轉(zhuǎn)換為激光數(shù)控加工路徑的關(guān)鍵程序示例如下:

      ……

      hDll:=LoadLibrary('mpc03LS.dll');//獲取動(dòng)態(tài)鏈接庫(kù)句柄,加載板卡驅(qū)動(dòng)函數(shù)庫(kù)

      If hDll<>0 then

      Begin

      @init_board:=GetProcAddress(hDll,'init_board');

      @set_vector_profile:=GetProcAddress(hDll,'set_vector_profile');

      @con_hmove2:=GetProcAddress(hDll,'con_hmove2');

      @fast_hmove2:=GetProcAddress(hDll,

      'fast_hmove2');

      @fast_pmove:=GetProcAddress(hDll,'fast_pmove');

      @con_line2:=GetProcAddress(hDll,'con_line2');

      @fast_line2:=GetProcAddress(hDll,'fast_line2');

      ……

      End

      ……//運(yùn)動(dòng)函數(shù)聲明

      Tinit_board=function():integer; stdcall;//對(duì)控制卡硬件和軟件初始化

      Tcon_line2=function(ch1:integer;pos1:INTEGER;ch2:integer;pos2:INTEGER):integer; stdcall;//兩軸做常速直線(xiàn)運(yùn)動(dòng)

      Tfast_line2=function(ch1:integer;pos1:INTEGER;ch2:integer;pos2:INTEGER):integer; stdcall;//兩軸做快速直線(xiàn)運(yùn)動(dòng)

      Var //變量聲明

      hDll: THandle;

      init_board: Tinit_board;

      con_hmove2:Tcon_hmove2 ;

      con_line2:Tcon_line2;

      fast_line2:Tfast_line2;

      Dline: Dxf_Cline;

      If init_board< >0 then

      Begin

      While Dline < > nil Do // 以下代碼實(shí)現(xiàn)連續(xù)加工

      Begin

      set_laser_mode(Dline.Movetype); //激光開(kāi)

      set_vector_conspeed(1000); //設(shè)置加工速度

      con_line2(m_card.Y_axis, Dline.endY,m_card.X_axis, Dline.endX); //正常加工

      While not (check_done(0) = 0 and check_done(1) = 0) do

      application.processmassage;

      set_laser_mode(0); //激光關(guān)

      Dline.next;

      End

      End

      ……

      3 運(yùn)行結(jié)果與結(jié)論

      通過(guò)對(duì)AutoCAD中DXF文件的構(gòu)成及數(shù)據(jù)格式的解析,以直線(xiàn)段LINE圖元為例在Delphi開(kāi)發(fā)平臺(tái)上建立了DXF文件與激光數(shù)控加工過(guò)程的數(shù)據(jù)轉(zhuǎn)換接口,運(yùn)行結(jié)果如圖4所示.通過(guò)遍歷圖元數(shù)據(jù)鏈表結(jié)點(diǎn)及搜索最近鄰距離的方式,重新對(duì)圖元數(shù)據(jù)排序,以MPC03運(yùn)動(dòng)控制卡為實(shí)例,實(shí)現(xiàn)了激光數(shù)控加工過(guò)程路徑的優(yōu)化,減少了空程路徑,提高了激光數(shù)控加工的效率.

      致 謝

      感謝武漢桑普瑞奇科技有限公司和武漢工程大學(xué)提供的開(kāi)發(fā)和試驗(yàn)平臺(tái)!

      [1] 胡方霞,劉杰,任艷君. 基于AUTOCAD二次開(kāi)發(fā)的激光標(biāo)記機(jī)軟件設(shè)計(jì)[J]. 激光雜志,2006,27(6):82-83.

      HU Fang-xia, LIU Jie,REN Yan-jun. A design of laser marking system based on second developing AutoCAD[J]. Laser Journal,2006,27(6):82-83. (in Chinese)

      [2] 劉啟生,邵東偉,杜云明,等. 基于DXF文件的數(shù)控加工系統(tǒng)的實(shí)現(xiàn)研究[J]. 佳木斯大學(xué)學(xué)報(bào):自然科學(xué)版,2009,27(4):542-544.

      LIU Qi-sheng, SHAO Dong-wei DU Yun-ming,et al. The realization of research for CNC machining systems based oil DXF file[J]. Journal of Jiamusi University:Natural Science Edition,2009,27(4):542-544. (in Chinese)

      [3] SLUEV V A, SMIRNOV K K. A system for controlling laser writing devices[J]. Optoelectronics Instrumentation and Data Processing,2007,43(5):481-487.

      [4] 趙英偉.計(jì)算機(jī)控制激光二維復(fù)雜圖形掃描加工[D].天津:河北工業(yè)大學(xué),2002:23-27.

      ZHAO Ying-wei.Computer controlling laser two-dimension scanning complex figure progressing[D].Tianjin:Hebei University of Technology,2002:23-27. (in Chinese)

      [5] 王明,孫進(jìn). 基于DXF文件的圖形自動(dòng)編程數(shù)控系統(tǒng)設(shè)計(jì)[J]. 中國(guó)農(nóng)機(jī)化,2011(2):122-124.

      WANG Ming, SUN Jin. Design of graphic automatic programmed numerical control system based on DXF[J].Chinese Agricultural Mechanization, 2011(2): 122-124. (in Chinese)

      [6] 胡勝紅,劉曉東. 基于AutoCAD面域的圖形接口開(kāi)發(fā)及其應(yīng)用[J]. 工程圖學(xué)學(xué)報(bào),2007(5):1-6.

      HU Sheng-hong,LIU Xiao-dong. Development and implementation of the graphic interface based on region in AutoCAD[J].Journal of Engineering Graphics,2007(5):1-6. (in Chinese)

      [7] 甘明,陳曉亮,張科威. 基于DXF的數(shù)控切割加工優(yōu)化算法的研究與實(shí)現(xiàn)[J].煤礦機(jī)械,2010,31(11):130-132.

      GAN Ming, CHEN Xiao-liang, ZHANG Ke-wei. Research and realization of optimization algorithm for NC cutting machine based on DXF[J]. Coal Mine Machinery,2010,31(11):130-132. (in Chinese)

      [8] 李芳珍,許倫輝. DXF文件格式及其外部接口的研究[J]. 兵工自動(dòng)化,2008,27 (7):83-85.

      LI Fang-zhen, XU Lun-hui. Study on file format and exterior interface of DXF[J]. Ordnance Industry Automation,2008,27(7):83-85. (in Chinese)

      [9] 張永超,岳建平,王海青.基于VB6.0和OpenGL的DXF文件讀取與交互控制[J].計(jì)算機(jī)時(shí)代,2009(9):39-41.

      ZHANG Yong-chao,YUE Jian-ping,WANG Hai-qing. DXF document reading and interaction control based on VB6.0 and OpenGL[J]. Computer Era. 2009(9):39-41. (in Chinese)

      [10] 但永平,張蕾,張國(guó)濤,等. 基于VC++的DXF數(shù)據(jù)文件接口程序設(shè)計(jì)[J]. 電子設(shè)計(jì)工程,2012,20(23):70-74.

      DAN Yong-ping,ZHANG Lei,ZHANG Guo-tao,et al. Design of DXF data file interface program based on the VC++[J]. Electronic Design Engineering,2012,20(23):70-74. (in Chinese)

      [11] 沈志榮,謝明紅. 基于DXF的數(shù)控切割優(yōu)化排序算法的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2013,49(15):32-35,96.

      SHEN Zhi-rong, XIE Ming-hong. Research and implementation of optimized sorting algorithm for NC cutting machine based on DXF[J].Computer Engineering and Applications, 2013, 49(15):32-35,96. (in Chinese)

      [12] 張國(guó)慶. DXF文件在激光打標(biāo)系統(tǒng)的應(yīng)用研究[J].光電技術(shù)應(yīng)用,2010,25(5):8-11.

      ZHANG Guo-qing. Application research of DXF file in laser marking system[J]. Electro-optic Technology Application,2010,25(5):8-11. (in Chinese)

      [13] 李晨. 用VC實(shí)現(xiàn)基于DXF文件的AutoCAD數(shù)據(jù)共享接口[J]. 工業(yè)控制計(jì)算機(jī),2010,23(4):76-77.

      LI Chen. Implementation of Data interface to DXF format in AutoCAD using visual C++[J].Industrial Control Computer,2010,23(4):76-77. (in Chinese)

      猜你喜歡
      圖元鏈表解析
      一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
      三角函數(shù)解析式中ω的幾種求法
      學(xué)術(shù)出版物插圖的編排要求(一):圖注
      聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
      基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
      跟麥咭學(xué)編程
      基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      睡夢(mèng)解析儀
      電競(jìng)初解析
      商周刊(2017年12期)2017-06-22 12:02:01
      相機(jī)解析
      高台县| 元谋县| 临高县| 额济纳旗| 区。| 张家口市| 永春县| 凌海市| 阿巴嘎旗| 阿合奇县| 齐河县| 育儿| 阿克陶县| 镇雄县| 墨江| 水城县| 平邑县| 沂水县| 和硕县| 同心县| 土默特左旗| 合山市| 齐河县| 从化市| 建水县| 凤凰县| 北碚区| 横峰县| 海盐县| 昌平区| 大英县| 云和县| 万全县| 长沙市| 新野县| 崇仁县| 博客| 彰武县| 石柱| 鄯善县| 博兴县|