1、运行VB6,新建ActiveX DLL工程。
注: 32位AutoCAD二次开发创建ActiveX DLL工程;64位AutoCAD二次开发创建ActiveX EXE工程。
2、点击菜单“工程”->“引用”,找到“AutoCAD 200X Type Libray”。也可以不引用,开发不依赖AutoCAD版本的插件。
3、在类模块Class1中编写代码。
Public Sub Test(ByVal AcadApp As AcadApplication)
MsgBox AcadApp.Application.ActiveDocument.Name '显示当前文档名称
End Sub
不依赖AutoCAD版本时编写:
Public Sub Test(ByVal AcadApp As Object)
MsgBox AcadApp.Application.ActiveDocument.Name '显示当前文档名称
End Sub
4、点击菜单“文件”->“生成工程1.dll”;64位AutoCAD二次开发点击菜单“文件”->“生成工程1.exe”。
5、制作注册DLL以及卸载DLL的bat文件。
(1)32位AutoCAD二次开发
新建一个文本文档,复制下面的代码,并保存为“注册dll.bat”
regsvr32 /s 工程1.dll
新建一个文本文档,复制下面的代码,并保存为“卸载dll.bat”
regsvr32 /u /s 工程1.dll
(2)64位AutoCAD二次开发
新建一个文本文档,复制下面的代码,并保存为“注册exe.bat”
工程1.exe /regserver
新建一个文本文档,复制下面的代码,并保存为“卸载exe.bat”
工程1.exe /unregserver
(3)双击“注册dll.bat”,64位AutoCAD以管理员身份运行“注册exe.bat”,注册类。
6、制作lisp调用文件
新建文本文档,复制下面的代码,并保存为“Test.lsp”。
(defun c:Test( / rndobj)
(vl-load-com)
(setq rndobj (vlax-get-or-create-object "工程1.Class1"))
(vlax-invoke-method rndobj "Test" (vlax-get-acad-object))
(vlax-release-object rndobj)
(princ)
)
7、AutoCAD加载 “Test.lsp”文件,命令行键入“test”命令,即可执行。
8、也可以使用VB6创建AutoCAD菜单、AutoCAD工具栏、窗体等,注意创建含窗体命令时注意AcadApplication对象的传递。64位AutoCAD二次开发执行含窗体命令时可能会出现窗体在AutoCAD软件后面,点击一下AutoCAD软件即可。
9、使用VB6 ActiveX DLL/EXE配合Lisp脚本解决了VBA二次开发“源代码保密”的问题,同时也解决了使用VB6直接开发“只能操作第一个AutoCAD实例”的问题。
全部评论