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