VBA和VB應用程序之異同和相互移植
VBA和VB應用程序之異同和相互移植 |
Microsoft VBA是一個面向對象的編程環境。它提供了與Visual Basic (VB)相似的豐富的開發能力。VBA和VB的最主要的區別在於VBA運行在與AutoCAD相同的處理空間,從而提供了一個具有AutoCAD智能的,非常快的編程環境。 VBA同時也提供與其它有VBA編程能力的應用程序的應用集成。這意味著AutoCAD利用其它應用程序的對象庫可以控制其它應用程序,例如Microsoft Word和Excel。 VB是一個獨立的開發版本,必須單獨購買,但是它為AutoCAD VBA提供了許多附加的組件,象外部資料庫引擎和報告輸出能力等。 執行AutoCAD VBA有四點好處: Visual Basic編程環境易學易用; VBA運行在與AutoCAD相同的處理空間。使程序執行速度非常快。 對話框構建快速,高效。允許開發者快速地定製程序原形和收到TRANBBS設計的及時反饋。 工程可以單獨存在,亦可嵌入在圖形中。這就給了開發者在發行他們的應用程序時極大的靈活性。 要想用VB改寫VBA的示例代碼,你必須首先引用AutoCAD類型庫。在VB里,從工程選單中選擇引用選項激發引用對話框。從引用對話框,選擇AutoCAD 版本15然後擊OK。 下一步,在示例代碼中用用戶定義的指向當前活動文檔的專門變數替代所有對ThisDrawing的引用。為了達到這個目的,定義一個AutoCAD應用程序的變數(acadApp)和一個當前文檔的變數(acadDoc)。然後,設置應用程序變數(acadApp)為當前AutoCAD應用程序。 如果AutoCAD正在運行,GetObject方法就提取出AutoCAD應用程序對象。如果AutoCAD沒有正在運行,一個錯誤就會發生,VB程序就應該捕捉並且清除它。CreateObject方法然後試圖生成一個AutoCAD應用程序對象。如果成功,AutoCAD就啟動;如果失敗,一個顯示錯誤描述的信息框就會出現。 下面的代碼示例演示了VB如何連接到AutoCAD並且如何用Clear和Description屬性處理錯誤信息變數Err。如果你的編程環境不支持這些屬性,你需要適當地修改示例。 示例一:從Visual Basic 連接到AutoCAD Sub ConnectToAcad()Dim acadApp As AcadApplicationOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox Err.DescriptionExit SubEnd IfEnd IfMsgBox "Now running " + acadApp.Name + _" version " + acadApp.VersionEnd Sub下一步,設置文檔變數為AutoCAD應用程序的文檔對象。文檔對象從應用程序對象的ActiveDocument屬性返回。 示例二:獲取AutoCAD文擋對象 Dim acadDoc as AcadDocument Set acadDoc = acadApp.ActiveDocument 從這裡開始,就可以使用acadDoc變數來引用當前的AutoCAD圖形。 注意:當運行多個AutoCAD常式時,GetObject方法將返回在Windows運行對象表中的第一個AutoCAD常式。關於運行對象表(ROT)和GetObject方法請參看Microsoft Visual Basic相應文檔。 示例三:VBA和VB代碼對照 用VBA生成一條線 Sub AddLineVBA() " This example adds a line " in model space Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double " Define the start and end " points for the line startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 " Create the line in model space Set lineObj = ThisDrawing. _ ModelSpace.AddLine _ (startPoint, endPoint) " Zoom in on the newly created line ZoomAll End Sub 用VB生成一條線 Sub AddLineVB() On Error Resume Next " Connect to the AutoCAD application Dim acadApp As AcadApplication Set acadApp = GetObject _ (, "AutoCAD.Application") If Err Then Err.Clear Set acadApp = CreateObject _ ("AutoCAD.Application") If Err Then MsgBox Err.Description Exit Sub End If End If " Connect to the AutoCAD drawing Dim acadDoc As AcadDocument Set acadDoc = acadApp.ActiveDocument " Establish the endpoints of the line Dim lineObj As AcadLine Dim startPoint(0 To 2) As Double Dim endPoint(0 To 2) As Double startPoint(0) = 1 startPoint(1) = 1 startPoint(2) = 0 endPoint(0) = 5 endPoint(1) = 5 endPoint(2) = 0 " Create a Line object in model space Set lineObj = acadDoc.ModelSpace.AddLine _ (startPoint, endPoint) ZoomAll End Sub |
推薦閱讀:
※有哪些適合編寫 C / C++ 的軟體?
※腎病綜合征臨床診斷思維程序
※坐飛機的全部程序
※象棋和國際象棋的電腦程序是如何設計的?
※圖解7種耦合關係
TAG:程序 |