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