用VB對AutoCAD進行二次開發(fā)_第1頁
用VB對AutoCAD進行二次開發(fā)_第2頁
用VB對AutoCAD進行二次開發(fā)_第3頁
用VB對AutoCAD進行二次開發(fā)_第4頁
用VB對AutoCAD進行二次開發(fā)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、用 VB 對 AutoCAD 進行二次開發(fā) |用 VB 對 AutoCAD 進行二次開發(fā)A utoCAD 一直是 CAD 市場中的主流產(chǎn)品。隨著 AutoCAD 的日益普及,在其上進行二次開 發(fā)的工具也不斷更新。 從早期的 Auto Lisp 、 ADS 、 DCL到現(xiàn)在流行的 Object ARX 、 ActiveX Automation 、 Visual Lisp,均可十分方便地對 AutoCAD 進行二次開發(fā)。本文主要討論 關于運用 Visual Basic對 AutoCAD 基于 ActiveX Automation的二次開發(fā)技術。選用 ActiveX 有兩個原因, 一是因為 Visu

2、al Basic 的普及性與易用性,二是采用這種方法進 行二次開發(fā)可方便地實現(xiàn)與其它圖形軟件的接口,如與 Solid Works 實現(xiàn)實體造型與二 維繪圖的結(jié)合,以及根據(jù)用戶的特殊需要開發(fā)出一定功能的軟件。二、 ActiveX Automation技術AutoCAD 中的 ActiveX Automation 是微軟公司 ActiveX 規(guī)范的具體應用。 它通過基 于 ActiveX 的自動化對象,為其他應用程序提供了訪問 AutoCAD 內(nèi)部功能的方法,是 AutoCAD 最新的開發(fā)接口。在運行時, AutoCAD 與其他應用程序之間的關系是服務器與 客戶的關系, 開發(fā)人員使用支持 Acti

3、veX 規(guī)范的編程語言 (如 VB 、 Dephi 等 能通過訪問 AutoCAD 的對象模型, 把 AutoCAD 的強大功能集成到應用程序中 .AutoCAD 的對象模型是 一種樹型結(jié)構模型,根為 "AutoCAD Application" , AutoCAD 中的所有對象都是 AutoCAD Application 的子對象。圖 1所示為 AutoCAD 對象模型的層次結(jié)構樹,其中父對象與子 對象之間的關系并不是對象繼承關系,而是包含關系。圖 1 AutoCAD中 ActiveX 對象的總結(jié)構圖三、 ActiveX Automation的使用方法1. Applicat

4、ion對象如果在計算機系統(tǒng)上安裝了 AutoCAD ,則 Windows 會自動將其所有的信息注冊到系 統(tǒng)注冊表里。那么在啟動 Visual Basic后,用戶可以象調(diào)用 VB 自己的對象一樣調(diào)用 AutoCAD 所提供的 ActiveX 。在編程、 調(diào)試或運行時至少應該有一個 AutoCAD 副本在運行??梢酝ㄟ^以下的代碼 創(chuàng)建 AutoCAD 對象。Dim AcadApp as Object 定義一個對象On Error Resume NextSet AcadApp =GetObject(,"AutoCAD.Application"If Err Then 如果沒有一個

5、AutoCAD 副本在運行Err.ClearSet AcadApp =CreateObject("AutoCAD.Application"AcadApp.Visable =True 啟動一個 AutoCAD 副本并設為可見If Err ThenMsgBox Err.Description 如果失敗,給出錯誤提示Exit SubEnd IfEnd If2. Preferences與 Document 對象與 AutoCAD 中的 Preferences 對話框的作用相同, 通過 Preferences 對象可以讀取 或設置 AutoCAD 的一些基本設置。 Preferenc

6、es 對象通過 Application 的 Preferences 屬性返回。Dim AcadPref as ObjectSet AcadPref = AcadApp.Preferences比如,用戶可通過 Preferences 對象進行如下的設置AcadPref.Cursorsize =100AcadPref.DisplayScreenMenu =acTrueAcadPref.DisplayScrollBars =Check1.valueDocument 對象表示 AutoCAD 中中當前打開的文檔, 對 AutoCAD 中的任何其它操作都 需用到 Document 對象,該對象可以通過

7、ActiveDocument 屬性返回。Dim AcadDoc as ObjectSet AcadDoc = AcadApp.ActiveDocumentAutoDesk 公司使用了集合的概念。在 Document 對象中有 14個集合,具體如圖 1所示。與 VB 中的集合一樣,這些集合都支持 Add 、 Item 方法與 Count 屬性。例如 Add 方法可以向該集合中添加一個對象, Item(X可以的得到該集合中的第 X 個對象, Count 屬性可以得到該集合中的對象的個數(shù)。在一個 AutoCAD 副本運行時,只能同時打開一個 Document。 可以調(diào)用 Document 的 New

8、 、 Save 方法以及 Saved 屬性來打開或保存一個 AutoCAD 文檔。If Not AcadDoc.Saved ThenAcadDoc.SaveElseSet AcadDoc =AcadDoc.New("acad"End If3. 創(chuàng)建、查詢與修改 AutoCAD 圖形對象在創(chuàng)建 AutoCAD 圖形對象之前, 首先必須定義并創(chuàng)建 ModelSpace 與 PaperSpace 集 合對象。 這兩個對象可通過 Document 對象的 ModelSpace 屬性與 PaperSpace 屬性返回。 Dim moSpace as Object,paSpace as

9、 ObjectSet moSpace = AcadDoc.ModelSpaceSet paSpace = AcadDoc.PaperSpace所有關于圖形對象操作的方法與屬性都包含在這兩個對象中。創(chuàng)建文本對象:Dim moSpace as ObjectSet moSpace =AcadDoc.ModelSpaceDim Pnt(0 to 2 as Double 定義一個 AutoCAD 三維點Dim TextH as Double 定義字符高度Dim Textstr as String 定義字符變量Dim TextObj as Object 定義一個 AutoCAD 文本對象Pnt(0 =2:

10、Pnt(1 =4: Pnt(2 =0 初始化坐標TextH =1TexrStr =“This is a test”Set TextObj=moSpace.AddText(TextStr,Pnt,TextH 創(chuàng)建文本對象查詢與修改圖形對象有時用戶不但要創(chuàng)建圖形對象,更多的情況是修改或控制已存在的對象,這就需要對已創(chuàng)建的對象進行查詢,從而得到所要操作的對象。可以通過屬性來得到圖形對象的個數(shù)。Dim noMSOBJ as String,noPSOBJ as StringNoMSOBJ=Str(moSpace.CountNoPSOBJ=Str(paSpace.CountMsgBox "Obj

11、ect:Mspace="& noMSOBJ & "Pspace="& noPSOBJ用戶也可以通過 For.Loop 語句來遍歷所有的圖形對象或是通過方法來得到某個具 體的對象。下面的代碼說明了如何來修改當前中的對象, 如果對象為一直線, 則修改其顏色為 紅色,否則不做任何改動。Dim ent as objectFor each ent in mospaceIf ent.entityname= "acdline" thenEnt.color=acredEnt.updateEnd IfNext需要注意:如果對圖形對象做了改

12、動,則需要調(diào)用 Update方法在 AutoCAD 窗口中 重畫該對象。同樣,可以得到 Model Space中最后生成的圖形對象。Dim ent as objectSet ent = moSpace.Item(moSpace.Count-14. 非圖形對象除了 ModelSpace 與 PaperSpace 集合, Document 對象中另外 12個集合中的對象都 是非圖形對象,如 Layers 集合包含了 AutoCAD 當前文檔中所有的層,而 Linetypes 和 TextStyles 則分別為線型對象與字符型對象的集合。創(chuàng)建層可以調(diào)用 Layers 集合的 Add 方法創(chuàng)建層。以下

13、代碼創(chuàng)建一個名稱為 LAYER1,顏色 為洋紅色的層。Dim layerobj as objectLayerobj.Colors=acMagenta視口以下的代碼使用 ActiveSpace 屬性設置一個活動的 Space ,然后調(diào)用 Viewports 集 合的 Add 方法創(chuàng)建一個名為 "NEW_VIEWPORT"的視口。當視口建立后, Split 方法可使原 視口與新視口呈上下排列,最后, ActiveViewport 屬性使新視口成為活動視口。 Dim vport as objectAcadDoc.ActiveSpace=acModelSpaceVport.Spli

14、t acViewport2VerticalSet AcadDoc.ActiveViewport=vport5. 用戶輸入Document 對象中還包含有一個很重要的子對象 Utility , Utility 對象提供了一些 其它的實用功能, 如用戶輸入控制 (user-input。 user-input 方法可以在 AutoCAD 的命 令提示行中提示用戶輸入, 并顯示相應的輸入數(shù)據(jù)類型。 這種類型的輸入對于屏幕坐標 系,實體選擇,短字符與數(shù)字的輸入有著極為重要的應用。以下的代碼定義了 Utility 對象。Dim AcadUtil as objectSet AcadUtil =AcadDoc.Utility每個 user-input 方法都在 AutoCAD 的命令行里給出了適當?shù)妮斎胩崾静⒎祷叵鄳?的數(shù)據(jù)類型。 如:GetString 返回一個字符串, GetPoint 返回一個點 (三個雙精度數(shù)值 。 也可以調(diào)用 InitializeUserInput 方法進行更高級的輸入設置。用戶可以定義一個變量 :NL=Chr(13+Chr(10, 將這個變量用于輸入提示的開始處。 四、結(jié)束語AutoCAD 的 ActiveX Automation 技術的出現(xiàn) , 標志著 AutoCAD 的二次開發(fā)技術取得 了歷史性轉(zhuǎn)折。 首先 , 它首次完全實現(xiàn)了 OLE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論