一、为什么选择 VBA? 与AUTOLISP比较

        VBA 是Microsoft 搞的一个玩意,可提供类似 Visual Basic (VB) 开发功能,但是不能独立运行,只能集成在其它应用程序中,通过ActiveX接口对应用程序进行扩展、定制。VBA应用最多的程序大概数Excel了,看书店里一堆一堆的相关书籍就说明了。但对于autocad,VBA是个小字辈,使用VBA开发的比autolisp少多了,有人说"VBA只是autodesk提供的一个玩具",autodesk官网论坛上VBA版块的人气与visual lisp根本没法比,新出的2010版干脆不包括VBA,需要另外下载安装,好像大家对VBA不怎么感冒。visual lisp可以直接操作图形数据库,几乎无所不能,而VBA只能通过ActiveXautocad的对象接口的属性和方法操作,接口不如visual lisp,特别是对于一些非图元对象比如标注样式的操作不方便。但对于基本的图元对象操作,基本差不多,而二次开发更多是对图元对象的操作。并且与visual lisp相比,VBA有以下优点:

1、VBA代码可读性好。程序往往需要执行大量的计算,比如坐标转换、向量计算等,lisp的括号套括号的表达式很不人道。

2、调试方便,输入代码直接运行就行了,visual lisp需要加载一下,调试功能也不如VBA。

3、VBA编写界面那个DCL方便。

4、vba可以调用windows API!

二、AUTOCAD VBA学习资源

      关于这方面的书很少,并且都是很薄的从帮助里抄下来的那种。老外写的有不错的书,国内没有。我比较迷信软件本身带的帮助文档,个人认为最好的学习资料就是帮助里的“ActiveX 和 VBA 开发人员指南” 和 “ActiveX and VBA Reference” ,看到的书大多是从这两个里抄来的,大家不必舍近求远。前者适合学习,后者是离不开的一个词典。另外在网上找到一个chm格式的“AUTO CAD VBA程序范例.”(附件 AUTO CAD VBA程序范例.rar chm格式的附件不能上传?P点大的东西也害我压缩), 基本是帮助文档里的例子,但集中在一起,比较方便参考学习。 autodesk官网的论坛里有好多高手,就是访问太慢。