2008年1月30日 星期三

[轉貼]AutoCAD VBA基礎

http://chenjianwei1981.blog.163.com/blog/static/12813532007124348510/

一、AutoCAD ActiveX 技術概述

AutoCAD ActiveX使用戶能夠從AutoCAD的內部或外部以編程方式來操作AutoCAD。它是通過使AutoCAD對像暴露於「外部世界」來實現這一功能的。暴露這些對像後,可以通過多種不同的編程語言和環境以及其他應用程序(例如Microsoft Word VBA 或Excel VBA)對其進行訪問。

在AutoCAD中實現ActiveX接口有兩大優點:

1.更多的編程環境可以編程訪問AutoCAD 圖形。在ActiveX Automation出現之前,開發人員只能用AutoLISP或 C++ 接口訪問AutoCAD圖形。

2.與其他Windows應用程序(例如Microsoft Excel和Word)共享數據比以前要方便得多。

對象是所有ActiveX 應用程序的主要構造塊。每一個顯示的對象均精確代表一個 AutoCAD 組件。AutoCAD ActiveX 接口中有許多不同類型的對象。例如:

1)直線、圓弧、文字和標注等圖形對象都是對象。
    2)線型與標注樣式等樣式設置都是對象。
    3)圖層、編組和塊等組織結構都是對象。
    4)視圖與視口等圖形顯示都是對象。
    5)甚至圖形、AutoCAD 應用程序本身也是對象。

二、AutoCAD VBA接口概述

Microsoft VBA是一個面向對象的編程環境,可提供類似Visual Basic 6 (VB) 的豐富開發功能。VBA和VB的主要差別是VBA和AutoCAD在同一進程空間中運行,提供的是具有AutoCAD智能的、非常快速的編程環境。

VBA也向其他支持VBA的應用程序提供應用程序集成。這就意味著AutoCAD(使用其他應用程序對像庫)可以是如Microsoft Word或Excel之類的其他應用程序的Automation控制程序。

可以單獨購買獨立開發版的Visual Basic 6,為AutoCAD VBA 提供額外的組件,例如外部的數據庫引擎和報表編寫功能。

在 AutoCAD 中實現 VBA 有四大優點:

1)VBA 及其環境易於學習和使用。
    2)VBA 可與 AutoCAD 在同一進程空間中運行。這使程序執行得非常快。
    3)對話框的構造快速而有效。這使開發人員可以構造原型應用程序並迅速收到設計的反饋。
    4)工程可以是獨立的,也可以嵌入到圖形中。這樣就為開發人員提供了非常靈活的方式來發佈他們的應用程序。

三、VBA 在 AutoCAD 中的實現方式

VBA 通過 AutoCAD ActiveX Automation 接口將消息發送到 AutoCAD。AutoCAD VBA 允許 VBA 環境與 AutoCAD 同時運行,並通過 ActiveX Automation 接口對 AutoCAD 進行編程控制。AutoCAD、ActiveX Automation 和 VBA 的這種結合方式不僅為操作 AutoCAD 對象,而且為向其他應用程序發送或檢索數據提供了功能極為強大的接口。

在 AutoCAD 中有三個定義 AcitveX 和 VBA 編程的基本元素。

第一個元素是 AutoCAD 本身,它擁有一個豐富的對象集,其中封裝了 AutoCAD 圖元、數據和命令。因為 AutoCAD 是一個設計為具有多層接口的開放架構應用程序,因此熟悉 AutoCAD 編程功能對於有效使用 VBA 來說是非常必要的。如果以前使用過 AutoLISP 編程來控制 AutoCAD,就應該對 AutoCAD 工具有一定的瞭解。然而,VBA 的基於對象的處理方式和AutoLISP的方式卻很不一樣。

第二個元素是AutoCAD ActiveX Automation接口,它建立與 AutoCAD 對象的消息傳遞(通訊)。在 VBA 中編程需要對ActiveX Automation 有基本的瞭解。《ActiveX and VBA Reference》中介紹了 AutoCAD ActiveX Automation 接口。即使是有經驗的 VB 編程人員也會發現要理解和開發 AutoCAD VBA 應用程序,AutoCAD ActiveX Automation 接口是非常重要的。

第三個元素是VBA編程環境,它具有自己的對象集、關鍵字和常量等,能提供程序流、控制、調試和執行等功能。AutoCAD VBA 幫助包含Microsoft VBA擴展幫助,可以通過以下方法從VBA IDE中對其進行訪問:

四、VB.NET訪問AutoCAD Automation 對像

要通過 Microsoft Visual StudioR .NET 完全訪問 AutoCAD Automation 對象,請創建以下文件的引用:

1)AutoCAD 2007類型庫「acax17enu.tlb」,位於「C:\Program Files\Common Files\Autodesk Shared」目錄中。
    2)AutoCAD/ObjectDBX Common 17.0 類型庫「axdb17enu.tlb」,位於「C:\Program Files\Common Files\Autodesk Shared」目錄中。

這些引用將提供以下主要交互操作部件:Autodesk.AutoCAD.Interop.dll(用於 AutoCAD 專用類型)和 Autodesk.AutoCAD.Interop.Common.dll(用於 ObjectDBXTM 宿主應用程序共享的類型)。Interop 程序集位於全局程序集緩存中,它們會將Automation對像映射到 .NET 的對等對象。

引用了類型庫之後,可以在Microsoft Visual Studio .NET中聲明基於AutoCAD的變量,如下例所示:

Dim objAcad As Autodesk.AutoCAD.Interop.AcadApplication

Dim objLine As Autodesk.AutoCAD.Interop.Common.AcadLine

可以在 AutoCAD 中使用NETLOAD命令加載 .NET 應用程序。

 

Microsoft .NET Framework 3.5

Microsoft .NET Framework 3.5
下載