VBA 的AutoCAD 二次開發(fā)及應用實例

2013-05-22  by:廣州有限元分析、培訓中心-1CAE.COM  來源:仿真在線

王若慧 來源:萬方數(shù)據(jù)
關鍵字:VBA AUTOCAD 二次開發(fā) 自動化接口技術 CAD 系統(tǒng)

介紹了VBA 二次開發(fā)AUTOCAD的技術特點,并以實例說明VBA 應用程序的編寫要點。進一步驗證了AUTOCAD與VBA 以ActiveX Automation 自動化接口技術實現(xiàn)連接,利用VB的可視化編程設計實現(xiàn)CAD系統(tǒng)設計的實際價值。

1 引言
AutoCAD2005是Autodesk公司的系列產(chǎn)品,該軟件從其使用和設計思路上都秉承了工程制圖人員的繪圖習慣,能夠非常輕松地繪制出帶有平面視圖和三維渲染效果的工程圖紙,是繪圖人員的一個理想工具.隨著CAD基礎理論和應用技術的不斷發(fā)展,對CAD系統(tǒng)的功能要求也越來越高。因而AutoCAD不可能完全滿足每個用戶的具體而特定的要求。設計人員希望它能從本質(zhì)上減輕大量簡單煩瑣的工作量,使他們能集中精力于那些富有一創(chuàng)造性的高層次思維活動中。

AutoCAD提供的開放式體系結(jié)構(gòu)允許用戶和開發(fā)者采用高級編程語言對其進行擴充和修改,即二次開發(fā),能最大限度地滿足用戶的特殊要求,更方便、更規(guī)范、更專業(yè)的實現(xiàn)設計和繪圖中的應用。VBA最早是建立在Officc97中的標準宏語言,由于它在開發(fā)方面的易用性及具有的強大功能,許多軟件開發(fā)商都將其嵌人自己的應用程序中,作為一種開發(fā)工具提供給用戶使用。Autodesk公司自從AutoCADR14.01版開始,內(nèi)置了VBA開發(fā)工具。

新一代程序開發(fā)工具Visual Basic,不僅繼承了面向?qū)ο蠓椒ǖ奶匦?同時具備可視化程序語言及程序產(chǎn)生器的概念。VBA (Visual Basic For Application)是AutoCAD R12以后推出的一種新的編程環(huán)境,提供了以Visual Basic為基礎的面向付象的開發(fā)特性及程宇接口,能真正快速地訪問AutoCAD圖形數(shù)據(jù)庫,能明顯提高軟件開發(fā)和維護的效率。

2 VBA的技術特性

2 .1  VBA開發(fā)AUTOCAD的技術特點

VBA是微軟開發(fā)出來的應用程序共享一種通用的自動化語言,它可以使常用的程序自動化,并可以創(chuàng)建自定義的解決方案。

VBA被集成到AutoCAD中,VBA和AutoCAD中強大的ActiveX自動化對象模型的結(jié)合,代表了一種新型的定制AutoCAD的模式構(gòu)架。通過VBA,我們可以操作AutoCAD2004,控制ActivcX和其它一些應用程序,使之相互之間發(fā)生互易活動.

下面就是VBA的主要功能:
   
    (1)VBA提供強大的窗體創(chuàng)建功能,為應用程序建立對話框及其他屏幕界面。

    (2)可以創(chuàng)建自己的工具條。
   
    (3)可以創(chuàng)建功能強大的模塊級宏指令,宏名實質(zhì)卜就是模塊的過程名。

    (4)提供建立類模塊的功能,這對開發(fā)大型工程非常有用,因此類可以提供重用組。

    (5)具備完善的數(shù)據(jù)訪問和管理能力,通過ADO (ActiveX Data  Objects),可以對Access數(shù)據(jù)庫或其他外部數(shù)據(jù)庫(像dBase,FoxPro等)實現(xiàn)訪問和管理。此功能比直接使用AutoCAD的數(shù)據(jù)庫管理系統(tǒng)要方便,且功能強人。

2.2 VBA AutoCAD ActiveX Automation對象模型

