CAD二次开发,有很多不同层次的语言和库可供选择。
首先是VisualLisp和AutoLisp。Lisp是一门历史悠久的函数式编程语言,很多概念和C这种过程式语言不一样,据说他在人工智能等方面有广泛的应用。
CAD引入了这种语言,给他添加相应的函数库,就成了命令行使用的AutoLisp。在此基础上再增加关于对话框和窗口界面的库,就是VisualLisp,简称VL。VL在CAD中可以视为CAD命令的整合,是脚本语言,而且由CAD程序提供了编写环境。因此上手相当容易,便于编写,调试也很方便。
不过由于是脚本语言,就有两大缺陷。第一是速度,当程序规模很大或是操作的对象数量过多时,你会明显感觉到迟钝。第二是功能。如果有什么功能是命令本身做不到的,那VL也做不到。譬如关于自定义对象、内存操作、数据传递之类,往往要通过别的方法解决。所以我个人认为Lisp适用于把现有命令组合成一个新命令来使用,尤其是存在大量重复操作的时候,用来做批处理非常好。唯一让人感到不适的是,由于Lisp语言本身的语法要使用大量的圆括弧,当嵌套层次较深时,往往会在括弧的配对上发生问题。
第二大类是使用ActiveX和VB。ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。ACAD使用Acitvex把数据传送给ActiveX程序,程序处理后再传回ACAD。这个过程有点像浏览器浏览动态网站。AcitveX与具体的编程语言无关,因此理论上说可以用任何一种支持他的语言来编写,但通常大家选择VB语言。VBA是VB的特殊形式,他将VB植入到应用程序中。ACAD包含的VBA能够和CAD共享地址空间,而独