
操作步骤:
一、创建一个ACTIVEX DLL项目cadPro。
二、添加一个模块,命名为ModCad。代码如下:
```vb
Public acadApp As Object
Public acadDoc As Object ' 这里建立一个新模块主要是为了以后在多个窗体、类或者多个工程中调用
```
三、添加一个类ClsTest,代码如下:
```vb
Public Function MenuMain(MenuIndex As Integer)
' 下面的判断在VB中测试时可以用到,在生成DLL后VBA调用时可注释
If ModCad.acadApp Is Nothing Or ModCad.acadDoc Is Nothing Then
ConnectToAcad()
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")
End If
If Err Then
Err.Clear
Set ModCad.acadApp = CreateObject("AutoCAD.Application")
End If
If Err Then
Unload Me
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工程,并添加一个窗体。在窗体上添加一个按钮,代码如下:
```vb
Private Sub Command1_Click()
Dim Rec As New cadPro.MenuMain
Rec.MenuMain(1)
End Sub
```
五、生成DLL文件,并在VBA中调用。在“工具”->“设定引用”项目中加入生成的DLL。代码如下:
```vb
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的连接。
以上程序在本机测试通过。
操作系统:Windows XP SP2
AutoCAD版本:AutoCAD 2006