Lisp教程下册DCL编程彩版.docx
- 文档编号:3147811
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:65
- 大小:133.11KB
Lisp教程下册DCL编程彩版.docx
《Lisp教程下册DCL编程彩版.docx》由会员分享,可在线阅读,更多相关《Lisp教程下册DCL编程彩版.docx(65页珍藏版)》请在冰豆网上搜索。
Lisp教程下册DCL编程彩版
Lisp教程(下册DCL编程)彩版
DCL(DalogControlLanguage)语言教程i
课程简介
课程主要介绍AutoLISP程序的编写,配合使用DCL(DialogControlLanguage)语言,作对话方框的开发及应用.本课程只适合对AutoLISP程序设计有相当认识之人仕.全课共分为12篇,每篇一个主题;而每篇再分为若干小节,每天顺序显示.
内文若有错漏,敬祁见谅,欢迎来函赐教,多谢!
!
课程大纲
第一篇(0-4课)AutoLISP及Dialog程序设计基本知识
第二篇(5-8课)开启对话方框第三篇(9-13课)设定及取得对话框内组件的值
第四篇(14-19课)按钮(button)及核取框(切换钮,toggle)第五篇(20-25课)横列(row),直行(column),空白(spacer)及文字组件(text)第六篇(26-30课)滑杆(滚动条)组件(slider)第七篇(31-36课)其它按钮及影像按钮组件(image_button)第八篇(37-43课)列表选框组件(list_box)第九篇(44-48课)下拉式(弹出式)列表选框组件(popup_list)第十篇(49-52课)选台钮(radio_button)
(53第十一篇57课影像组件(image)-)第十二篇(58-60课)其它组件
注意事项
在各篇课程所介绍的语法结构中,包含在方括号[]中的数据,表示为选择性项目;可因应
情况,自行决定是否须要加上.
字型为紫色的项目,表示可自行设定其名称或内容定义文件为设定对话框组件的纯文本文件(扩展名为DCL),程序文件则是编写AuotLISP程序
的纯
文本文件(扩展名LSP)
在定义档中,批注以双除号//开始,批注符号及其右边的文字可以不输入;但在程序文件中,
批注以分号;开始,批注符号及其右边的文字可以不输入.
第一篇基本知识
基本知识对话框是现今最流行的人机互动面接口;在早期的AutoCAD版本中巳经使用,但只有在R12版
本开始,才提供给用户自行编程的对话框开发功能.
对话框的描述定义在一纯文本檔(扩展名为DCL)内,无须特别的开发环境定义文件中的对
话框描述,均以对话控制语言(DialogControlLanguage,简称DCL语言)所建立
在AutoLISP程序中,配合可编程对话框(PorgrammableDialogBox,简称PDB)函数,激活及
操控对话框
可以在一个定义档(扩展名DCL)中定义多个对话框对话框由方块本身,
及包含于其内的组件(或称为控件,构件)所组成
1
每个组件的属性定义均包含在一对大括号{}中在定义文件中,各组件及其属性均为小写;
只有在赋值给属性或设定对话框名称时才可使用大写字母,
属性以等号=赋值并以分号结束(注意AutoLISP程序中分号是作为批注)一般要,;:
在,
在组件名称前加上一个冒号:
但若组件并不设定属性,则不需要在组件名称前加冒号,但
却要以分号结束
空行会被忽
若定义档发生严重的错误,会在当前的目录下,产生ACAD.DCE文件,以指明所发生的错误.
定义档
BASE.DCL默认在SUPPORT的目录中,它包含了各组件的原型定义,及各类型巳定义的其它
基本组件;而所有自行开发的对话框定义文件,都可以使用在BASE.DCL定义文
件中的各个组件
ACAD.DCL默认在SUPPORT的目录中,它包含了AutoCAD中所有标准对话框的定义
参考定义档
可在自行开发的对话框定义文件中经由include指令取得指定DCL文件中所定义的组件其语,,;
法
如下:
@include"对话框定义档"
e.g.@include"david.dcl"
定义档名称要包含在双引号"中,可以在檔名前加上定的目录路径会先在当前的目录中搜
寻该定义文件,然后是定义文件所在的目录;若有指定档案的路径,则只会在指定的目录内
寻找
不可以参考ACAD.DCL所定义的对话框,即不可以使用@include"acad.dcl"
预视对话框
若在VisualLISP中开启一对话框定义文件,即可使用:
工具--接口工具--预览编辑
DCL器
在下拉式列示框中选取该定义文件中所设定的对话框名称即可预视对话框,,亦可直接输入该对话框的名称(要注意大小写)
批注
表示其右边(至该行末端)的文字视为注释//
/**/包括在两个批注符号中间的所有文字(可跨越多行)均视为注释
语义检核
提供4个等级的检核,该些检核会在对话框载入时完成;可以将下列语句放在定义档中的任何位
置,但不能在任何对话框的定义内.
dcl_settings:
default_dcl_settings{audit_level=3;}
2
等级0不检查:
只有在该定义档巳被检核且不会再作修改时使用
3
等级1错误AutoCAD终止的错误此等级也是默认值:
找出可能造成,等级2警告所有定义在修改后最少:
找出配置或行为模式的错误,,应执行此等级的检查
一次
等级3提示:
找出多余的属性定义
对话框的设计
美观性颜色配比组件整齐排列等,
方便性相同功能的项目要编排在一起,或使用线框包围使用频繁的项目应设置在最显眼及方便的位置
适当设置快捷键及默认值(默认值,省缺值)
除非对话框中的项目过多,否则应避免使用巢状(嵌套)式对话方框
互锁或互换项目选取(或不选取)时,会否引致其它项目功能的改变(enable或disable...等)
对话框定义文件内容模式
对话框名称:
dialog
label="对话框标题{";
:
组件名称
{属性名称=属性值;
}组件定义结束//
}//对话框结束
定义说明
1对话框名称就是由AutoLISP程序,启动对话框时所呼叫的名称;可以自行设定,要区分大小
写字母
dialog为对话框中,最外层的组件(即整个对话框),其它的组件均包含在其中
一般组件要以冒号:
开始,并为小写字母;因为不是属性,所以不须使用分号;结束2开大括号{紧随组件名称之后,以包含该组件的属性或其它组件
label为属性名称,并以等号=赋以其右边的属性值,最后以分号;结束该行叙述3包含在对话框中的其它组件
组件要以冒号:
开始,并为小写字母;因为不是属性,所以不须使用分号;结束4开大括号{紧随组件名称之后,以包含组件的属性或其它组件
包含在组件中的属性,要以等号=赋以其右边的属性值;最后以分号;结束该行叙述5以关大括号}与第4行的开大括号}对应,以结束该组件(第3行)之定义
双除号//右边的文字即为批注
6以关大括号}与第2行的开大括号}对应以结束该组件之定义(在本例中为整个对话框的定,
义即第1行的dialog组件,
注意:
上例中缩排只为方便观察及维护,不作缩排亦可包
含在对话框中的组件及组件中的属性可以不只一个
练习(Exercises)
请输入以下的对话框定义,并命名为RECT.DCL(纯文本格式),存在C盘的根目录中
RECT:
dialog
{label="Rectangle";
:
text//文字组件
{label="Rectanglewidth:
";//组件的属性
}
4
ok_only;
}
定义说明:
1设定对话框的名称为RECT,紧接一个以冒号开始的组件dialog2最左边为dialog组件的开大括号,右边是其属性label,并以等号设定其属性值
为"Rectangle",以分号结束此行叙述
3text为"字符串"组件,其作用是在对话框中显示文字,组件名称前要加冒号
组件的开大括号右边是其属性abel并以等号设定其属性值为Rectangle4最左边为text,,"l
width",最后以分号结束此行叙述
5关大括号是对应第4行的开大括号,这对大括号同属于第3行的text组件6ok_only为一"按钮组件",它的作用是在对话框中显示一个"确定(OK)"按钮;在一个对话框
中,必需提供最少一个"确定"按钮,或一个"取消"按钮(组件名称为cancel_button),以作
为结束对话框之用;本例中不设定按钮之属性,固不需以冒号放在组件名称的前面,但却需
要以分号结束
7关大括号是对应第2行的开大括号,这对大括号同属于第1行的dialog组件
注意:
虽然定义档巳经完作但仍要待学习完第2篇的课程后才能开启及显示该对话框,,
第二篇开启对话框
AutoLISP函数加载DCL定
义文件函数
(LOAD_DIALOG"对话框定义档名称")
e.g.(LOAD_DIALOG"C:
/RECT.DCL")
自变量是要加载的对话框定义文件名称字符串(所以要在前后加双引号);若不设定扩展名
则预设为.DCL函数会依资源搜寻路径找寻该定义文件;不在搜寻路径中的档案,要在文件
名前加上指定的路径函数若成功加载该定义档,会传回一正整数值的档案处理码,供其它
函数呼叫使用;无法载入时则传回负整数值
一般会将传回的档案处理码以SETQ函数存入变量中
e.g.(SETQDCL_ID(LOAD_DIALOG"C:
/RECT.DCL"))
开启并显示对话框
(NEW_DIALOG"对话框名称"档案处理码["预设动作"[对话框位置]])
e.g.(NEW_DIALOG"RECT"DCL_ID)
对话框名称为字符串,要在前后加双引号;要注意一个定义檔中,可包含多个对话框名称及
其定义
档案处理码是经由LOAD_DIALOG函数取得
默认动作为字符串表示式;函数可以不加默认动作,或以空字符串""表示
5
如果要设定对话框显示时的位置,则必须同时设定默认动作
对话框位置为2D的点串行指定对话框左上角的X,Y坐标,
如果以'(-1-1)为对话框位置则会在绘图屏幕的中心点开启对话框,
如果成功开启对话框,函数会传回T,否则传回NIL
开始接受使用者输入
(START_DIALOG)
函数不须提供任何自变量使前一个用NEW_DIALOG函数开启的对话框开始作用,直至操作
表示式或回复函数呼叫DONE_DIALOG函数为止一般DONE_DIALOG与关键词accept(一般是
按下确定按钮)或关键词cancel(一般是按下取消按钮)相关
若传回值为1,表示使用者按下确定钮结束对话框;0表示按下取消钮;-1表示全部对话框都
以TERM_DIALOG函数终止;大于1的整数,其意义由应用程序决定
释放(卸除)对话框
(UNLOAD_DIALOG档案处理码"")
e.g.(UNLOAD_DIALOGDCL_ID)
从内存释放档案处理码(经由LOAD_DIALOG函数取得)指定的对话框定义档函数传回值一定是NIL
对话框开启方式
(DEFUNC:
函数名称()(SETQ变量(LOAD_DIA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lisp 教程 下册 DCL 编程