基於VBA的AUTOCAD二次開發及應用例項

2022-10-18 09:12:05 字數 4401 閱讀 1228

時間:2011-10-0318:25:09**:作者:

1引言autocad2005是autodesk公司的系列產品,該軟體從其使用和設計思路上都秉承了工程製圖人員的繪圖習慣,能夠非常輕鬆地繪製出帶有平面檢視和三維渲染效果的工程圖紙,是繪圖人員的乙個理想工具。隨著cad基礎理論和應用技術的不斷發展,對cad系統的功能要求也越來越高。因而autocad 不可能完全滿足每個使用者的具體而特定的要求。

設計人員希望它能從本質上減輕大量簡單煩瑣的工作量,使他們能集中精力於那些富有創造性的高層次思維活動中。

autocad提供的開放式體系結構允許使用者和開發者採用高階程式語言對其進行擴充和修改,即二次開發,能最大限度地滿足使用者的特殊要求,更方便、更規範、更專業的實現設計和繪圖中的應用。vba最早是建立在0ffice97中的標準巨集語言,由於它在開發方面的易用性及具有的強大功能,許多軟體開發商都將其嵌入自己的應用程式中,作為一種開發工具提供給使用者使用。autodesk公司自從aut0cadrl4.0l版開始,內建了vba開發工具。

新一代程式開發工具visual basic,不僅繼承了物件導向方法的特性,同時具備視覺化程式語言及程式產生器的概念。

vba(visual basic for apphcation)是autocad r12以後推出的一種新的程式設計環境,提供了以visual basic為基礎的物件導向的開發特徵及程式介面,能真正快速地訪問autocad圖形資料庫,能明顯提高軟體開發和維護的效率。

2vba的技術特性

2.1vba開發autocad的技術特點

vba是微軟開發出來的應用程式共享一種通用的自動化語言,它可以使常用的程式自動化,並可以建立自定義的解決方案。

vba被整合到autocad中,vba和autocad中強大的activex自動化物件模型的結合,代表了一種新型的定製autocad的模式構架。通過vba,我們可以操作autocad2004,控制activex和其它一些應用程式,使之相互之間發生互易活動下面就是vba的主要功能:

(1)vba提供強大的窗體建立功能,為應用程式建立對話方塊及其他螢幕介面。

(2)可以建立自己的工具條。

(3)可以建立功能強大的模組級巨集指令,巨集名實質上就是模組的過程名。

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

(5)具備完善的資料訪問和管理能力,通過ado(activexdata objects),可以對access資料庫或其他外部資料庫(像dbase,foxpro等)實現訪問和管理。此功能比直接使用autocad的資料庫管理系統要方便,且功能強大。

2.2vba autocad activex automation物件模型

vba是通過autocad activex automation介面來建立和autocad物件問的聯絡。activex是建立在com物件模型之上的乙個標準通訊協議,它允許物件之間通過一定的介面相互通訊。

autocad activex使使用者能夠從autocad的內部或外部以程式設計方式來操作autocad。它是通過將autocad物件顯示到「外部世界」來做到這一點的。這些物件被顯示後,許多不同的程式語言和環境以及其他應用程式(例如microsonword vba或excel vba)就可以訪問它們。

如圖1是程式語言和應用程式通過autocad activex訪問autocad。

圖1程式語言和應用程式通過autocad acfivex訪問autocad

在autocad中實現activex介面有兩大優點:

·更多的程式設計環境可以程式設計訪問aucocad圖形。在activexautomation 出現以前,開發人員只能使用autolisp或c++介面。

·與其他windows應用程式(如microsoft access和word)共享資料變得更加容易。

物件是所有activex應用程式的主要構造塊。每乙個顯示的物件均精確代表乙個autocad元件。autocad activex介面中有許多不同型別的物件。例如:

·直線、圓弧、文字和標註等圖形物件都是物件。

·線型與標註樣式等樣式設定都是物件。

·圖層、編組和塊等組織結構都是物件。

·檢視與視口等圖形顯示都是物件。

·甚至圖形、autocad應用程式本身也是物件。

autocad物件是通過分層方式來組織的,應用程式物件為根物件。這種分層結構的檢視被歸結為物件模型。物件模型提供了使用者訪問下一層物件的途徑。

使用者可直接通過使用者定義變數引用物件。直接引用物件,應包括物件的層次。舉乙個最簡單的例子,在vba中要利用圓心和半徑建立圓可以使用以下**:

sub drawcircle()

*dim ptl(2)as double

dim radius as double

ptl(0)=23

ptl(1)=78

dtl(2)=67

radius=56

』呼叫addcircle方法繪製圓

thisdrawing.modelspace.addcircle ptl,radiusend sub

3autocad vba例項應用

這個例項,介紹了vba開發autocad實現引數化繪圖的程式設計思路與實際應用,是cad系統中很重要的環節。

3.1繪製三維圖形例項說明

(1).本程式執行介面如圖2所示,使用者可以指定中心點,桌面及桌腿半徑,桌子的高度,系統就能根據使用者指定的引數在三維空間中建立出乙個桌子。

