梁爾祝 王 銳 劉 洋 趙 勝
(1.鞍鋼礦業爆破有限公司;2.東北大學)
AutoCAD(Autodesk Computer Aided Design)是Autodesk(歐特克)公司于1982年開發的自動計算機輔助設計軟件,發展至今,已被普遍應用于建筑、航空航天、機械、礦業等各個工程設計領域,已經成為不可或缺的輔助手段。AutoCAD以點、線、面為基本設計元素,結合旋轉、對稱、拉伸、標注等繪圖輔助功能,使之在常規的二維圖紙設計過程中表現十分良好。但在繪圖過程中,會存在許多的重復過程,如:礦山設計過程繪制坐標網、繪制示坡線等,這大大降低了AutoCAD繪圖的效率。為了提高繪圖效率,可通過AutoCAD二次開發對繪圖功能進行擴展,減少重復操作,以提高專業設計人員的繪圖效率。
AutoCAD應用十分廣泛,各個行業為了提高CAD的繪圖效率,都進行了不同程度的二次開發。彭秋萍[1]通過對AutoCAD進行二次開發,實現了批量畫點、批量繪制線段、批量修改文字高度等功能,明顯地提高了繪圖效率。胡炳輝等[2]使用AutoCAD內置的開發語言,完成了批量生成大比例尺地形圖等內容,應用簡單方便,大大提高了圖形的編輯效率。郭亮亮等[3]使用C#編程語言對AutoCAD進行二次開發,開發了測量誤差的預計系統,并實現了結果可視化的功能。陳爽等[4]使用VB編程語言,開發了邊坡穩定性分析程序,具有邊坡穩定性分析和潛在危險滑坡分析圖解功能。許婧等[5]基于Lisp程序語言對CAD原有的功能進行擴展,使CAD在U型渡槽截面設計中能夠實現自動設計、計算和制圖功能。王曉玲[6]使用Lisp程序語言編寫了六角螺栓的繪圖程序,實現了參數化繪圖功能,提高了繪圖效率。張明霞等[7]使用VBA腳本編程方法擴展CAD的功能,實現了快速生成船型線的程序。蔡漢明等[8]使用C#編程語言,開發了凸輪快速設計和繪制的功能,大大縮短了繪圖周期,提高了工作效率。
綜上所述,利用好CAD二次開發技術,可有效地擴展CAD的功能,并大大降低繪圖工作難度。本研究將采用C#編程語言,實現爆破礦巖量計算、繪制五四坐標系、大地坐標及五四坐標系相互轉化、展點(在五四坐標系中選取五四坐標點,輸出相應的大地坐標的坐標點)4個功能。
當前AutoCAD的二次開發工具主要有VisualLisp、VBA、Object ARX和.NET Frameword 4.0API等。其中,VisualLisp與VBA使用較為簡單,特別是VBA,使用方便且開發速度較快,但其功能相比ObjectARX有所不足,尤其是對面向對象的功能支持不好。而ObjectARX基于VC平臺,在C++的支持下,其功能非常強大,可以很好地運用各種面向對象技術,但其缺點是開發速度比較慢,開發難度較高。
C#是一種簡單的、面向對象的編程語言。它使得程序員可以快速地編寫各種基于Microsoft.NET Frameword 4.0平臺的應用程序,Microsoft.NET Frameword 4.0提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。由于C#面向對象的卓越設計,使它成為開發各類組件的理想之選,例如高級的商業對象和系統級的應用程序。使用簡單的C#語言結構,這些組件可以方便地轉化為XML網絡服務,從而使它們可以由任何語言在任何操作系統上通過Internet進行調用。
最重要的是,C#使得C++程序員可以高效地開發程序,而不損失C/C++原有的強大功能。因此,選用C#編程語言進行開發。
以visual studio2015為開發平臺,開發環境為PC機的Windows系統,編譯生成二進制可執行文件。使用C#高級編程語言,具體開發流程如下。
(1)新建Visual C#類庫項目。
(2)添加引用。為了能夠實現CAD二次開發并啟動程序,需要添加調用dll文件,在引用管理器中添加2個必需的dll類文件,acdbmgd.dl(l用于在圖形文件中對對象操作)和acmgd.dl(l用于對AutoCAD應用程序操作)。其他的類文件像AcCui.dl(l用于用戶自定義文件操作)、AdWindows.dl(l用于用戶自定義工具條及菜單等用戶界面)等在需要時再添加。
(3)目標框架。每個AutoCAD的版本必須要對應各自兼容的目標框架,CAD2007~2009對應.NET Framework 2.0,CAD2010~2011對應.NET Framework 3.5,CAD2012~2014對應.NET Framework 4.0。本研究采用的是AutoCAD 2014版本以及Visual studio2015的Framework 4.0。
(4)目標平臺。在項目屬性中的生成選項中選擇合適的目標平臺。
(5)加入命名空間。加入命名空間是為了調用其中的對象,來完成代碼的編寫。本研究實現的功能需要加入下列具體命名空間:
using Autodesk.AutoCAD.ApplicationServices;/(/Application,Document)
using Autodesk.AutoCAD.EditorInput;/(/Editor,PromptXOptions)
using Autodesk.AutoCAD.DatabaseServices;//(Database,DBPoint,Line)
為了更好地籌集小型農田水利設施建設資金,可以積極引導當地富裕農戶和企業進行水利工程的投資,在工程投入使用后按照一定的比例對投資者進行合理的利潤分配。水利設施的建設者、所有者以及受益者是一個密不可分的利益共同體,他們既是所有者又是勞動者,通過資金和勞動的貢獻量來確定分紅的比例。相關職能部門要制定嚴格的建設管理措施,明確各方的責任與義務,嚴格執行各項規章制度,積極指導經營管理,做好監督檢查工作,保證各項工作的順利開展。
using Autodesk.AutoCAD.Geometry;//(Point3d,Line3d,Curve3d)
(6)聲明命令。在.NET Frameword 4.0中,有一個帶[CommandMethod()]屬性的類,將命令注冊在其中。本研究中聲明命令的代碼如下。
public class Start
{
[CommandMethod("crtpk")]
public void CreatePaokong()
{
//命令執行代碼
}
礦山設計插件整體開發流程見圖1。

通過CAD二次開發編寫用戶自定義的拓展程序,實現計算礦巖量、變換五四坐標系、變換大地坐標系、繪制坐標系、展點4個功能,見圖2。

通過獲取上下面積以及平均高差計算礦巖量,計算界面如圖3所示,通過鼠標單擊或框選獲取計算所需要的邊界點、標高信息,并確定礦巖種類,進行計算,計算公式如下。

式中,totalmine為所選區域礦石總質量;totalrock為巖石總量;areaa為所選區域的上面積;areab為所選區域的下面積;heigha為所選區域的上部標高平均值;heighb為所選區域的下部標高平均值;ratiomine為所選區域內礦石占比;ratiorock為所選區域內巖石占比;ρmine為礦石的密度;ρrock為巖石的密度。
通過所選取的信息以及式(1)、式(2)計算出的爆破礦巖量,結果如圖4所示。


繪制坐標系可選擇3種比例尺,分別為1∶500,1∶1 000,1∶2 000,案例中坐標系原點設置為(6 733.824,-10 139.907),通過坐標變換,將CAD原有坐標變換成五四坐標。通過對角線繪制方法(即選定坐標系的左上點與右下點)繪制坐標系。
在礦山制圖過程中,常常需要進行五四坐標系與大地坐標系之間的相關轉化,以滿足制圖的精確性。通過式(3)、式(4)坐標變換關系進行五四坐標系與大地坐標系的變換,公式如下

式中,x為五四坐標中的橫坐標值;X為大地坐標中的橫坐標值;y為五四坐標中的縱坐標值;Y為大地坐標中的縱坐標值;originx為設定的原點橫坐標值;originy為設定的原點縱坐標值;α=72.284°。
五四坐標系與大地坐標系相對關系如圖5所示。

在礦山制圖過程中,局部點坐標需要由五四坐標系轉化為大地坐標系,即為坐標展點。本方案中可以通過式(3)、式(4)進行計算,在CAD的命令欄中顯示轉化后的坐標,完成坐標展點。
使用C#編程語言,基于.NET Frameword 4.0框架,結合礦山設計的需求,完成了爆破礦巖量計算、繪制五四坐標系、五四坐標系與大地坐標系的相互轉化、展點功能,使AutoCAD在礦山設計方面更簡潔、方便、快速,大大提高了設計的效率。