王立新,楊繼超
WANG Li-xin, YANG Ji-chao
(鄭州大學 機械工程學院 ,鄭州 450001)
面向現代化制造的CAD集成研究
Reasearch of integrated CAD system for manufacturer
王立新,楊繼超
WANG Li-xin, YANG Ji-chao
(鄭州大學 機械工程學院 ,鄭州 450001)
針對NC編程過程中,DWG格式文件中標注尺寸不能完全真實反映出圖形的實際尺寸問題,本文通過對AutoCAD進行二次開發和研究,探索了如何自動判斷實際尺寸和標注尺寸差異,定制出圖形標注尺寸校對功能,保證DWG文件中圖形標注的準確和一致性。經實例驗證,該功能的開發,可以很好保證圖形尺寸的準確性、極大提高數控編程的效率。
AutoCAD;二次開發;.NET API
AutoCAD計算機輔助設計軟件被廣泛應用于機械、電子、船舶、建筑、航空、服裝行業。AutoCAD的強大優勢在于開放的體系結構。不同的用戶在使用這個通用平臺過程中,可以根據自身使用情況和行業特點進行二次開發和定制。
現代加工制造業中,CAD/CAM一體化技術的發展,數控編程人員希望直接利用AutoCAD圖形,以捕捉點、線的方式進行NC編程。但是,AuotCAD圖形數據中的標注尺寸和實際尺寸的準確性和一致性,以往是需要進行人工校對和處理。核對計算機圖形的標注尺寸和計算機圖形實際尺寸時,細微的差別,單憑工程設計人員的肉眼和直覺,很難被檢測出來。這些缺乏預處理的AutoCAD數據,如果直接導入數控機床,并以此為基準,來進行加工數控編程,很容易產生誤差甚至是廢品,這給生產帶來極大的浪費和損失。傳統的AutoCAD數據人工校對手段效率低下,檢查難以徹底。借助對AutoCAD二次開發,利用計算機對數據進行前處理,提高數據的準確度,為下一步NC編程提供可靠的數據,非常有必要。
從AutoCAD2006開始,Autodesk公司開始部分使用.NET對其軟件進行開發,改變以往完全使用非托管C++的做法。基于.NET平臺的開發語言有C#、VB.NET和托管C++等。本次研究以C#為手段,對AutoCAD進行開發。使用.NET對AutoCAD進行二次開發,必須使用AutoCAD.NET托管封裝類,即添加acdbmgd.dll和acmgd.dll程序集引用。acdbmgd包含ObjectDBX托管類,用于AutoCAD數據庫服務和DWG文件操作,acmgd.dll包含ObjectARX托管類,與AutoCAD應用程序有相關聯。

圖1 .Net Framework 結構
對AutCAD數據文件進行自動分析校對,首先要以程序訪問的方式,進入AutoCAD的數據內部進行操作。AutoCAD數據庫是DWG文件在內存中的表示,是存儲AutoCAD數據庫對象的容器。AutoCAD的數據庫對象在數據庫中按層次保存,每個數庫對象,保存在特定的容器中。AutoCAD數據庫使用Autodesk.AutoCAD.DatabaseService命名空間中的Database類表示。

圖2 AutoCAD數據庫的構成
獲得當前圖形數據庫:

在.NET開發中,有關于數據的操作是通過“事務處理”來進行。AutoCAD中事務管理器TransactionManager來控制程序所以事務。通過數據庫Database.TransactionManager獲取事務管理器。方法StartTransaction()開始一個事務,Commit()提交事務,方法Abort()放棄一個事務。
實體(Entity)是具有圖形表示的數據庫對象,包括直線、圓、文本、樣條曲線和橢圓等。AutoCAD數據進行校驗的很重要的一步,是進行AutoCAD實體對象的訪問。AutoCAD實體保存在表記錄BlockTableRecord中,表記錄保存在BlockTable中。在創建AutoCAD時,一般都會存在模型空間和圖紙空間。模型空間在通常情況下用于圖形設計,圖紙空間創建最終的打印布局。如下所示:

本次研究主要的是對實體的實際尺寸和標注尺寸進行研究。在處理AutoCAD圖形的尺寸的標注,按照實體與標注的關聯情況,分為關聯(associated)和非關聯(non associate)。程序首先遍歷AutoCAD中數據庫中所有標注,當發現與實體關聯時,檢測標注是否有被代替,如果有,需要對代替的的字符進行處理,提取代替字符串中的數字,與實體實際參數進行比對。當遇到非關聯標注時,這是程序判斷的難點,也是最需要注意的地方。此時,程序要進行如下步驟的操作:第一,將標注的類型分為直線長度標注、圓直徑或半徑標注、弧長標注、角度標注。如圖3所示,確定標注為直線標注。第二,獲得標注后,可以確定點a的坐標,然后按順序在a點附近收索出點b的坐標。無論是AutoCAD圖形輪廓復雜情況,均能沿圖形尺寸標注界線點查找出附近標注的點b。

圖3 AutoCAD標注
如圖4所示,將a點按一定精度來劃分區域,b點必定在某個方框區域內,先檢測框1的區域,如果其中沒有實體端點,繼續尋找框2,依次尋找1第一圈(框1到框8),如果存在實體端點端點,停止搜尋,否則搜尋第二圈,依次循環進行,找出b點坐標(xb,yb)。按上述方法,繼續找出c點坐標(xc,yc)。計算出實體的實際尺寸:

圖4 a點區域
如上圖3所示,如果L=17.31,則標注尺寸與實際尺寸相吻合,否則,檢測出標注錯誤,并給予警告提示。
當程序檢測到標注錯誤時,發出警告來提示設計者。在此次研究中,當程序發現實體體的實際尺寸與標注尺寸不一致時,有兩種警告提示的解決方案,分別是:
a. 改變實體的顏色。實體顏色,在Autodesk.AutoCAD.Colors.Color類來表示,并且它們都有相應的索引,常見的如下:

注:索引0、256分別表示顏色隨塊和隨層。
b. 改變實體線型。在AutoCAD中,線型對象對應線型表中一條表記錄,LinetypeTableRecord,在AutoCAD.net API中,通過如下方式來獲取線型記錄:


圖5 下拉式菜單
本軟件使用C#語言,對AuotCAD平臺進行二次開發。本程序為了更好的與AutoCAD進行整合,將以主菜單的形式呈現在AutoCAD中。本程序經過編譯后,成為一個類庫,在AutoCAD運行的程序中調用。此時在AutoCAD主菜單中多了一個“開發控件”項。在“開發控件”的主菜單下,選擇“文件讀取”,自動打開需要校對的AutoCAD文件。如圖5所示,本例打開一幅繪制完成的AutoCAD圖形。
在打開的AutoCAD圖形后,點擊“標注校對”選項,開始文件標注進行校對,如圖6,彈出對話框。程序進行實體遍歷,需要確定其標注的的屬性,首先判斷標注與被標注的實體關聯性,按照關聯與否,判斷標注的準確性。本例是一個零件的三視圖,當程序檢測完圖形后,程序檢測出信息為:實體種類為3種,分別為:直線、圓和弧;當前的AutoCAD數據庫中,建立了7個圖層;在程序明細框中,列出了AutoCAD圖形中所有的標注及標注類型,并且給出了標注錯誤與否的信息。此圖有兩處標注錯誤,分別是標注為15.5的直線和標注為21的圓弧。于此同時,在AutoCAD交互繪圖區域中,這兩處錯誤的實體,即直線和圓弧,自動改為ACAD_ISO02W100線型,并將顏色標記為黃色。

圖6 程序執行

圖7 彈出信息框
AutoCAD廣泛應用于平面設計,它作為一個開放的計算機輔助設計平臺,為用戶后期的二次開發提供了強大的支持。本文通過對二次開發,對AutoCAD數據進行預處理,使AutoCAD數據更加可靠、準確,實現了CAD的人工智能化。通過實例的應用,證明該程序的可靠和準確性。
[1] 王立新,黃文良,魏維.計入尺寸公差的虛擬樣機零件生成[J].機械設計,2004,21(3):59-60.
[2] 張晉西.Visaul Basic.NET 二次開發AutoCAD范例精解[M].北京:清華大學出版社,2004.
[3] 王鈺.用VBA開發AutoCAD 2000 應用程序[M].北京:人民郵電出版社,1999.
[4] 秦洪現,崔惠嵐,孫劍.Autodesk系列產品開發培訓教程[M].北京:化學工業出版社,2008.
TP311
A
1009-0134(2010)10(下)-0035-04
10.3969/j.issn.1009-0134.2010.10(下).11
2010-01-26
河南省科技攻關項目(082102240010);鄭州大學研究生科學研究基金項目
王立新(1967 -),男,河南新鄉人,副教授,工學博士,研究方向為機械系統CAD、仿真與虛擬樣機技術。