VBA是通過AutoCAD ActiveX Automation接口來建立和AutoCAD對象間的聯(lián)系。ActiveX是建立在COM對象模型之上的一個標準通信協(xié)議,它允許劉象之問通過一定的接口相互通信。

AutoCAD ActiveX使用戶能夠從AutoCAD的內(nèi)部或外部以編程方式來操作AutoCAD。它是通過將AutoCAD對象顯示到“外部世界”來做到這一點的。這些對象被顯示后,許多不同的編程語言和環(huán)境以及其他應用程序(例如Microsoft Word VBA或Excel VBA)就可以訪問它們。如圖1是編程語言和應用程序通過AutoCAD ActiveX訪問AutoCAD。

VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片1

圖1 編程語言和應用程序通過AutoCAD ActiveX訪問AutoCAD

在AutoCAD中實現(xiàn)ActiveX接日有兩大優(yōu)點:
   
更多的編程環(huán)境可以編程訪問AutoCAI)圖形。在ActiveX Automation一出現(xiàn)以前,開發(fā)人員只能使用AutoLISP或C十+接口。
   
與其他Windows應用程序(如Microsoft ACCESS和Word)共享數(shù)據(jù)變得更加容易。
   
對象是所有ActiveX應用程序的主要構(gòu)造塊。每一個顯示的對象均精確代表一個AutoCAD組件。AutoCAD ActiveX接口中有許多不同類型的對象。例如:

    ----直線、圓弧、文字和標注等圖形對象都是對象。
   
    ----線型與標注樣式等樣式設置都是對象。
   
    ----圖層、編組和塊等組織結(jié)構(gòu)都是對象。
   
    ----視圖與視口等圖形顯示都是對象。
   
    ----甚至圖形、AutoCAD應用程序本身也是對象。

AutoCAD對象是通過分層方式來組織的,應用程序?qū)ο鬄楦鶎ο蟆_@種分層結(jié)構(gòu)的視圖被歸結(jié)為對象模型。對象模型提供了用戶訪問下一層對象的途徑。

用戶可直接通過用戶定義變量引用對象。直接引用對象,應包括對象的層次。舉一個最簡單的例子,在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實例應用
   
這個實例,介紹了VBA開發(fā)AUTOCAD實現(xiàn)參數(shù)化繪圖的編程思路與實際應用.是CAD系統(tǒng)中很重要的環(huán)節(jié).

3.1 繪制三維圖形實例說明

(1) 本程序運行界面如圖2所示,用戶可以指定中心點,桌面及桌腿半徑,桌子的高度.系統(tǒng)就能根據(jù)用戶指定的參數(shù)在三維空問中創(chuàng)建出一個桌子.

(2) 編程思路
   
    核心問題是創(chuàng)建大小圓的面域,復制出來的桌腿,角度的旋轉(zhuǎn)及最后的合并著色.

3.2 VBA開發(fā)AutoCAD2005的技術流程

    (1) 首先在AUTOC AD2004中,選擇[工具/宏/VBA管理器]菜單項,在彈出的[VBA管理器}對話框中單擊[新建]按鈕,將其保存在適當?shù)奈恢谩?BR>   
    (2) 在[VBA管理器]對話框中單擊[Visual Basic編輯器]按鈕,進人VBA集成開發(fā)環(huán)境,選擇[插人/用戶窗體]菜單項,向工程中添加一個用戶窗體.

VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片2

圖2 創(chuàng)建桌子運行界面


    (3)在用戶窗體上插人如圖2所示的相關控件,并按下表分別設置它們的相關屬性

VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片3

(4) 相關代碼:
   
1> 在Cammandbutton2命令按鈕的單擊Click事件的代碼為:
VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片4

2> 在Cammandbuttonl確定按鈕的單習Click事件的代碼為:
VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片5

VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片6
VBA 的AutoCAD 二次開發(fā)及應用實例autocad design圖片7
VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片8

3> 在Cammnandbutton3取消按鈕的單擊Click;事件的代碼為:
VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片9

    (5)實例效果
   
