天天看點

AutoCAD二次開發中VB或VBA的應用問題

1、             如何在 VB 中連接配接 AutoCAD 。

啟動 VB ,引用 AutoCAD 類型庫。操作步驟:從 “ 工程 ” 菜單中選擇 “ 引用 ” 選項,啟動 “ 引用 ” 對話框。在 “ 引用 ” 對話框中,選擇 AutoCAD 類型庫,然後單擊 “ 确定 ” 。 2、            定義子產品級變量 AutoCAD 應用程式 (acadApp) 和目前的文檔 (acadDoc) 。

如果 AutoCAD 正在運作,使用 GetObject 函數将檢索 AutoCAD Application 對象。如果 AutoCAD 沒有運作,使用 CreateObject 函數試圖建立一個 AutoCAD Application 對象。如果建立成功,會啟動 AutoCAD ;如果失敗,則會發生錯誤。

同時運作多個 AutoCAD 任務時, GetObject 函數會傳回 Windows 運作對象表中的第一個 AutoCAD 執行個體。

要顯示 AutoCAD 圖形視窗,需要将 AutoCAD 應用程式的 Visible 特性設定為 TRUE 。

使用 acadDoc 變量引用目前的 AutoCAD 圖形。

示例:

Dim acadApp As AcadApplication

Dim acadDoc as AcadDocument

Sub ConnectToAcad()

On Error Resume Next

Set acadApp = GetObject(, "AutoCAD.Application")

If Err Then

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

If Err Then End

End If

acadApp.Visible = True

Set acadDoc = acadApp.ActiveDocument

End Sub

2 、如何使 VB 開發的程式不依賴于 AutoCAD 的版本。

啟動 VB ,定義子產品級變量 AutoCAD 應用程式 (acadApp) 和目前的文檔 (acadDoc) 。

如果 AutoCAD 正在運作,使用 GetObject 函數将檢索 AutoCAD Application 對象。如果 AutoCAD 沒有運作,使用 CreateObject 函數試圖建立一個 AutoCAD Application 對象。如果建立成功,會啟動 AutoCAD ;如果失敗,則會發生錯誤。

同時運作多個 AutoCAD 任務時, GetObject 函數會傳回 Windows 運作對象表中的第一個 AutoCAD 執行個體。

要顯示 AutoCAD 圖形視窗,需要将 AutoCAD 應用程式的 Visible 特性設定為 TRUE 。

使用 acadDoc 變量引用目前的 AutoCAD 圖形。

示例:

Dim acadApp As Object

Dim acadDoc as Object

Sub ConnectToAcad()

On Error Resume Next

Set acadApp = GetObject(, "AutoCAD.Application")

If Err Then

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

If Err Then End

End If

acadApp.Visible = True

Set acadDoc = acadApp.ActiveDocument

End Sub

與第一個問題相比較,可以看出,不引用具體的類型庫以及使用通用的對象類型就可以達到通用性。

3 、前期綁定和後期綁定

要建立一個使用前期綁定方式的對象變量,也就是說,在程式編譯時就完成綁定,則對象變量在聲明時應指定類 ID ,如: Dim acadApp As AcadApplication 。

使用 As Object 子句聲明對象變量,可以建立一個能包含任何類型對象引用的變量。不過,該變量通路對象是後期綁定的,也就是說,綁定在程式運作時才進行,如: Dim acadApp As Object 。

前期綁定的變量引用可以提供更好的性能,但該變量隻能存放聲明中所指定的類的引用。

而後期綁定的變量引用可以提供更好的通用性。

4 、依賴于版本和獨立于版本

如果 CreateObject 或 GetObject 函數使用的 ProgID 沒有附加版本号,那麼是獨立于版本的,否則是依賴于版本的。例如,如果使用的是 CreateObject ,則 CreateObject ("AutoCAD.Application") 是獨立于版本的,而 CreateObject ("AutoCAD.Application.15") 是依賴于版本的。

5 、 VB 代碼到 VBA 代碼的轉換

在 VBA 的 IDE 環境中,使用 “ 導入檔案 ” 将要轉換的 VB 工程的子產品、類子產品以及窗體檔案一一導入。接着将 VB 代碼中所有的目前的文檔 (acadDoc) 變量替換為 ThisDrawing ,而 AutoCAD 應用程式 (acadApp) 變量替換為 Application 。同時删除定義的 AutoCAD 應用程式 (acadApp) 和目前的文檔 (acadDoc) 變量,删除與 AutoCAD 應用程式連接配接的代碼。注意:要轉換 VB 代碼的窗體部分,則窗體必須是用 UserForm 建立的。

6 、圖形對象和非圖形對象

圖形對象(也稱為圖元、實體對象)是組成圖形的可見對象(例如直線、圓、光栅圖像等)。非圖形對象是指屬于圖形的一部分但不可見的(提示性的)對象,例如 Layers 、 Linetypes 、 DimStyles 、 SelectionSets 等等。要建立這些對象,可使用 Add 方法。每一個對象都有用于特定目的的方法和特性,都有設定和檢索擴充資料以及删除自己的方法。

繼續閱讀