国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(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)稱: DXF)作為Autodesk公司開發(fā)的用于AutoCAD與其它軟件之間進(jìn)行CAD數(shù)據(jù)交換的一種文件格式,其可讀性好,占用內(nè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)造而成,這里的代碼稱為組碼.需指定組碼的值的類型和用途,每個(gè)組碼的值必須為單獨(dú)的一行.該組碼不僅指出了其對(duì)應(yīng)組值的類型,而且與此組值配對(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í)體類型包括直線(LINE)、圓(CIRCLE)、圓弧(ARC)、橢圓(ELLIPSE)、多段線(POLYLINE)、文本(TEXT)等十幾種[10-11].

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

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

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

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

Type Dxf_Cline= Class

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

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

Previous:Dxf_Cline;

Next:Dxf_Cline;

……

將DXF文件中的圖元按其類型進(jìn)行分類解析,提取的各圖元信息存儲(chǔ)于各類數(shù)據(jù)結(jié)構(gòu)中,將各圖元類作為鏈表結(jié)構(gòu)中的結(jié)點(diǎn)并按DXF文件中圖元出現(xiàn)的先后順序存儲(chǔ)在給定的鏈表結(jié)構(gòu)中,鏈表中的每一結(jié)點(diǎn)元素即為一種類型的圖元,則可以構(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)

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

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

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

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

if str='AcDbLine' then // 讀取直線圖元信息

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

startY:= height_coordiate-round(strtofloat(mdxf.Lines[i+4])) ;//讀取直線段起始坐標(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) ;//繪制直線

……

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

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

Tfast_line2=function(ch1:integer;pos1:INTEGER;ch2:integer;pos2:INTEGER):integer; stdcall;//兩軸做快速直線運(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); //激光開

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ù)格式的解析,以直線段LINE圖元為例在Delphi開發(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é)提供的開發(fā)和試驗(yàn)平臺(tái)!

[1] 胡方霞,劉杰,任艷君. 基于AUTOCAD二次開發(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面域的圖形接口開發(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é)編程
基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
睡夢(mèng)解析儀
電競(jìng)初解析
商周刊(2017年12期)2017-06-22 12:02:01
相機(jī)解析
留坝县| 洪江市| 扬州市| 惠来县| 桦川县| 四平市| 凤翔县| 施秉县| 安阳县| 尚志市| 大兴区| 永川市| 峡江县| 吴忠市| 龙井市| 万州区| 扬中市| 桐城市| 鄂托克旗| 西丰县| 图木舒克市| 新田县| 柏乡县| 历史| 锦屏县| 石棉县| 安龙县| 湟中县| 花垣县| 历史| 宁国市| 宽甸| 自贡市| 桃园县| 即墨市| 鄂尔多斯市| 全州县| 刚察县| 桂林市| 汝阳县| 建阳市|