(2).程式設計思路

核心問題是建立大小圓的面域,複製出來的桌腿,角度的旋轉及最後的合併著色。

3.2vba開發autocad2005的技術流程

(1)首先在autocad2004中,選擇[工具/巨集/vba管理器]選單項,在彈出的[vba管理器]對話方塊中單擊[新建]按鈕,將其儲存在適當的位置。

(2)在[vba管理器]對話方塊中單擊[visual basic編輯器]按鈕,進入vba 整合開發環境,選擇[插入/使用者窗體]選單項,向工程中新增乙個使用者窗體。

圖2建立桌子執行介面

(3)在使用者窗體上插入如圖2所示的相關控制項,並按下表分別設定它們的相關屬性。

(4)相關**:l>.在cammandbutton2命令按鈕的單擊click事件的**為:

圖3桌子的引數化繪圖

(2)在autocad2004中,選擇[檢視/著色/體著色]選單項,對生成的模型進行著色,所得結果,如圖4所示

圖4建立桌子執行介面

該例項可以連線上資料庫,使用時可以直接呼叫資料庫中的引數,直接執行得出所需的圖形。

4autocad vba資料庫連線技術

4.1ado資料庫訪問技術

別隨著cad技術的發展,在cad軟體中使用資料庫的場合越來越多,資料庫連線方法ado是microsoft accivex data objects的簡稱,ado作為一種更新的資料庫訪問技術,「擴充套件」了da0和rd0所使用的物件模型,包含較少的物件和更多的屬性、方法、事件。

本節僅介紹ado控制項連線microsoft、access資料庫的基本操作,桌子的各個引數,存放在資料庫desk.mdb中,可以用於瀏覽資料庫中的各條記錄,還可以完成記錄的新增,修改和刪除操作。

在使用ado物件之前,需要在vba整合開發環境中,選擇[工程/引用]選單項,從彈出的對話方塊中選中[microsoft activex data objects2.5livrary]選項,引用ado的物件模型,如圖5所示

圖5引用ado的物件模型

4.2ado程式設計

在程式設計過程中使用ad0的乙個典型的訪問資料的步驟為:

(1)連線資料來源。可以使用連線物件的open方法開啟資料庫物件,例如:

adocon.open「provider=microsoft.jet.oledb.4.0;datasource=「&_

left(strpath,len(strpam)一6)&」\desk.mdb;」

(2)開啟記錄集物件。可以使用記錄集物件的open方法開啟記錄集物件,例如:

adors.open「biaodata2」,adocon,adopendynamic,adlockoptimistic

(3)使用記錄集。在各個記錄集之間切換一般可以使用記錄集物件的move、movefirst、movenext、moveprevious和movelast方法,新增新的記

錄可以使用記錄集物件的addnew方法,修改當前記錄的內容只需對資料庫記錄集中的物件重新賦值即可,刪除當前的記錄可以使用記錄集的delete方法。

其中,記錄集在進行新增的操作之後,必須使用update方法更新資料庫。

(4)斷開連線。使用close方法能夠關閉記錄集和資料庫連線物件,在退出程式之後,必須用close方法關閉這兩個物件。向工程中新增乙個使用者窗體,並在窗體中放置如圖6所示的控制項。

向工程中新增乙個使用者窗體,並在窗體中放置如圖6所示的控制項。

圖6桌子的資料庫連線

5結束語

基於vba的autocad二次開發技術,可以實現autocad功能的拓展及引數化沒計,如零件標準相簿的建立等各個方面,更好的滿足機械電子行業等系列化產品的專業設計。對於大型cad應用軟體的開發,能發揮極大的作用。各大企業也在開發自己的cad系統,具有很好的實用價值。

AutoCAD的二次開發

林學與園林學院 06園林傅欣蕾 摘要 通過對autocad軟體發展史的概述,從中歸納出cad的總體發展趨勢。從當今各行業所需的cad專業化功能,提出對其進行二次開發的意義及具體實施步驟。關鍵詞 autocad 發展史二次開發專業化功能 1.autocad的發展簡史 1.1 第一次cad技術革命 曲面...

二次函式6 二次函式的概念及特殊二次函式的影象

新知歸納與梳理 主要結論歸納 例題分析 例1 判斷下列函式中,哪些是二次函式?1 2 3 4 例2 函式的影象是拋物線,求的值。例3 二次函式的影象過原點,求的值。例4 若拋物線的頂點在軸上,求的值。例5 在二次函式中,如果,那麼它的影象一定經過點 例6 拋物線的對稱軸是頂點座標是它與拋物線的形狀 ...

二次函式專題 1 二次函式的面積問題

專題 1 二次函式的面積問題 例1 如圖,在平面直角座標系中,ob oa,且ob 2oa,點a的座標是 1,2 1 求點b的座標 2 求過點a o b的拋物線的表示式 3 連線ab,在 2 中的拋物線上求出點p,使得s abp s abo 例2 已知m n是方程的兩個實數根,且m n,拋物線的圖象經...