壹、創建壹個ACTIVEX DLL cadPro工程
二、添加壹個模塊命名為ModCad.代碼如下
Public acadApp As Object
Public acadDoc As Object
(這裏建立壹個新塊主要是為了以後在多個窗體、類或者多個工程中可以調用)
二、添加壹個類ClsTest代碼如下:
Public Function MenuMain(MenuIndex As Integer)
'下面的判斷在VB中測試的時候可以用到,在生成DLL後VBA調用時可註釋
If ModCad.acadApp Is Nothing Or ModCad.acadDoc Is Nothing Then
ConnectToAcad
setApp ModCad.acadApp
setDoc ModCad.acadDoc
End If
Select Case MenuIndex
Case 1
AutoCADTest
Case 2
End Select
End Function
Public Function ConnectToAcad()
On Error Resume Next
Set ModCad.acadApp = GetObject(, "AutoCAD.Application.16.2") '16.2是CAD的版本
If Err Then
Err.Clear
Set ModCad.acadApp = CreateObject("AutoCAD.Application.16.2")
End If
If Err Then
Err.Clear
Set ModCad.acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set ModCad.acadApp = CreateObject("AutoCAD.Application")
End If
If Err Then
Unload Me
End If
End If
ModCad.acadApp.Visible = True
Set ModCad.acadDoc = ModCad.acadApp.ActiveDocument
End Function
Public Function setApps(acadObj As AcadApplication)
Set ModCad.acadApp = acadObj
Set ModCad.acadDoc = acadApp.ActiveDocument
End Function
'VB中要在CAD中實現的功能
Private Function AutoCADTest()
Dim cadLine As AcadLine
Dim cadPoint As Variant
cadPoint = ModCad.acadDoc.Utility.GetPoint(, "請選取壹個插入點:")
ModCad.acadDoc.ModelSpace.AddCircle cadPoint, 5
End Function
三、如果要在VB中調試,在添加壹個EXE工程,引用ACTIVEX工程,添加壹個窗體,在窗體上添加壹個按鈕,
Private Sub Command1_Click()
Dim Rec As New cadPro.MenuMain
Rec.MenuMain 1
End Sub
四、生成DLL文件在VBA中調用。
在工具----設定引用項目中加入生成的DLL。代碼如下:
Option Explicit
Private clsGre As New cadPro.ClsTest
Public Sub cadtest()
On Error Resume Next
clsGre.setApp ThisDrawing.Application
clsGre.MenuMain 1
End Sub
按照以上四個步驟就可實現VB與AutoCAD的連接。
以上程序在本機測試通過。
OS:winxp sp2 cht
AuotCAD Version:AutoCAD 2006