白曉燦,陳永明
(廈門大學機電工程系,福建廈門361005)
隨著現代經濟的不斷發展,CAD/CAM一體化技術在企業中的地位越來越重要,而CAD/CAM集成的一個重要環節就是如何將CAD中的幾何圖形信息提取出來,進而轉化成CAM信息[1]。
DXF(Drawing Exchange Files)文件是AutoCAD的一種支持開放數據交換的數據格式,其包含圖形和非圖形信息,這些信息被組織成塊,并通過特定的格式進行記錄。由于DXF文件格式易于閱讀分析,故一直是廣大CAD/CAM研發人員研究分析的對象[2]。本文提出通過讀入DXF文件,實現橋切機數控代碼的自動編寫。本系統以VB6.0為開發工具,進行編程,提供了簡潔、友好的人機操作界面。
為了從DXF文件中提取有用的圖形信息,有必要首先對DXF的文件結構進行剖析。一個完整的DXF文件由七大段(SECTION)組成。這些段分別為:HEADER段,CLASSES段,TABLES段,BLOCKS段,ENTITIES段,OBJECTS段,文件結束符號(組碼為 0,組值為 EOF)[3]。
標題段(HEADER Section)包含了AutoCAD系統的所有標題變量的當前狀態,這些標題變量記錄了AutoCAD系統當前工作環境,如AutoCAD的版本號,繪圖界限的左下角、右上角,當前圖名、線型、顏色等。
類段(CLASSES Section)主要包含了應用類的信息,這些類的實例出現在塊、實體以及對象數據庫中尺寸類型表、層表、線型表、文本風格表、用戶坐標系表、視圖表和視窗配置表。
表段(TABLES Section)包括9個表,每個表又包含不變數目的表項,這些表在文件中出現的順序依次為:應用程序標識符表,塊引用描述表,層描述表,線型定義表,文本格式表,用戶坐標系統表,視圖表,視口配置表。
塊段 (BLOCKS Section)記錄了圖形中塊的定義信息及塊中的實體信息。
實體段(ENTITES Section)主要記錄了圖形中幾何實體的幾何圖形信息。
對象段 (OBJECTS Section)主要記錄了圖形中非幾何實體的信息。
DXF文件中每一個段均以一個組碼為0、組值為字符串SECTION的組開始,后跟一個組碼為2、組值為表示該段名的字符串的組,其后為組成該段的各個組。最后以一個組碼為0、組值為字符串ENDSEC的組來表示該組結束。以實體段為例,其結構如下:
0
SECTION
2
ENTITIES
……
0
ENDSEC
本文主要是針對AutoCAD的DXF文件的自動編程。對于數控編程來說,所需要的最重要編程信息是刀具軌跡。DXF文件的信息豐富,7大段中與幾何圖形有關的幾何信息均包含在實體段中(圖形中若含有塊,將塊打散后,塊包含的圖形信息也將出現在實體段中),因而DXF文件中圖形信息的提取,就是在實體段中對圖形幾何信息的提取,其他幾段可以忽略。
在提取過程中,主要有以下兩個問題:
(1)DXF文件包含了豐富的信息,其中有用的信息主要是存儲在實體段中,但并不是實體段中存儲的所有的信息都是我們的編程信息,因此需要對實體段的信息進行篩選。
(2)在DXF文件中,實體段存儲實體幾何信息的出現先后次序,是根據實體幾何信息的輸入次序而定的,即繪圖時產生的,這一順序與實際的加工順序不一定會相符,因此需要對實體的加工順序進行重新排序。
實體段中的實體有:點、直線、圓、圓弧、折線、線、文本、形等,本文將以數控加工中常見特征直線和圓弧為例,說明提取數據的方法,對于其他實體類型,方法是相同的。一個DXF文件的實體段由若干個組構成,每個組占兩行,第一行為組的代碼,第二行為組值。組碼為整型的代碼,組值為具體的數值和代碼,兩者結合起來,表示一個數據的含義和它的值。不同實體在DXF文件中記錄的要素不同,表征一條直線的實體數據如表1,表征一個圓弧的實體數據如表2。

表1 直線的實體數據

表2 圓弧的實體數據
通過分析,發現圖形文件中包含的圖形對象與實體段組碼和組值提供的信息一致。據此可以采用判斷組碼獲得組值內容的方法提取出有用的信息。圖1為用VB6.0提取有用信息的流程圖[3~4]。

圖1 DXF文件信息提取流程
通過上述方法所得到的幾何實體的順序,是以DXF文件中的先后順序出現的,這不一定是實際的加工順序,在一般情況下要對其進行重新排序。采用的方法是:
(1)先將通過上述方法所獲得的數據做進一步處理成以下格式:
LINE 起點坐標 終點坐標
ARC 起點坐標 終點坐標 圓心坐標 半徑 順逆方向
(2)根據處理完數據的格式,運用VB6.0的畫圖命令,將幾何圖形以縮放一定的比例顯示出來;
(3)由操作者點擊顯示圖形的連接點,由于所點擊的每個連接點實際上都是DXF文件里一個特定幾何實體的起點坐標,因此按照操作者點擊起點坐標的順序,即可生成所需的加工順序(如圖2)。

圖2 加工順序編輯圖形
處理后的數據按照加工順序存于一個二維數組Data(a,b)里。格式如下:
當實體為直線時:
Data(a,0)=L INE,Data(a,1)=起點坐標,Data(a,2)=終點坐標;
當實體為圓弧時:
Data(a,0)=ARC,Data(a,1)=起點坐標,Data(a,2)=終點坐標,
Data(a,3)=圓心坐標,Data(a,4)=半徑,Data(a,5)=順逆方向
后置處理是一個文本編輯處理的過程,其作用是將讀取的圖形信息根據指定數控機床的特點及規定的格式進行分析、判斷和處理,轉化為機床能夠識別的NC代碼并輸出。
生成數控加工程序時需要由操作者確定其他加工參數,可通過人機對話的方式來確定(如圖3)。

圖3 其他加工參數人機對話框
后置處理程序流程圖如圖4[4]。

圖4 后置處理程序流程
本系統成功實現了數控加工的自動編程,不再需要人工編程,從而解塊了人工數控編程繁瑣易錯的問題,縮短了編程及調試時間,提高了數控機床利用率。該系統通用性良好,既可以作為橋切機的實現自動編程的功能模塊,又可整合到其他數控系統中使用。
[1]江平宇,周光輝.CAD/CAM基本原理與應用[M].北京:機械工業出版社,2008.
[2]葉建華,謝明紅,賈敏忠.基于DXF文件的自動編程系統研究[J].機械設計制造,2005,(8):149-151.
[3]徐世林,宋國寶,陳亞東.基于AutoCAD的數控加工自動編程系統的開發[J].機床與液壓,2006,(3):214-215,224.
[4]郭圣路,張榮圣.Visual Basic 6.0從入門到精通[M].北京:電子工業出版社,2008.