白曉燦,陳永明
(廈門(mén)大學(xué)機(jī)電工程系,福建廈門(mén)361005)
隨著現(xiàn)代經(jīng)濟(jì)的不斷發(fā)展,CAD/CAM一體化技術(shù)在企業(yè)中的地位越來(lái)越重要,而CAD/CAM集成的一個(gè)重要環(huán)節(jié)就是如何將CAD中的幾何圖形信息提取出來(lái),進(jìn)而轉(zhuǎn)化成CAM信息[1]。
DXF(Drawing Exchange Files)文件是AutoCAD的一種支持開(kāi)放數(shù)據(jù)交換的數(shù)據(jù)格式,其包含圖形和非圖形信息,這些信息被組織成塊,并通過(guò)特定的格式進(jìn)行記錄。由于DXF文件格式易于閱讀分析,故一直是廣大CAD/CAM研發(fā)人員研究分析的對(duì)象[2]。本文提出通過(guò)讀入DXF文件,實(shí)現(xiàn)橋切機(jī)數(shù)控代碼的自動(dòng)編寫(xiě)。本系統(tǒng)以VB6.0為開(kāi)發(fā)工具,進(jìn)行編程,提供了簡(jiǎn)潔、友好的人機(jī)操作界面。
為了從DXF文件中提取有用的圖形信息,有必要首先對(duì)DXF的文件結(jié)構(gòu)進(jìn)行剖析。一個(gè)完整的DXF文件由七大段(SECTION)組成。這些段分別為:HEADER段,CLASSES段,TABLES段,BLOCKS段,ENTITIES段,OBJECTS段,文件結(jié)束符號(hào)(組碼為 0,組值為 EOF)[3]。
標(biāo)題段(HEADER Section)包含了AutoCAD系統(tǒng)的所有標(biāo)題變量的當(dāng)前狀態(tài),這些標(biāo)題變量記錄了AutoCAD系統(tǒng)當(dāng)前工作環(huán)境,如AutoCAD的版本號(hào),繪圖界限的左下角、右上角,當(dāng)前圖名、線型、顏色等。
類(lèi)段(CLASSES Section)主要包含了應(yīng)用類(lèi)的信息,這些類(lèi)的實(shí)例出現(xiàn)在塊、實(shí)體以及對(duì)象數(shù)據(jù)庫(kù)中尺寸類(lèi)型表、層表、線型表、文本風(fēng)格表、用戶(hù)坐標(biāo)系表、視圖表和視窗配置表。
表段(TABLES Section)包括9個(gè)表,每個(gè)表又包含不變數(shù)目的表項(xiàng),這些表在文件中出現(xiàn)的順序依次為:應(yīng)用程序標(biāo)識(shí)符表,塊引用描述表,層描述表,線型定義表,文本格式表,用戶(hù)坐標(biāo)系統(tǒng)表,視圖表,視口配置表。
塊段 (BLOCKS Section)記錄了圖形中塊的定義信息及塊中的實(shí)體信息。
實(shí)體段(ENTITES Section)主要記錄了圖形中幾何實(shí)體的幾何圖形信息。
對(duì)象段 (OBJECTS Section)主要記錄了圖形中非幾何實(shí)體的信息。
DXF文件中每一個(gè)段均以一個(gè)組碼為0、組值為字符串SECTION的組開(kāi)始,后跟一個(gè)組碼為2、組值為表示該段名的字符串的組,其后為組成該段的各個(gè)組。最后以一個(gè)組碼為0、組值為字符串ENDSEC的組來(lái)表示該組結(jié)束。以實(shí)體段為例,其結(jié)構(gòu)如下:
0
SECTION
2
ENTITIES
……
0
ENDSEC
本文主要是針對(duì)AutoCAD的DXF文件的自動(dòng)編程。對(duì)于數(shù)控編程來(lái)說(shuō),所需要的最重要編程信息是刀具軌跡。DXF文件的信息豐富,7大段中與幾何圖形有關(guān)的幾何信息均包含在實(shí)體段中(圖形中若含有塊,將塊打散后,塊包含的圖形信息也將出現(xiàn)在實(shí)體段中),因而DXF文件中圖形信息的提取,就是在實(shí)體段中對(duì)圖形幾何信息的提取,其他幾段可以忽略。
在提取過(guò)程中,主要有以下兩個(gè)問(wèn)題:
(1)DXF文件包含了豐富的信息,其中有用的信息主要是存儲(chǔ)在實(shí)體段中,但并不是實(shí)體段中存儲(chǔ)的所有的信息都是我們的編程信息,因此需要對(duì)實(shí)體段的信息進(jìn)行篩選。
(2)在DXF文件中,實(shí)體段存儲(chǔ)實(shí)體幾何信息的出現(xiàn)先后次序,是根據(jù)實(shí)體幾何信息的輸入次序而定的,即繪圖時(shí)產(chǎn)生的,這一順序與實(shí)際的加工順序不一定會(huì)相符,因此需要對(duì)實(shí)體的加工順序進(jìn)行重新排序。
實(shí)體段中的實(shí)體有:點(diǎn)、直線、圓、圓弧、折線、線、文本、形等,本文將以數(shù)控加工中常見(jiàn)特征直線和圓弧為例,說(shuō)明提取數(shù)據(jù)的方法,對(duì)于其他實(shí)體類(lèi)型,方法是相同的。一個(gè)DXF文件的實(shí)體段由若干個(gè)組構(gòu)成,每個(gè)組占兩行,第一行為組的代碼,第二行為組值。組碼為整型的代碼,組值為具體的數(shù)值和代碼,兩者結(jié)合起來(lái),表示一個(gè)數(shù)據(jù)的含義和它的值。不同實(shí)體在DXF文件中記錄的要素不同,表征一條直線的實(shí)體數(shù)據(jù)如表1,表征一個(gè)圓弧的實(shí)體數(shù)據(jù)如表2。
表1 直線的實(shí)體數(shù)據(jù)
表2 圓弧的實(shí)體數(shù)據(jù)
通過(guò)分析,發(fā)現(xiàn)圖形文件中包含的圖形對(duì)象與實(shí)體段組碼和組值提供的信息一致。據(jù)此可以采用判斷組碼獲得組值內(nèi)容的方法提取出有用的信息。圖1為用VB6.0提取有用信息的流程圖[3~4]。
圖1 DXF文件信息提取流程
通過(guò)上述方法所得到的幾何實(shí)體的順序,是以DXF文件中的先后順序出現(xiàn)的,這不一定是實(shí)際的加工順序,在一般情況下要對(duì)其進(jìn)行重新排序。采用的方法是:
(1)先將通過(guò)上述方法所獲得的數(shù)據(jù)做進(jìn)一步處理成以下格式:
LINE 起點(diǎn)坐標(biāo) 終點(diǎn)坐標(biāo)
ARC 起點(diǎn)坐標(biāo) 終點(diǎn)坐標(biāo) 圓心坐標(biāo) 半徑 順逆方向
(2)根據(jù)處理完數(shù)據(jù)的格式,運(yùn)用VB6.0的畫(huà)圖命令,將幾何圖形以縮放一定的比例顯示出來(lái);
(3)由操作者點(diǎn)擊顯示圖形的連接點(diǎn),由于所點(diǎn)擊的每個(gè)連接點(diǎn)實(shí)際上都是DXF文件里一個(gè)特定幾何實(shí)體的起點(diǎn)坐標(biāo),因此按照操作者點(diǎn)擊起點(diǎn)坐標(biāo)的順序,即可生成所需的加工順序(如圖2)。
圖2 加工順序編輯圖形
處理后的數(shù)據(jù)按照加工順序存于一個(gè)二維數(shù)組Data(a,b)里。格式如下:
當(dāng)實(shí)體為直線時(shí):
Data(a,0)=L INE,Data(a,1)=起點(diǎn)坐標(biāo),Data(a,2)=終點(diǎn)坐標(biāo);
當(dāng)實(shí)體為圓弧時(shí):
Data(a,0)=ARC,Data(a,1)=起點(diǎn)坐標(biāo),Data(a,2)=終點(diǎn)坐標(biāo),
Data(a,3)=圓心坐標(biāo),Data(a,4)=半徑,Data(a,5)=順逆方向
后置處理是一個(gè)文本編輯處理的過(guò)程,其作用是將讀取的圖形信息根據(jù)指定數(shù)控機(jī)床的特點(diǎn)及規(guī)定的格式進(jìn)行分析、判斷和處理,轉(zhuǎn)化為機(jī)床能夠識(shí)別的NC代碼并輸出。
生成數(shù)控加工程序時(shí)需要由操作者確定其他加工參數(shù),可通過(guò)人機(jī)對(duì)話(huà)的方式來(lái)確定(如圖3)。
圖3 其他加工參數(shù)人機(jī)對(duì)話(huà)框
后置處理程序流程圖如圖4[4]。
圖4 后置處理程序流程
本系統(tǒng)成功實(shí)現(xiàn)了數(shù)控加工的自動(dòng)編程,不再需要人工編程,從而解塊了人工數(shù)控編程繁瑣易錯(cuò)的問(wèn)題,縮短了編程及調(diào)試時(shí)間,提高了數(shù)控機(jī)床利用率。該系統(tǒng)通用性良好,既可以作為橋切機(jī)的實(shí)現(xiàn)自動(dòng)編程的功能模塊,又可整合到其他數(shù)控系統(tǒng)中使用。
[1]江平宇,周光輝.CAD/CAM基本原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2008.
[2]葉建華,謝明紅,賈敏忠.基于DXF文件的自動(dòng)編程系統(tǒng)研究[J].機(jī)械設(shè)計(jì)制造,2005,(8):149-151.
[3]徐世林,宋國(guó)寶,陳亞?wèn)|.基于AutoCAD的數(shù)控加工自動(dòng)編程系統(tǒng)的開(kāi)發(fā)[J].機(jī)床與液壓,2006,(3):214-215,224.
[4]郭圣路,張榮圣.Visual Basic 6.0從入門(mén)到精通[M].北京:電子工業(yè)出版社,2008.