朱佳


摘 要 從高速公路勘察地調工作的最終成果文件出發,提出工作程序優化設想,介紹了采用C#對AutoCAD進行二次開發的基本流程,同時結合地調成果文件的格式,編制出工作輔助小插件,大大減少人為輸入,提升了工作效率。
關鍵詞 地質調查;AutoCAD;二次開發;高速公路勘察
引言
地質調查是高速公路勘察過程中必不可少的一環,在地調工作中,往往會測得大量的巖層、裂隙產狀數據,這些數據在現場是記錄在野外記錄簿中或是地質平面圖中,但最終都要在CAD圖中予以描述。通常這些數據量都比較大,如逐個上圖,耗時耗力,效率不高且易出錯,本文通過對AutoCAD軟件進行二次開發,大大優化這一輸入過程,提升工作效率。
1基于C#的二次開發方法
從AutoCAD2004開始,.NET開發CAD的大門即被開啟,對其進行二次開發用到的主要工具有ObjectARX、VBA和Lisp,這些工具各有優缺點,.NET結合了VC++的強大功能與VBA簡單易用的特點[1],可以較快地開發出強大的AutoCAD程序,本文基于C#.NET語言進行二次開發[2]。
2編程環境構建
Visual Studio是目前最流行的Windows平臺應用程序的集成開發環境,C#便整合在其中。
VS與CAD的版本眾多,使用兩者進行二次開發選擇也比較多。本文采用VS2012+AutoCAD2014 +Win7進行CAD二次開發。
3CAD二次開發方法
3.1 基本操作流程
首先,使用VS建立類庫項目文件,項目類型為Visual C#語言,為了調用CAD中的對象、方法,并向模型空間中繪制圖形,需要對CAD自帶的程序集accoremgd、acdbmgd、acmgd進行引用,并設置“復制本地”為否。
3.2 導入相關命名空間
在程序集引用完畢之后,還需導入相關命名空間,這樣做的好處是對某個對象進行調用時不必在對象名稱前添加一系列的限定符,如圖1所示。
圖1 導入命名空間
Autodesk.AutoCAD.ApplicationServices命名空間中的類用來定義和注冊新的CAD命令,命令的使用方法完全同CAD自身的命令,這是內庫文件用于CAD中的常用方法,無須建立專門的數據窗口。
Autodesk.AutoCAD.DatabaseServices命名空間中的類表示組成CAD圖形數據庫的元素。
Autodesk.AutoCAD.EditorInput命名空間提供了與用戸交互有關的類,這也是獲取繪圖數據的主要途徑之一。
4程序實現
根據巖層、裂隙的產狀標注格式,及上述二次開發方法,程序有要代碼實現如下:
PromptPointOptions optPoint = new PromptPointOptions(“\n請輸入插入點<0,0>”); //通過交戸獲取插入點
optPoint.AllowNone = true;
PromptPointResult resPoint = ed.GetPoint(optPoint);
if (resPoint.Status == PromptStatus.Cancel)
return;
Point3d InsertPnt; //定義插入點
if (resPoint.Status == PromptStatus.None) //使用默認數據
InsertPnt = new Point3d(0, 0, 0);
else
InsertPnt = resPoint.Value; //使用用戸輸入的數據
double[] dipInfor = new double[2]; //存儲傾向、傾角數據
Point3d tempPnt; //臨時數據存放
PromptPointOptions optOcc = new PromptPointOptions(“\n請輸入裂隙的產狀<0°,0°>”);
PromptPointResult resOcc = ed.GetPoint(optOcc);
tempPnt = resOcc.Value;
dipInfor[0] = tempPnt.X;
dipInfor[1] = tempPnt.Y;
至此,產狀信息獲取完畢,然后使用簡單的多段線生成命令和文字標注命令即可完成產狀符號的繪制和注釋,如下圖所示,表示裂隙的傾向為45°,傾角為45°。
圖2 裂隙產狀符號及注釋
5結束語
使用CAD加載編制好的類庫文件進行巖層產狀信息的錄入,可以大大提高工作效率,類似的重復錄入工作亦可參考本例進行插件開發。
參考文獻
[1] 曾洪飛,盧擇臨,張帆,等.AutoCAD VBA&VB.NET開發基礎與實例教程[M].北京:中國電力出版社,2013:73.
[2] JohnSharp,夏普,周靖.Visual C# 2012從入門到精通[M].北京:清華大學出版社,2014:215.