VBA 的AutoCAD 二次開發(fā)及應(yīng)用實(shí)例
2013-05-22 by:廣州有限元分析、培訓(xùn)中心-1CAE.COM 來(lái)源:仿真在線
王若慧 來(lái)源:萬(wàn)方數(shù)據(jù)
關(guān)鍵字:VBA AUTOCAD 二次開發(fā) 自動(dòng)化接口技術(shù) CAD 系統(tǒng)
介紹了VBA 二次開發(fā)AUTOCAD的技術(shù)特點(diǎn),并以實(shí)例說(shuō)明VBA 應(yīng)用程序的編寫要點(diǎn)。進(jìn)一步驗(yàn)證了AUTOCAD與VBA 以ActiveX Automation 自動(dòng)化接口技術(shù)實(shí)現(xiàn)連接,利用VB的可視化編程設(shè)計(jì)實(shí)現(xiàn)CAD系統(tǒng)設(shè)計(jì)的實(shí)際價(jià)值。
1 引言
AutoCAD2005是Autodesk公司的系列產(chǎn)品,該軟件從其使用和設(shè)計(jì)思路上都秉承了工程制圖人員的繪圖習(xí)慣,能夠非常輕松地繪制出帶有平面視圖和三維渲染效果的工程圖紙,是繪圖人員的一個(gè)理想工具.隨著CAD基礎(chǔ)理論和應(yīng)用技術(shù)的不斷發(fā)展,對(duì)CAD系統(tǒng)的功能要求也越來(lái)越高。因而AutoCAD不可能完全滿足每個(gè)用戶的具體而特定的要求。設(shè)計(jì)人員希望它能從本質(zhì)上減輕大量簡(jiǎn)單煩瑣的工作量,使他們能集中精力于那些富有一創(chuàng)造性的高層次思維活動(dòng)中。
AutoCAD提供的開放式體系結(jié)構(gòu)允許用戶和開發(fā)者采用高級(jí)編程語(yǔ)言對(duì)其進(jìn)行擴(kuò)充和修改,即二次開發(fā),能最大限度地滿足用戶的特殊要求,更方便、更規(guī)范、更專業(yè)的實(shí)現(xiàn)設(shè)計(jì)和繪圖中的應(yīng)用。VBA最早是建立在Officc97中的標(biāo)準(zhǔn)宏語(yǔ)言,由于它在開發(fā)方面的易用性及具有的強(qiáng)大功能,許多軟件開發(fā)商都將其嵌人自己的應(yīng)用程序中,作為一種開發(fā)工具提供給用戶使用。Autodesk公司自從AutoCADR14.01版開始,內(nèi)置了VBA開發(fā)工具。
新一代程序開發(fā)工具Visual Basic,不僅繼承了面向?qū)ο蠓椒ǖ奶匦?同時(shí)具備可視化程序語(yǔ)言及程序產(chǎn)生器的概念。VBA (Visual Basic For Application)是AutoCAD R12以后推出的一種新的編程環(huán)境,提供了以Visual Basic為基礎(chǔ)的面向付象的開發(fā)特性及程宇接口,能真正快速地訪問(wèn)AutoCAD圖形數(shù)據(jù)庫(kù),能明顯提高軟件開發(fā)和維護(hù)的效率。
2 VBA的技術(shù)特性
2 .1 VBA開發(fā)AUTOCAD的技術(shù)特點(diǎn)
VBA是微軟開發(fā)出來(lái)的應(yīng)用程序共享一種通用的自動(dòng)化語(yǔ)言,它可以使常用的程序自動(dòng)化,并可以創(chuàng)建自定義的解決方案。
VBA被集成到AutoCAD中,VBA和AutoCAD中強(qiáng)大的ActiveX自動(dòng)化對(duì)象模型的結(jié)合,代表了一種新型的定制AutoCAD的模式構(gòu)架。通過(guò)VBA,我們可以操作AutoCAD2004,控制ActivcX和其它一些應(yīng)用程序,使之相互之間發(fā)生互易活動(dòng).
下面就是VBA的主要功能:
(1)VBA提供強(qiáng)大的窗體創(chuàng)建功能,為應(yīng)用程序建立對(duì)話框及其他屏幕界面。
(2)可以創(chuàng)建自己的工具條。
(3)可以創(chuàng)建功能強(qiáng)大的模塊級(jí)宏指令,宏名實(shí)質(zhì)卜就是模塊的過(guò)程名。
(4)提供建立類模塊的功能,這對(duì)開發(fā)大型工程非常有用,因此類可以提供重用組。
(5)具備完善的數(shù)據(jù)訪問(wèn)和管理能力,通過(guò)ADO (ActiveX Data Objects),可以對(duì)Access數(shù)據(jù)庫(kù)或其他外部數(shù)據(jù)庫(kù)(像dBase,FoxPro等)實(shí)現(xiàn)訪問(wèn)和管理。此功能比直接使用AutoCAD的數(shù)據(jù)庫(kù)管理系統(tǒng)要方便,且功能強(qiáng)人。
2.2 VBA AutoCAD ActiveX Automation對(duì)象模型
VBA是通過(guò)AutoCAD ActiveX Automation接口來(lái)建立和AutoCAD對(duì)象間的聯(lián)系。ActiveX是建立在COM對(duì)象模型之上的一個(gè)標(biāo)準(zhǔn)通信協(xié)議,它允許劉象之問(wèn)通過(guò)一定的接口相互通信。
AutoCAD ActiveX使用戶能夠從AutoCAD的內(nèi)部或外部以編程方式來(lái)操作AutoCAD。它是通過(guò)將AutoCAD對(duì)象顯示到“外部世界”來(lái)做到這一點(diǎn)的。這些對(duì)象被顯示后,許多不同的編程語(yǔ)言和環(huán)境以及其他應(yīng)用程序(例如Microsoft Word VBA或Excel VBA)就可以訪問(wèn)它們。如圖1是編程語(yǔ)言和應(yīng)用程序通過(guò)AutoCAD ActiveX訪問(wèn)AutoCAD。
圖1 編程語(yǔ)言和應(yīng)用程序通過(guò)AutoCAD ActiveX訪問(wèn)AutoCAD
在AutoCAD中實(shí)現(xiàn)ActiveX接日有兩大優(yōu)點(diǎn):
更多的編程環(huán)境可以編程訪問(wèn)AutoCAI)圖形。在ActiveX Automation一出現(xiàn)以前,開發(fā)人員只能使用AutoLISP或C十+接口。
與其他Windows應(yīng)用程序(如Microsoft ACCESS和Word)共享數(shù)據(jù)變得更加容易。
對(duì)象是所有ActiveX應(yīng)用程序的主要構(gòu)造塊。每一個(gè)顯示的對(duì)象均精確代表一個(gè)AutoCAD組件。AutoCAD ActiveX接口中有許多不同類型的對(duì)象。例如:
----直線、圓弧、文字和標(biāo)注等圖形對(duì)象都是對(duì)象。
----線型與標(biāo)注樣式等樣式設(shè)置都是對(duì)象。
----圖層、編組和塊等組織結(jié)構(gòu)都是對(duì)象。
----視圖與視口等圖形顯示都是對(duì)象。
----甚至圖形、AutoCAD應(yīng)用程序本身也是對(duì)象。
AutoCAD對(duì)象是通過(guò)分層方式來(lái)組織的,應(yīng)用程序?qū)ο鬄楦鶎?duì)象。這種分層結(jié)構(gòu)的視圖被歸結(jié)為對(duì)象模型。對(duì)象模型提供了用戶訪問(wèn)下一層對(duì)象的途徑。
用戶可直接通過(guò)用戶定義變量引用對(duì)象。直接引用對(duì)象,應(yīng)包括對(duì)象的層次。舉一個(gè)最簡(jiǎn)單的例子,在VBA中要利用圓心和半徑創(chuàng)建圓可以使用以下代碼:
Sub drawcircle()
Dim ptl(2) As Double
Dim radius As Double
ptl(0)=23
ptl(1)=78
ptl(2)=67
radius=56
"調(diào)用rlddcircle方法繪制圓
IhisDrawing.ModelSpace.addcircle pt1, radius
End Sub
3 AUTOCAD VBA實(shí)例應(yīng)用
這個(gè)實(shí)例,介紹了VBA開發(fā)AUTOCAD實(shí)現(xiàn)參數(shù)化繪圖的編程思路與實(shí)際應(yīng)用.是CAD系統(tǒng)中很重要的環(huán)節(jié).
3.1 繪制三維圖形實(shí)例說(shuō)明
(1) 本程序運(yùn)行界面如圖2所示,用戶可以指定中心點(diǎn),桌面及桌腿半徑,桌子的高度.系統(tǒng)就能根據(jù)用戶指定的參數(shù)在三維空問(wèn)中創(chuàng)建出一個(gè)桌子.
(2) 編程思路
核心問(wèn)題是創(chuàng)建大小圓的面域,復(fù)制出來(lái)的桌腿,角度的旋轉(zhuǎn)及最后的合并著色.
3.2 VBA開發(fā)AutoCAD2005的技術(shù)流程
(1) 首先在AUTOC AD2004中,選擇[工具/宏/VBA管理器]菜單項(xiàng),在彈出的[VBA管理器}對(duì)話框中單擊[新建]按鈕,將其保存在適當(dāng)?shù)奈恢谩?BR>
(2) 在[VBA管理器]對(duì)話框中單擊[Visual Basic編輯器]按鈕,進(jìn)人VBA集成開發(fā)環(huán)境,選擇[插人/用戶窗體]菜單項(xiàng),向工程中添加一個(gè)用戶窗體.
圖2 創(chuàng)建桌子運(yùn)行界面
(3)在用戶窗體上插人如圖2所示的相關(guān)控件,并按下表分別設(shè)置它們的相關(guān)屬性
(4) 相關(guān)代碼:
1> 在Cammandbutton2命令按鈕的單擊Click事件的代碼為:
2> 在Cammandbuttonl確定按鈕的單習(xí)Click事件的代碼為:
3> 在Cammnandbutton3取消按鈕的單擊Click;事件的代碼為:
(5)實(shí)例效果
在VBA集成開發(fā)環(huán)境中,按下F5運(yùn)行程序就可以在窗體輸入?yún)?shù)得到如圖3所示
圖3 桌子的參數(shù)化繪圖
(2)在AutoCAD2004 }-h,選擇}視圖/著色/體著色/菜單項(xiàng),對(duì)生成的模型進(jìn)行著色,所得結(jié)果,如圖4所示
圖4 桌子的三維著色
4 AUTOCAD VBA數(shù)據(jù)庫(kù)連接技術(shù)
4.1 ADO數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)
別隨著CAD技術(shù)的發(fā)展,在CAD軟件中使用數(shù)據(jù)庫(kù)的場(chǎng)合越來(lái)越多數(shù)據(jù)庫(kù)連接方AD0是Micrceoft ActiveX Data Objcts的簡(jiǎn)稱ADO作為一種更新的數(shù)據(jù)庫(kù)訪間技術(shù),“擴(kuò)展”了DAO和RDO所使用的對(duì)象模型,包含較少的對(duì)象和更多的屬性、方法、事件。
本節(jié)僅介紹ADO控件連接MICROSOFT ACCESS數(shù)據(jù)庫(kù)的基本操作,桌子的各個(gè)參數(shù),存放在數(shù)據(jù)庫(kù)DESK.mdb中,可以用于瀏覽數(shù)據(jù)庫(kù)中的各條記錄,還可以完成記錄的添加,修改和刪除操作。
在使用ADO對(duì)像之前,需要在VBA集成開發(fā)環(huán)境中,選擇[下程/引用]菜單項(xiàng),從彈出的對(duì)話框中選中[microsoft ActiveX Data Objects 2.5 Library]選項(xiàng),引用ADO的對(duì)象模型,如圖5所示
圖5 引用ADO的對(duì)象模型
4.2 ADO編程
在編程過(guò)程中使用ADO的一個(gè)典型的存取數(shù)據(jù)的步驟為:
(1)連接數(shù)據(jù)源。可以使用連接對(duì)象的Open方法打開數(shù)據(jù)庫(kù)對(duì)象,例如:
adoCon.Open "Provider=Microsoft.JeL.OLEDB.4.0;Data Source"&
Left(strPath, Len(strPath)-6)&”/DESK. mdb;”
(2)打開記錄集對(duì)象??梢允褂糜涗浖瘜?duì)象的Open方法打開記錄集對(duì)象,例如:
adoRs. Open"biaoData2" , adoCon, adOpenDynamic,adLockOptimistic
(3)使用記錄集。在各個(gè)記錄集之間切換一般可以使用記錄集對(duì)象的Move, MoveFirst, MovelNext, MovePrevious和MoveLast方法,添加新的記錄可以使用記錄集對(duì)象的AddNew方法,修改當(dāng)前記錄的內(nèi)容只需對(duì)數(shù)據(jù)庫(kù)記錄集中的對(duì)象重新賦值即可,刪除當(dāng)前的記錄可以使用記錄集的Delele方法。
其中,記錄集在進(jìn)行添加的操作之后,必須使用Update方法更新數(shù)據(jù)庫(kù)。
(4)斷開連接。使用Closc方法能夠關(guān)閉記錄集和數(shù)據(jù)庫(kù)連接對(duì)象,在退出程序之后,必須用Close方法關(guān)閉這兩個(gè)對(duì)象。
向工程中添加一個(gè)用戶窗體,并在窗體中放置如圖6所示的控件.
圖6 桌子的數(shù)據(jù)庫(kù)鏈接
5 結(jié)束語(yǔ)
基于VBA的AUTOCAD二次開發(fā)技術(shù),可以實(shí)現(xiàn)AUTOCAD功能的拓展及參數(shù)化設(shè)計(jì),如零件標(biāo)準(zhǔn)圖庫(kù)的建立等各個(gè)方面,更好的滿足機(jī)械電了行業(yè)等系列化產(chǎn)品的專業(yè)設(shè)計(jì)。對(duì)于大型CAD應(yīng)用軟件的開發(fā),能別軍極大的作用。各大企業(yè)也在開發(fā)自己的CAD系統(tǒng),具有很好的實(shí)用價(jià)值。
相關(guān)標(biāo)簽搜索:VBA 的AutoCAD 二次開發(fā)及應(yīng)用實(shí)例 AutoCAD培訓(xùn) AutoCAD培訓(xùn)課程 AutoCAD圖紙?jiān)O(shè)計(jì) AutoCAD在線視頻 AutoCAD技術(shù)學(xué)習(xí)教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn)