《電子技術應用》
您所在的位置:首頁 > EDA與制造 > 設計應用 > 基于VBA的AutoCAD二次開發及應用實例
基于VBA的AutoCAD二次開發及應用實例
摘要: 本文介紹了VBA二次開發AUTOCAD的技術特點,并以實例說明VBA應用程序的編寫要點。進一步驗證了AUTOCAD與VBA以ActivexAutomation自動化接口技術實現連接,利用VB的可視化編程設計實現CAD系統設計的實際價值。
Abstract:
Key words :

  本文介紹了VBA二次開發AutoCAD的技術特點,并以實例說明VBA應用程序的編寫要點。進一步驗證了AUTOCAD與VBA以Activex Automation自動化接口技術實現連接,利用VB的可視化編程設計實現CAD系統設計的實際價值。

  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圖形數據庫,能明顯提高軟件開發和維護的效率。

  2 VBA的技術特性

  2.1 VBA開發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.2 VBA AutoCAD ActiveX Automation對象模型

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

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

編程語言和應用程序通過AutoCAD AcfiveX訪問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

  3 AUTOCAD VBA實例應用

  這個實例,介紹了VBA開發AUTOCAD實現參數化繪圖的編程思路與實際應用,是CAD系統中很重要的環節。

  3.1繪制三維圖形實例說明

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

  (2).編程思路

  核心問題是創建大小圓的面域,復制出來的桌腿,角度的旋轉及最后的合并著色。

  3.2 VBA開發AutoCAD2005的技術流程

  (1)首先在AUTOCAD2004中,選擇[工具/宏/VBA管理器]菜單項,在彈出的[VBA管理器]對話框中單擊[新建]按鈕,將其保存在適當的位置。

  (2)在[VBA管理器]對話框中單擊[Visual Basic編輯器]按鈕,進入VBA集成開發環境,選擇[插入/用戶窗體]菜單項,向工程中添加一個用戶窗體。

創建桌子運行界面

圖2 創建桌子運行界面

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

  (4)相關代碼:l>.在Cammandbutton2命令按鈕的單擊Click事件的代碼為:

創建桌子運行界面

圖3桌子的參數化繪圖

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

創建桌子運行界面

圖4 創建桌子運行界面

  該實例可以連接上數據庫,使用時可以直接調用數據庫中的參數,直接運行得出所需的圖形。

  4 AUTOCAD VBA數據庫連接技術

  4.1 ADO數據庫訪問技術

  別隨著CAD技術的發展,在CAD軟件中使用數據庫的場合越來越多,數據庫連接方法ADO是Microsoft AcciveX Data ObjeCts的簡稱,ADO作為一種更新的數據庫訪問技術,“擴展”了DA0和RD0所使用的對象模型,包含較少的對象和更多的屬性、方法、事件。

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

  在使用ADO對象之前,需要在VBA集成開發環境中,選擇[工程/引用]菜單項,從彈出的對話框中選中[microsoft ActiveX Data Objects 2.5 Livrary]選項,引用ADO的對象模型,如圖5所示

引用ADO的對象模型

