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