付臘梅,曹 偉,李永剛,于海洋,張 濤,邢向宇,張懷禮
(國機鑄鍛機械有限公司,山東 濟南 250306)
隨著計算機技術的迅猛發展,計算機輔助設計已經廣泛應用于各行各業中,在工程設計越來越自動化的今天,通過AutoCAD 二次開發技術,可以實現圖形內的數據處理和算法優化,在數控操作中,將CAD 圖形轉化為數控系統可識別的NC 程序,大大減少了操作員的工作量。
AutoCAD 二次開發工具主要有:
(1)AutoLISP:簡單易學,但程序運行速度慢,缺乏保護機制;
(2)ADS:代碼冗余,一般不選擇該方式;
(3)Visual LISP;
(4)objectARX:功能強大,編程效率高,但必須使用C++來開發,相對較難;
(5)ActiveX:VB 語言和C#;由于VB 語言相對落后,語法啰嗦,與當下流行的語言差別比較大。
所以選擇C#來進行二次開發AutoCAD。
ActiveXAutomation 是微軟公司推出的一個技術標準,該技術是OLE 技術的進一步擴展,其作用是在Windows 系統的統一管理下協調不同的應用程序,允許應用程序之間相互控制、相互調用[2]。
AutoCADActiveX 可以使編程者通過編程手段從AutoCAD 的內部或外部來操縱AutoCAD。ActiveX 是由一系列的對象,按一定的層次組成的一種對象結構,每一個對象代表了AutoCAD 中一個明確的功能,如繪制圖形對象、定義塊和屬性等[2]。ActiveX 具有大部分AutoCAD 的功能,以方法或屬性的存在封裝在庫中,使用時只需調用對應的方法或對象屬性即可實現對AutoCAD 的操作,從而達到二次開發的目的。
程序設計流程圖如圖1 所示。

圖1 設計流程圖
在設計程序前,需要安裝Visual studio 2012 和AutoCAD2014。在Visual studio.net 中新建一個標準應用程序,首先需要在應用程序中新增引用,引用Auto-CAD 的類,acdbmgd.dll,acmgd.dll,accoremgd.dll 等。這些類將提供如下操作的控件,在頭文件中添加命名空間:①Autodesk.AutoCAD.EditorInput——與用戶交互有關的類;②Autodesk.AutoCAD.ApplicationServices——用來定義和注冊新的AutoCAD 命令;③Autodesk.AutoCAD.Runtime——提供了系統級別的功能;④Autodesk.AutoCAD.DatabaseServices——database類;⑤Autodesk.AutoCAD.Geometry——point3d 的命名空間。
2.2.1 設置窗體
引用和控件都加載完成后,需要創建窗體、類,窗體主要有“主窗體”,“板材”,“模具”,“配刀”,主窗體如圖2 所示,板材窗體如圖3 所示。

圖2 主窗體

圖3 板材窗體
2.2.2 畫板材
在AutoCAD 中畫板材和形成框,用兩種不同顏色的線來區分。AutoCAD 圖形數據庫包含有表和記錄,一個數據庫包含9 個符號表(塊表、層表、文字樣式表、線型表、視圖表、UCS 表、視口表、注冊應用程序表、標注樣式表)。記錄是表的單元。要創建一個圖形對象,①需要得到創建對象的圖形數據庫;②需要在內存中創建實體類的一個對象;③打開圖形數據庫的塊表;④打開存儲實體的塊表記錄;⑤將該對象添加到塊表記錄中。
部分代碼如下:


2.2.3 模具
首先把模具信息逐行從txt 文件中讀出來,放入數組;C# 中通過streamReader 類讀取文本wenda 讀取模具文件的信息,刀具類型、刀具號、刀具尺寸等信息,如下示例:

塊和屬性在AutoCAD 繪圖操作中是提高繪圖效率的重要手段,為了在后面配刀和優化提高效率,在讀取模具的時候就同時創建對應刀具的塊,到時候直接調用就可以。創建塊首先創建一個Block-TableRecord 對象并設置塊的名稱;其次利用Transaction 類的GetObject()函數獲得當前圖形的塊表對象;第三、創建組成塊的實體對象;第四、調用Block-TableRecord 類的成員函數AppendEntity 將組成塊的實體寫入塊表記錄中;]第五、調用BlockTable 類的Add 函數將創建的塊表記錄寫當前圖形的塊表中[3]。如下示例:


2.2.4 配刀
配刀首先需要獲取孔的選擇集并放入數組中,根據直徑大小將合適的刀具號依次放入對應的數組中,同時在AutoCAD 圖形中找到對應孔的圓心做標志,方便手動修改刀具號,同時知道哪些配刀成功,哪些沒有成功。這里需要用到的知識點就是獲取選擇集,將之前畫好的刀具塊放到對應的圖形。選擇集調用通過調用Editor 類的GetSelection 及SelectImplied 類來實現。如圖4 所示,紅色的為配刀成功的孔。

圖4 配刀示意圖
2.2.5 優化
這是非常關鍵的環節,一般一個加工圖形中會有上百甚至幾百個孔,怎么排序顯得特別重要,所以這里就需要根據機械設備,加工方法以及產品尺寸來確定優化算法,這里用距離比較法,及把前邊獲取的孔數據放入對應數組,然后循環遍歷數組,逐一比較它們之間的距離,按從小到大排序,這樣就把要加工的孔按由近及遠放入一個新的數組,同時達到了我們優化路徑的目的,部分代碼如下:


2.2.6 導出NC 程序
根據優化排序拼接NC 加工程序并導出到文本中,如圖6 所示。

圖6 NC 加工程序示例
通過AutoCAD 二次開發技術,可以實現復雜圖形的設計,以及圖形內的數據處理和算法優化,在數控操作中,將CAD 圖形轉化為數控系統可識別的NC 程序,減少了操作員的工作量。通過不斷的優化算法、優化路徑,大大提高了車間的加工效率,節省人力成本,起到了明顯的節能降耗作用。