3.AutoCAD二次开发语言AutoLISP及对话框控制语言——DCL
介绍
(1)AutoLISP
AutoLISP的全名是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[
(4) Auto LISP的特点
1)解释性程序 ,它仅能以解释方式运行于AutoCAD内部;
2)一切成分都以函数形式给出,没有语句概念和其它语法结构,它的运行是执行一些函数再调用一些函数;
3)程序=数据,即,数据和程序统一表达为表结构(S-表达式),故可把程序当数据来处理也可把数据当程序来处理;
4)运行程序=对函数求值 ;在函数求值过程中实现函数功能;
5)常用递归方式.
(5) Auto LISP 语言基础
Auto LISP 语言基础包括一Auto LISP 数据类型,二Auto LISP 变量,三Auto LISP 程序格式。
l Auto LISP 数据类型(整数、实数、字符串表(标准表,引用表)和点对、选择集、图元名、文件描述符、VLA 对象、符号和变量)
l Auto LISP 变量(内存变量、系统变量)
内存变量:整型变量、实型变量、字符串变量、表变量变量
系统变量:系统变量控制、AutoCAD 的某些功能和设计环境、命令的工作方式。
l Auto LISP程序格式
1)所有括号都是成对的都需要左右匹配;
2)阅读函数时按从左到右的规则进行;
3)函数名必须放在表中第一个元素的位置即放在操作数之前而不是放在中间,表中函数之间、参数之间及函数与参数之间均至少要一个空格;
4)两表之间和表内的参数、函数之间(只需一个)不需要多余的空格和回车,故一个表可占多行,一行可书写多个表;
5)“;”作注释,可放在程序的任何位置;
6)一般以扩展名“.LSP”的ASCII码形式表达
(6)对话框控制语言——DCL
1)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技术发展及其在各工程领域的应用具有一定的意义。