羅碧君
摘 要:從CAD支持點(diǎn)NET以來(lái),給開(kāi)發(fā)人員帶來(lái)了很大的便利。在建筑繪圖領(lǐng)域,利用點(diǎn)NET在CAD下面進(jìn)行二次開(kāi)發(fā)成為主流,開(kāi)發(fā)自動(dòng)化繪圖應(yīng)用提高了建筑領(lǐng)域數(shù)據(jù)處理和繪圖工作的效率,減輕了工作的勞動(dòng)強(qiáng)度。本文主要介紹利用VB.NET開(kāi)發(fā)自動(dòng)化繪圖的步驟及要點(diǎn)。
關(guān)鍵詞:CAD二次開(kāi)發(fā);VB.NET;自動(dòng)化繪圖;地形圖
1 前言
隨著VB.NET在開(kāi)發(fā)領(lǐng)域的利用越來(lái)越廣,CAD的最新版本已經(jīng)支持點(diǎn)NET進(jìn)行二次開(kāi)發(fā)。CAD以前只有LISP、VBA等進(jìn)行二次開(kāi)發(fā),這幾種開(kāi)發(fā)方式都有自己的優(yōu)點(diǎn)和缺點(diǎn)。CAD支持點(diǎn)NET后,可以充分發(fā)揮點(diǎn)NET的綜合開(kāi)發(fā)的功能,讓開(kāi)發(fā)人員更便捷快速的利用CAD的各項(xiàng)功能。下面主要介紹利用VB.NET在CAD下面進(jìn)行開(kāi)發(fā),并以實(shí)例:開(kāi)發(fā)自動(dòng)化繪圖應(yīng)用簡(jiǎn)單介紹開(kāi)發(fā)步驟和要點(diǎn)。
2 CAD二次開(kāi)發(fā)的需求
在建設(shè)繪圖領(lǐng)域工作中,時(shí)常需要利用CAD制圖工具進(jìn)行繪圖及數(shù)據(jù)內(nèi)業(yè)處理。但是由于建筑測(cè)繪專業(yè)工作的特殊性,有時(shí)候處理的數(shù)據(jù)比較繁多,利用CAD直接一個(gè)個(gè)的人工進(jìn)行數(shù)據(jù)處理繪制圖形,需要花費(fèi)的時(shí)間和人力是比較多的。這樣就需要有一個(gè)可以處理大批量數(shù)據(jù)的程序應(yīng)用,利用CAD自動(dòng)的繪制數(shù)據(jù)所代表的圖形元素(包括點(diǎn)、線、圓、符號(hào)、文字等),需要處理的數(shù)據(jù)有時(shí)幾百、幾千,甚至上萬(wàn)個(gè)數(shù)據(jù),給我們?cè)谝巴馔瓿蓽y(cè)繪調(diào)查后處理數(shù)據(jù)繪制圖形工作帶來(lái)很大的壓力。這個(gè)就需要我們有一個(gè)在CAD下面可以處理和繪制大批量數(shù)據(jù)的應(yīng)用提供使用,滿足內(nèi)業(yè)處理數(shù)據(jù)和圖形繪制工作,提高工作的效率和降低勞動(dòng)的強(qiáng)度。在CAD支持點(diǎn)NET進(jìn)行開(kāi)發(fā)后,我們可以方便的利用它來(lái)進(jìn)行這方面的工作。我們利用在CAD下面實(shí)現(xiàn)繪制測(cè)繪地形圖的部分元素方法來(lái)認(rèn)識(shí)利用VB.NET在CAD下面進(jìn)行的二次開(kāi)發(fā)方法。
3 開(kāi)發(fā)工具準(zhǔn)備
利用點(diǎn)NET在CAD下進(jìn)行二次開(kāi)發(fā)主要利用工具包括:VB.NET開(kāi)發(fā)工具(本文利用VS2008)、AutoCAD(支持點(diǎn)NET版本)本文利用CAD2008版。
4 VB.NET開(kāi)發(fā)流程
4.1 準(zhǔn)備數(shù)據(jù)
4.1.1 點(diǎn)數(shù)據(jù)樣式:一個(gè)點(diǎn)數(shù)據(jù)包括X,Y,H,點(diǎn)號(hào)四個(gè)數(shù)值。樣例:100,100,20,A(代表X=100,Y=100,H=20,點(diǎn)號(hào)為A)。準(zhǔn)備一個(gè)樣式數(shù)據(jù)文件(點(diǎn)數(shù)據(jù).txt):
4.1.2 線數(shù)據(jù)樣式:一個(gè)線數(shù)據(jù)樣式包括起點(diǎn)X,Y,H;終點(diǎn)X,Y,H六個(gè)數(shù)值。樣例:100,100,10,200,200,20。準(zhǔn)備一個(gè)樣式數(shù)據(jù)文件(線數(shù)據(jù).txt):
4.1.3 文字?jǐn)?shù)據(jù)樣式:一個(gè)文字?jǐn)?shù)據(jù)樣式包括X,Y,H,位置四個(gè)數(shù)值。樣例:100,100,20,房子。準(zhǔn)備一個(gè)樣式數(shù)據(jù)文件(文字?jǐn)?shù)據(jù).txt):
4.2 VB.NET建立DLL文件
本過(guò)程主要目的利用VB.NET建立一個(gè)可以在CAD下面加載運(yùn)行的生成chengtu.dll文件。主要步驟包括如下:
①建立解決方案。②添加類項(xiàng)目。③引用相關(guān).NET, CAD的acdbmdb.dll、acmgd.dll等。④編寫(xiě)代碼文件:主要包括連接CAD空間、菜單代碼、功能代碼等。
a.在CAD下面加載一個(gè)目錄菜單
Dim pm As AcadPopupMenu = acadapp.MenuGroups.Item(0).Menus.Add(“成圖”)
b.建立菜單項(xiàng)
pmi = pm.AddMenuItem(pm.Count + 1, “新建數(shù)據(jù)庫(kù)”, “_XJSJK ”),換行,pmi.HelpString = “新建數(shù)據(jù)庫(kù)”。
pm.AddSeparator(pm.Count + 1),添加一個(gè)分隔條
pmi = pm.AddMenuItem(pm.Count + 1, “錄入數(shù)據(jù)”, “_Lrsj ”),換行,pmi.HelpString = “錄入*txt格式數(shù)據(jù)”
pmi = pm.AddMenuItem(pm.Count + 1, “繪制圖”, “_Hzt ”),換行,pmi.HelpString = “繪制圖”
c.編寫(xiě)功能代碼
新建數(shù)據(jù)庫(kù)代碼:dbs = ws.CreateDatabase(gxpath, DAO.LanguageConstants.dbLangChineseSimplified)
td = dbs.CreateTableDef(“ZB”)
然后在表tb添加相關(guān)的數(shù)據(jù)字段:X坐標(biāo)、Y坐標(biāo)、H坐標(biāo)、點(diǎn)號(hào)等。
繪制點(diǎn)及點(diǎn)號(hào)代碼:
Point=mspace.AddText(點(diǎn)號(hào), ZB, DX)
wtext = mspace.AddText(點(diǎn)號(hào), ZB, DX),注:點(diǎn)號(hào),ZB,為每一條記錄的點(diǎn)號(hào)和XYZ坐標(biāo)。
繪制直線:
LJCK = mspace.AddLine(qdzb, zdzb)
注:qdzb,zdzb為每一條記錄的起點(diǎn)XY和終點(diǎn)的XY。
繪制塊:
acadblock = mspace.InsertBlock(ZB, 塊名字, 1, 1, 1, 0)
繪制圓:
acadblock = mspace.AddCircle(ZB, 2)
⑤生成chengtu.dll文件
利用VB.net生成chengtu.dll文件,直接在VB.NET下面生成打包,生成chengtu.dll文件。相關(guān)過(guò)程可以參考VB.NET幫助。
4.3 CAD加載chengtu.dll文件
在CAD下面,輸入命令NETLOAD,按照窗口加載以上生成的chengtu.dll文件。在CAD下面輸入命令addmenu,在CAD下面加載菜單“成圖”(菜單項(xiàng)包括:繪制點(diǎn)、繪制線、繪制塊、繪制圓等。
4.4 利用菜單命令繪圖
(1)點(diǎn)擊菜單“新建數(shù)據(jù)庫(kù)”,選擇目錄文件建設(shè)一個(gè)自己的繪圖使用的數(shù)據(jù)庫(kù)文件。
(2)點(diǎn)擊菜單“錄入數(shù)據(jù)”,選擇測(cè)繪的數(shù)據(jù)文件。
(3)繪制圖形數(shù)據(jù)。點(diǎn)擊繪制點(diǎn),在CAD下執(zhí)行繪制點(diǎn)代碼,讀取每天數(shù)據(jù)庫(kù)記錄,按照相應(yīng)的數(shù)據(jù)在圖形文件上面繪制點(diǎn)元素,并繪制文字。同理繪制線、塊、圓的元素,自動(dòng)進(jìn)行處理。
(4)保存繪制的圖形CAD文件:圖形.dwg。繪制圖形完成。
5 總結(jié)
在基于CAD二次開(kāi)發(fā)方面,VB.NET可以實(shí)現(xiàn)很多以前其他方法在CAD下面可以實(shí)現(xiàn)的事情,并更加方便快捷。本次介紹的在CAD下面實(shí)現(xiàn)的最基本的相關(guān)數(shù)據(jù)處理和圖形繪制的功能,在此功能上,可以利用VB.net發(fā)掘更好的應(yīng)用功能。使我們?cè)诜彪s的工作量中可以很方便的進(jìn)行處理。在建筑測(cè)繪工程領(lǐng)域,可以很好的利用這方面的功能,開(kāi)發(fā)一些新的有用的應(yīng)用功能,例如:對(duì)圖形元素和數(shù)據(jù)的對(duì)比檢查、圖形統(tǒng)計(jì)、數(shù)據(jù)統(tǒng)計(jì)等合適有效的功能應(yīng)用,實(shí)現(xiàn)測(cè)繪地形圖的自動(dòng)化,提高工作效率和減輕勞動(dòng)的強(qiáng)度。
6 結(jié)束語(yǔ)
通過(guò)開(kāi)發(fā)基礎(chǔ)的自動(dòng)化繪圖工具,探索一個(gè)利用CAD、VB.NET來(lái)開(kāi)發(fā)計(jì)算機(jī)自動(dòng)化處理數(shù)據(jù)和繪圖的程序應(yīng)用,給我們?cè)谔峁┝艘粋€(gè)很好的思路和方向,讓我們的很多重復(fù)的數(shù)據(jù)量大的處理工作可以通過(guò)程序應(yīng)用進(jìn)行統(tǒng)一處理。
參考文獻(xiàn)
[1]曾洪飛,張帆.AUTOCAD VBA&VB.NET開(kāi)發(fā)基礎(chǔ)與實(shí)例教程[M].中國(guó)電力出版社,2008,2.