自从1986年AutoLISP作为第一个用于AutoCAD二次开发的编程语言被引入到AutoCAD中,从此许多计算机软件开发商和用户用AutoLISP编写了数以万计的实用系统和应用程序。还有大量的程序是利用AutoCAD的外部文件(Script)对AutoCAD进行二次开发。对AutoCAD来说这无疑是一笔巨大的资源和财富,也是其赖以发展的基础之一。
1 概述
1.1 AutoCAD中实现ActiveX
AutoCAD ActiveX使用户能够从AutoCAD的内部或外部以编程方式来操作AutoCAD,它是通过将AutoCAD对象显示到“外部世界”来做到这一点的。一旦这些对象被显示,许多不同的编程语言和环境以及其他应用程序(例如Microsoft Office中的Word VBA或Excel VBA)就可以访问它们。
在AutoCAD中实现ActiveX接口有两大优点:
(1) 更多的编程环境可以编程访问AutoCAD图形。在ActiveX Automation出现以前,开发人员只能使用AutoLISP或C++接口。
(2) 与其他Windows应用程序(例如Microsoft Office中的Excel和Word)共享数据变得更加容易。
对象是所有ActiveX应用程序的主要构造块,每一个显示的对象均精确代表一个AutoCAD组件,AutoCAD ActiveX接口中有许多不同类型的对象。例如,直线、圆弧、文字和标注等图形对象是对象;线型与标注样式等样式设置是对象;图层、编组和块等组织结构是对象;视图与视口等图形显示是对象;甚至图形、AutoCAD应用程序本身也是对象。
1.2 AutoCAD中的VBA
Microsoft VBA是一个面向对象的编程环境,可提供类似Visual Basic(VB)的丰富开发功能。VBA和VB的主要差别是VBA和AutoCAD在同一进程空间中运行,提供的是具有AutoCAD智能的、非常快速的编程环境。VBA也向其他支持VBA的应用程序提供应用程序集成,这就意味着AutoCAD(使用其他应用程序对象库)可以是如Microsoft Word或Excel之类的其他应用程序的Automation控制程序。
在AutoCAD中实现VBA有四大优点:
(1) Visual Basic编程环境易于学习和使用。
(2) VBA可与AutoCAD在同一进程空间中运行,这使程序执行得非常快。
(3) 对话框的构造快速而有效。这使开发人员可以构造原型应用程序并迅速收到设计的反馈。
(4) 工程可以是独立的,也可以嵌入到图形中。这样就为开发人员提供了非常灵活的方式来发布他们的应用程序。
新工程会被创建为未保存的全局工程。创建完成后,可以将它嵌入到图形中或保存到工程文件中。
2 VBA基础
2.1 VBA工程
AutoCAD VBA工程是由许多程序模块、类模块和窗体组成的集合,他们同时运行即可完成指定的功能。VBA工程可以保存于AutoCAD图形文件内部,称为内嵌VBA工程;亦可保存为独立的工程,称为全局VBA工程,以*.dvb文件格式保存。
对于内嵌VBA工程,当打开包含该工程的AutoCAD图形文件时,它将被自动加载。因此,在运行内嵌VBA工程程序之前,其用户不须在文件夹中去寻找工程文件并加载该工程,使得工程管理更加方便。
全局VBA工程的功能较多。全局工程可在任何AutoCAD图形中运行,亦可在工程中打开或关闭AutoCAD图形。全局工程容易与其他用户共享,且可制作成共享的宏资源库,因此应用VBA开发通用应用程序时,应将其保存为全局工程。但全局工程也有一些缺点,它不会随AutoCAD图形文件的打开而自动加载。所以,用户在运行全局工程程序之前须要知道哪个工程文件中包含了所需的宏,然后加载该工程文件,最后才能执行相应的宏。
2.2 VBA管理器
在当前AutoCAD进程中加载的所有VBA工程均可用VBA管理器来管理,亦可用它来新建、保存、加载、卸载、嵌入或提取工程。“VBA管理器”对话框如图1所示。
启动“VBA管理器”对话框的命令调用方法为:
命令行:VBARUN
菜单栏:【工具】→【宏】→【VBA管理器】
与VBA应用程序开发、管理相关的下拉菜单如图2所示。
图1 “VBA管理器”对话框
图2 与VBA应用程序开发、管理相关的下拉菜单
1. 创建新VBA工程
创建新VBA工程的步骤如下:
(1) 打开“VBA管理器”对话框。
(2) 选择“新建”。
新工程将以默认的名称“ACADProject”创建。如要更改工程名称,必须进入“Visual Basic编辑器”中,在“工程属性”窗口中更名。其操作方法步骤如下:
(1) 单击“VBA管理器”中的“Visual Basic编辑器”按钮(如图1所示)或用菜单选择“Visual Basic编辑器”(如图2所示),打开“Microsoft Visual Basic”,如图3所示。
(2) 在VB的“工程资源管理器”选中“ACADProject(Global1)”,单击右键,在弹出菜单中选择“ACADProject属性…”选项,打开“工程属性”对话框,在“工程名称”中输入用户欲更改的名称,如图4所示。
图3 Visual Basic编辑器
图4 “工程属性”对话框