在VBA集成開發(fā)環(huán)境中,按下F5運行程序就可以在窗體輸入?yún)?shù)得到如圖3所示

VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片10

圖3 桌子的參數(shù)化繪圖

    (2)在AutoCAD2004 }-h,選擇}視圖/著色/體著色/菜單項,對生成的模型進行著色,所得結(jié)果,如圖4所示

VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片11

圖4 桌子的三維著色

4 AUTOCAD VBA數(shù)據(jù)庫連接技術

4.1 ADO數(shù)據(jù)庫訪問技術

別隨著CAD技術的發(fā)展,在CAD軟件中使用數(shù)據(jù)庫的場合越來越多數(shù)據(jù)庫連接方AD0是Micrceoft ActiveX Data Objcts的簡稱ADO作為一種更新的數(shù)據(jù)庫訪間技術,“擴展”了DAO和RDO所使用的對象模型,包含較少的對象和更多的屬性、方法、事件。

本節(jié)僅介紹ADO控件連接MICROSOFT ACCESS數(shù)據(jù)庫的基本操作,桌子的各個參數(shù),存放在數(shù)據(jù)庫DESK.mdb中,可以用于瀏覽數(shù)據(jù)庫中的各條記錄,還可以完成記錄的添加,修改和刪除操作。

在使用ADO對像之前,需要在VBA集成開發(fā)環(huán)境中,選擇[下程/引用]菜單項,從彈出的對話框中選中[microsoft ActiveX Data Objects 2.5 Library]選項,引用ADO的對象模型,如圖5所示

VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片12

圖5 引用ADO的對象模型

4.2  ADO編程

在編程過程中使用ADO的一個典型的存取數(shù)據(jù)的步驟為:
   
    (1)連接數(shù)據(jù)源。可以使用連接對象的Open方法打開數(shù)據(jù)庫對象,例如:
    adoCon.Open "Provider=Microsoft.JeL.OLEDB.4.0;Data Source"&
    Left(strPath, Len(strPath)-6)&”/DESK. mdb;”
   
    (2)打開記錄集對象??梢允褂糜涗浖瘜ο蟮腛pen方法打開記錄集對象,例如:
    adoRs. Open"biaoData2" , adoCon, adOpenDynamic,adLockOptimistic

    (3)使用記錄集。在各個記錄集之間切換一般可以使用記錄集對象的Move, MoveFirst, MovelNext, MovePrevious和MoveLast方法,添加新的記錄可以使用記錄集對象的AddNew方法,修改當前記錄的內(nèi)容只需對數(shù)據(jù)庫記錄集中的對象重新賦值即可,刪除當前的記錄可以使用記錄集的Delele方法。

其中,記錄集在進行添加的操作之后,必須使用Update方法更新數(shù)據(jù)庫。

    (4)斷開連接。使用Closc方法能夠關閉記錄集和數(shù)據(jù)庫連接對象,在退出程序之后,必須用Close方法關閉這兩個對象。

向工程中添加一個用戶窗體,并在窗體中放置如圖6所示的控件.

VBA 的AutoCAD 二次開發(fā)及應用實例autocad案例圖片13

圖6 桌子的數(shù)據(jù)庫鏈接

5 結(jié)束語

基于VBA的AUTOCAD二次開發(fā)技術,可以實現(xiàn)AUTOCAD功能的拓展及參數(shù)化設計,如零件標準圖庫的建立等各個方面,更好的滿足機械電了行業(yè)等系列化產(chǎn)品的專業(yè)設計。對于大型CAD應用軟件的開發(fā),能別軍極大的作用。各大企業(yè)也在開發(fā)自己的CAD系統(tǒng),具有很好的實用價值。


開放分享:優(yōu)質(zhì)有限元技術文章,助你自學成才

相關標簽搜索:VBA 的AutoCAD 二次開發(fā)及應用實例 AutoCAD培訓 AutoCAD培訓課程 AutoCAD圖紙設計 AutoCAD在線視頻 AutoCAD技術學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 Autoform培訓 

編輯
在線報名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com