您的位置:网站首页 > CAD新闻

CAD中的VBA能做什么

时间:2011-09-21 10:42:20 来源:未知

当用VBA开发基于AutoCAD的应用程序时,几乎总是在重复下面的几种工作:
(1)        创建和编辑实体。作为计算机设计软件,AutoCAD最主要的工作时完成设计目标并为下一阶段的实际制造提供参考。图纸仍然时其主要的工作产品,因而大部分的二次开发应用程序最终都要将结果用图形实体表现出来,这时AutoCAD二次开发的一个基础。
(2)        和用户交互。应用程序本身可以通过窗体或者命令行完成和用户交互。比较特殊的时与图形相关的用户交互,列如提示用户选择一条多段线、输入一个整数、输入一个角度值等。
(3)        利用队形特性来组织实体。AutoCAD作为一种CAD软件,其内在的特点决定了所有的图形实体不具有属性特征。也就是说,如果绘制一条直线来作为一条道路,在AutoCAD中是无法标识出他是一条道路的,通常的解决方法是创建一个名为“道路”的图层,然后将所有的代表道路的线都放在这个图层中统一管理。
(4)        处理图形文件,在文件之间交换数据。在进行设计是,把所有的图形元素放在一个图形文件中并不总是个好主意,最常见的后果就是图形文件太大导致操作起来太慢。解决这个问题的办法就是按某种法则将图形元素分布到几个图形文件中,在需要的时候交换图形文件之间的数据。
(5)        视图管理。在AutoCAD中绘图时,为了便于计算和观察图形,人们总时会很频繁地改变视图,列如缩放、平移或改变视点。而在开发VBA应用程序时,这方面的要求相对来说会低一点,一般只需在创建实体之后给出一个合适的观察角度即可。
(6)        文字。在AutoCAD的基本图形元素中,文字是比较简单的一个,但是在实际使用中它的可变性最大。列如,不同类型的说话需要不同的文字样式,还有一些特殊的符号以及行为公差都是通过文字来表现的。
(7)        管理块的属性。块是将若干个图形对象定义成一个组,在需要的地方可以多次引用它。这带来两个好处,一是减小图形的尺寸,二是修改起来方便,只需要修改块的定义便可以更新所有引用。块和属性结合起来使用,能够大大简化一些特定类型设计工作。
(8)        在三维空间工作。某些工作必须在三维空间中完成,列如机械零件的建模以及装配,或者处理三维建筑模型。三维空间中工作所要处理的一个主要问题是三维坐标系,电脑屏幕本身是一个二维的平面,要反映并操作三维的对象,必须借助于用户坐标系和视角的变化。
(9)        响应AutoCAD中的事件。很多操作都会引发AutoCAD的事件,如用户创建、移动、双击、删除了某个实体,或者执行了一个命令、打开了一个图形等,使用这个特性能视线一些有趣的特性。填充图案和填充边界的关联就是通过事件响应来实现的。
(10)        布局和打印操作。完全可以把布局看作是一张特定类型的图纸,AutoCAD的这种模型和布局分开的思想非常好,就如同现实生活中的一辆车可以从多个角度拍多张照片来表现它一样。
(11)        扩展数据和扩展记录来标识实体。AutoCAD识一个非常纯粹的CAD软件,其中任何的实体都么现实意义,但是它提供了扩展数据和扩展记录作为实体属性的附加机制。通过这两种手段,可以给某条直线追加一个“属性”,比如为直线增加一个“输电线”的“名称”,或者为闭合多段线设置一个“公园”的“名称”等。
(12)        访问文件和数据库。CAD程序同文件和数据库打交道非常平常,因为CAD程序中经常有一些数据不方便保存在图形文件中。如果要创建一个标准零件库,就可以在数据库中保存零件库的数据,在创建零件的时候访问数据库读取其特征数据,然后在AutoCAD中创建该零件对应的图形元素即可。
(13)        和Office程序交换数据。某些情况下;仅靠图纸还不能很好的说明问题,或者还需要使用Excel对图形中的某些对象作一个统计,那么就必须同Office程序交换数据。
(14)        使用Windows API ( Windows应用程序编程接口 )增强程序功能。VBA的语法是基于Visual Basic 6.0的,并且在可以使用的对象上仅包含了Visual Basic 6.0的一部分,所幸VBA仍然可以访问Windows API,能通过Windows API来实现一些VBA基本对象无法实现的功能。
(15)        VBA应用程序的发布。编程者大多情况下恐怕不是程序的最终使用者,那么程序编写完成后总要以一种合适的方式发布到使用者的计算机上才行,因此就避免不了学习VBA应用程序的发布。
(16)        其它方面的操作。如将VBA程序移植到Visual Basic上、使用DLL来保护源代码的安全、使用ObjectDBX等,当学习深入到一定程序之后,就会感觉这些知识非常有用。