摘 要: 本文对CAD技术中的二次开发所需的语言及工具介绍归纳,得出了一些有用的结论,对于了解CAD二次开发技术的发展及其如何适应具有一定的意义关键词:CAD二次开发技术;AutoLISP
1.前言AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构,
CAD二次开发技术介绍
。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前被大家广泛使用的,最新版本是AutoCAD 2010,其二次开发语言及工具也在不断地涌现由于大量的应用领域提供了特有的几何问题,对于这些问题必须建立有效的算法,画出更精确的图形,这就是孕育CAD的二次开发,AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。2.CAD二次开发所涉及到的技术介绍2.1AutoCAD二次开发的内容和工具AutoCAD二次开发的主要目的是提高专业应用领域的工作效率,为专业绘图建立标准,并使常用的或重复的任务自动化等。内容如下:Ø开发具有专业特点的用户图形界面Ø设计建立专业化的标准图形库Ø设计和规划专业化的系统功能和命令集AutoCAD二次开发的工具如下:ØAuto LISP语言和Visual LISP开发环境ØActiveX和Visual Basic for Application (VBA)语言ØVisual C++ 语言和ObjectARX开发环境ObjectARX—AutoCAD Runtime Extension 编程环境,构造对象的 C++ 库。这些库用于开发 AutoCAD 应用程序、扩展 AutoCAD 类和协议,创建AutoCAD 内置命令相同的新命令。2.2CAD二次开发所需语言及工具介绍1VBA 即Mcrosoft office中的Visual Basic for Applications,它被集成到AutoCAD 2000中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD 2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD 2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。2 ADSADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。3ObjectARXObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有其它的一些重要库组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展)。ObjectARX 还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作。4 VisualLISPVisualLISP已经被完整地集成到AutoCAD 2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。其特点为自身是AutoCAD 2000中默认的代码编辑工具;用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于Auto CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。摘 要: 本文对CAD技术中的二次开发所需的语言及工具介绍归纳,得出了一些有用的结论,对于了解CAD二次开发技术的发展及其如何适应具有一定的意义关键词:CAD二次开发技术;AutoLISP1.前言AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AutoCAD第一版于1982年11月由AutoDESK公司推出,目前被大家广泛使用的,最新版本是AutoCAD 2010,其二次开发语言及工具也在不断地涌现由于大量的应用领域提供了特有的几何问题,对于这些问题必须建立有效的算法,画出更精确的图形,这就是孕育CAD的二次开发,AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。2.CAD二次开发所涉及到的技术介绍2.1AutoCAD二次开发的内容和工具AutoCAD二次开发的主要目的是提高专业应用领域的工作效率,为专业绘图建立标准,并使常用的或重复的任务自动化等。内容如下:Ø开发具有专业特点的用户图形界面Ø设计建立专业化的标准图形库Ø设计和规划专业化的系统功能和命令集AutoCAD二次开发的工具如下:ØAuto LISP语言和Visual LISP开发环境ØActiveX和Visual Basic for Application (VBA)语言ØVisual C++ 语言和ObjectARX开发环境ObjectARX—AutoCAD Runtime Extension 编程环境,构造对象的 C++ 库。这些库用于开发 AutoCAD 应用程序、扩展 AutoCAD 类和协议,创建AutoCAD 内置命令相同的新命令。2.2CAD二次开发所需语言及工具介绍1VBA 即Mcrosoft office中的Visual Basic for Applications,它被集成到AutoCAD 2000中。VBA为开发者提供了一种新的选择,也为用户访问AutoCAD 2000中丰富的技术框架打开一条新的通道。VBA和AutoCAD 2000中强大的ActiveX自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动。2 ADSADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。3ObjectARXObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有其它的一些重要库组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展)。ObjectARX 还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作,
工程
《CAD二次开发技术介绍》()。4 VisualLISPVisualLISP已经被完整地集成到AutoCAD 2000中,她为开发者提供了崭新的、增强的集成开发环境,一改过去在AutoCAD中内嵌AtuoLISP运行引擎的机制,这样开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。其特点为自身是AutoCAD 2000中默认的代码编辑工具;用它开发AutoLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ActiveX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VisualLISP中新增了一些函数:如基于AutoLISP的ActiveX/COM自动化操作接口;用于执行基于Auto CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。3.AutoCAD二次开发语言AutoLISP及对话框控制语言——DCL介绍(1)AutoLISPAutoLISP的全名是LIST Processing Language,Visaul Lisp 是为扩展和自定义 AutoCAD 功能而设计的一种编程语言,它的起源可以追溯到五十年代末的 LISP 语言。LISP 最初是为编写人工智能 (AI) 应用程序设计的,现在仍是许多人工智能程序的基础。其发展过程可以描述如下:自从LISP语言发展到Auto LISP以来, Auto LISP 一直是自定义 AutoCAD 的标准语言。Visual LISP (VLISP) 增加了许多重要功能,是新一代的 AutoCAD LISP 语言。作为开发工具,VLISP 提供了一个完整的集成开发环境 (IDE),包括编译器、调试器和其他工具,大大提高了自定义 AutoCAD 的效率。(2) Auto LISP的目的Auto LISP的目的是进行AutoCAD二次开发 包括:l直接增加和修改AutoCAD命令;l随意扩大图形编辑功能;l建立图形库和数据库;l直接访问和修改当前图形;l开发CAD软件包。(3)AutoCAD的典型应用AutoCAD最典型的应用是实现参数化绘图程序设计包括:1)尺寸驱动程序;指通过改变实体标注的尺寸实现图形的自动修改。2)鼠标拖动程序;指利用Auto LISP提供的函数(GRREAD[]),它让我们直接读取CAD的输入设备,任选项追踪光标移动,当光标移动为“真”时,通过鼠标移动光标调整所需的参数值从而改变屏幕图形的大小和形状。(4) Auto LISP的特点1)解释性程序 ,它仅能以解释方式运行于AutoCAD内部;2)一切成分都以函数形式给出,没有语句概念和其它语法结构,它的运行是执行一些函数再调用一些函数;3)程序=数据,即,数据和程序统一表达为表结构(S-表达式),故可把程序当数据来处理也可把数据当程序来处理;4)运行程序=对函数求值 ;在函数求值过程中实现函数功能;5)常用递归方式.(5) Auto LISP 语言基础Auto LISP 语言基础包括一Auto LISP 数据类型,二Auto LISP 变量,三Auto LISP 程序格式。lAuto LISP 数据类型(整数、实数、字符串表(标准表,引用表)和点对、选择集、图元名、文件描述符、VLA 对象、符号和变量)lAuto LISP 变量(内存变量、系统变量)内存变量:整型变量、实型变量、字符串变量、表变量变量系统变量:系统变量控制、AutoCAD 的某些功能和设计环境、命令的工作方式。lAuto LISP程序格式1)所有括号都是成对的都需要左右匹配;2)阅读函数时按从左到右的规则进行;3)函数名必须放在表中第一个元素的位置即放在操作数之前而不是放在中间,表中函数之间、参数之间及函数与参数之间均至少要一个空格;4)两表之间和表内的参数、函数之间(只需一个)不需要多余的空格和回车,故一个表可占多行,一行可书写多个表;5)“;”作注释,可放在程序的任何位置;6)一般以扩展名“.LSP”的ASCII码形式表达(6)对话框控制语言——DCL1)Dcl的重要性与DCL工作方式随着AutoCAD的版本提高,人机交互界面愈来愈先进,参数的对话框输入法替代了命令行输入法,设计自己的对话框以成为一次二次开发的重要任务。对话框由对话框控制语言(DCL)编写,以ASCII文件的形式出现,对话框中包含各种控件元素,每个控件的大小和功能都由控件的属性决定,而对话框本身的大小则由少量的定位信息控制,对话框本身不能完成所设计的功能,功能的实现要靠AutoIISP语言来实现2)DCL功能的实现步骤编制一个dcl对话框定义文件,它是由一个或几个对话框描述单元组成的ASCII文件。扩展名为“.dcl”,对话框描述单元以层次结构描述了个对话框的工作方式及其包含的控件编写一个相应的Auto LISP应用程序来调用或控制DCL文件预定义功能。3)简单对话框控制示例hello : dialog {label = "Sample Dialogue Box";: text {label = "第一个示例对话框:";}: text {label = "Hello World!";}: button {key = "accept";label = "OK";is_default = true;}}4)DCL主要预定义控件和集控
控件/集控名 DCL表达式 含义 按钮 Button 立即可见,要求动作效果 编辑框 Edit_box 可输入和编辑单行文本 图像按钮 Image_button 显示图像窗的按钮 列表框 List_box 按行排列的文字串供选择 弹出示列表 Popup_list 可弹出的列表框 单选按钮 Radio_button 按行或列排列的一串控件,只能选其一 滑动杆 Slider 可获得数值,移动滑块调整数值大小 切换按钮 Toggle 控制一个二进制数值在“0”和“1”切换 列 Column 一列控件,可以是控件和集控。 5) 预定控件和集控属性意义及设计原则Ø与按钮相关的动作对用户可见且能立即发生。Ø同列按钮宽度相同。Ø若拾取按钮要显示一个对话框,按钮标号应以“…”结尾。Ø若要隐藏一个对话框,其标号应根一个空格和一个小于符号“<”。6) 预定控件和集控属性意义及设计原则•编辑框的设计原则:编辑框的标号以冒号“:”结束。对于坐标点类的数据最好提供两到三个编辑框以免要用户记住点坐标输入的命令行语法•列表框设计原则:列表框的宽度应能容纳最长的选项,因为列表不能做水平滚动。除非有更好的,合乎逻辑的排列方法,一般按字母顺序排列选项。如果表比较短且固定长度,则应考虑使用单选列。•弹出式列表框设计原则:弹出式列表框的列表不能太长,不宜超过16项。弹出式列表框的标号应以冒号“:”结束。弹出式列表框的标号应显示在左边,一种改进的方法是删除标号,取而代之地是使用一个文本框显示在它的上方。•单选按钮、单选行单选列的设计原则:一般来说当选列比单选行更易使用(鼠标移动量小)。确保每个按钮的含义明确,所有标号的长度应尽可能相同。如果某些操作要求单选行或当选列失效,则应使单选行或当选列变灰。4结论本文对CAD技术中的插值与拟合算法进行了归纳,得出了一些有用的结论,对于CAD技术发展及其在各工程领域的应用具有一定的意义。参考文献[1] 周健.AutoLISP2007中文版盈盈教程.机械出版社,2009