圖5 引用ADO的對象模型

  4.2 ADO編程

  在編程過程中使用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系統,具有很好的實用價值。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美激情视频在线观看一区二区三区 | 久久国产一区二区| 亚洲视频在线视频| 亚洲精品三级| 亚洲激情在线视频| 久久精品国产免费| 久久av老司机精品网站导航 | 小黄鸭精品密入口导航| 亚洲永久免费| 亚洲免费在线视频| 亚洲欧美日韩在线观看a三区| 亚洲午夜未删减在线观看| 一区二区三区.www| 一本色道久久88精品综合| 亚洲精品欧洲精品| 一本久道综合久久精品| 一区二区三区av| 亚洲一区二区四区| 亚洲欧美日韩系列| 性色av一区二区三区| 欧美伊人久久大香线蕉综合69| 欧美一级片久久久久久久| 午夜在线观看免费一区| 欧美一级视频| 亚洲激情在线激情| 99精品欧美一区二区三区| 在线一区亚洲| 午夜精品久久久久久久久| 久久国产精品高清| 麻豆91精品91久久久的内涵| 欧美电影电视剧在线观看| 欧美激情精品久久久久| 欧美日韩一二三区| 国产精品一区二区三区四区五区| 国产日韩精品一区二区| 伊人久久成人| 91久久精品一区二区三区| 一区二区三区四区国产精品| 亚洲免费婷婷| 亚洲国产精品成人一区二区| 日韩亚洲精品在线| 午夜激情综合网| 久久青草欧美一区二区三区| 欧美黄色一区二区| 国产精品成人播放| 国产亚洲欧美激情| 亚洲国产高清视频| 亚洲一区二区精品在线| 久久精品二区三区| 一区二区黄色| 欧美在线资源| 欧美成人一区二区| 国产精品国产一区二区| 国内外成人在线视频| 亚洲精品美女久久久久| 午夜精品美女久久久久av福利| 亚洲福利在线视频| 亚洲午夜视频| 久久免费高清| 欧美涩涩网站| 尤物在线观看一区| 亚洲一级影院| 亚洲人成在线观看一区二区 | 国产精品美女一区二区| 一色屋精品视频免费看| 亚洲毛片在线看| 久久精品国产精品亚洲精品| 亚洲视频精选| 久热国产精品| 国产精品久久久久久久久婷婷| 一区在线免费观看| 亚洲男人的天堂在线观看| 亚洲精品一级| 久久精品盗摄| 国产精品久久久久久超碰| 尤物视频一区二区| 亚洲欧美激情一区| 99成人免费视频| 久久久久免费视频| 国产精品久久久久影院亚瑟| 亚洲黄色影片| 久久精品首页| 香蕉久久国产| 欧美网站大全在线观看| 91久久在线| 亚洲第一在线综合网站| 午夜影院日韩| 欧美四级电影网站| 亚洲黑丝在线| 亚洲二区在线视频| 欧美一区二区免费| 亚洲欧美电影在线观看| 欧美日韩免费观看一区=区三区| 韩国美女久久| 亚洲专区国产精品| 一二三四社区欧美黄| 老**午夜毛片一区二区三区| 国产美女一区二区| 一本色道久久加勒比精品| 日韩一级免费观看| 麻豆精品在线视频| 国产亚洲午夜| 亚洲自拍啪啪| 亚洲性视频网址| 欧美激情第六页| 在线欧美福利| 久久国产精品久久国产精品| 欧美一区二区女人| 国产精品视频一二| 在线性视频日韩欧美| 99日韩精品| 欧美激情精品| 亚洲欧洲三级| 亚洲伦理网站| 欧美国产激情| 亚洲国产经典视频| 亚洲精品自在在线观看| 欧美va天堂在线| 亚洲第一网站| 亚洲欧洲精品一区二区三区不卡 | 亚洲青涩在线| 欧美69视频| 亚洲国产精品电影| 亚洲精品在线观| 欧美国产三区| 亚洲精品影院在线观看| 亚洲美女视频在线免费观看| 欧美成年人视频| 亚洲国产婷婷香蕉久久久久久| 亚洲免费激情| 欧美日韩国产不卡在线看| 亚洲人成毛片在线播放| 99成人免费视频| 欧美特黄视频| 亚洲一区精品在线| 亚洲欧美在线高清| 国产伦精品一区二区| 欧美亚洲一区二区在线| 亚洲一区免费网站| 国产精品嫩草久久久久| 午夜精品在线| 久久青草久久| 亚洲经典一区| 亚洲无毛电影| 国产精品一区二区久激情瑜伽| 亚洲欧美综合精品久久成人 | 麻豆freexxxx性91精品| 最新国产成人在线观看| 一本不卡影院| 国产精品成av人在线视午夜片| 亚洲一区二区三区欧美| 久久精品免费看| 怡红院精品视频| 一本色道久久综合亚洲精品小说 | 国产精品视频男人的天堂 | 亚洲人成网站777色婷婷| 在线一区观看| 国产欧美一级| 亚洲国产精品一区| 国产精品电影网站| 久久成人精品一区二区三区| 免费欧美高清视频| 一本色道婷婷久久欧美| 欧美一区二区精品久久911| 狠狠综合久久av一区二区老牛| 亚洲欧洲一二三| 国产精品h在线观看| 欧美一区二区高清在线观看| 你懂的国产精品| 亚洲婷婷国产精品电影人久久 | 狼人社综合社区| 日韩一级裸体免费视频| 欧美亚洲一区二区在线| 一色屋精品亚洲香蕉网站| 一区二区三区高清在线观看| 国产精品视频xxx| 亚洲国产一区二区三区在线播| 欧美日韩美女| 久久精品人人爽| 欧美日韩一区二区免费视频| 香蕉久久久久久久av网站| 欧美激情aⅴ一区二区三区| 亚洲女人天堂av| 欧美国产日本| 欧美一级欧美一级在线播放| 欧美伦理在线观看| 亚洲大片精品永久免费| 国产精品chinese| 亚洲精品自在在线观看| 国产日产精品一区二区三区四区的观看方式 | 国产精品久久久久国产精品日日| 亚洲国产另类久久久精品极度| 欧美色精品在线视频| 亚洲激情六月丁香| 国产精品一区二区三区四区| 日韩视频在线一区| 韩国av一区二区三区| 亚洲欧美在线aaa| 亚洲日韩欧美视频一区| 久久免费的精品国产v∧|