ImageVerifierCode 换一换
格式:DOCX , 页数:60 ,大小:231.74KB ,
资源ID:7981129      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7981129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Lisp教程下册 DCL编程彩版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Lisp教程下册 DCL编程彩版.docx

1、Lisp教程下册 DCL编程彩版DCL(Dialog Control Language) 语言教程课程简介课程主要介绍AutoLISP程序的编写,配合使用DCL(Dialog Control Language)语言,作对话方 框的开发及应用.本课程只适合对AutoLISP程序设计有相当认识之人仕.全课共分为12篇,每篇 一个主题;而每篇再分为若干小节,每天顺序显示.内文若有错漏,敬祁见谅,欢迎来函赐教,多谢!课程大纲第一篇 (0 - 4 课) AutoLISP及Dialog程序设计基本知识第二篇 (5 - 8 课) 开启对话方框第三篇 (9 - 13 课) 设定及取得对话框内组件的值第四篇 (

2、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)第十一篇(53- 57 课) 影像组件(image)第十二篇(58- 60 课) 其它组件第十篇 (49 - 52 课

3、) 选台钮(radio_button)注意事项在各篇课程所介绍的语法结构中,包含在方括号 中的数据,表示为选择性项目;可因应情况,自行决定是否须要加上.字型为紫色的项目,表示可自行设定其名称或内容定义文件为设定对话框组件的纯文本文件(扩展名为DCL),程序文件则是编写AuotLISP程序的纯文本文件(扩展名LSP)在定义档中,批注以双除号/开始,批注符号及其右边的文字可以不输入;但在程序文件中,批注以分号;开始,批注符号及其右边的文字可以不输入.第一篇 基本知识基本知识 对话框是现今最流行的人机互动面接口;在早期的AutoCAD版本中巳经使用,但只有在R12版本开始,才提供给用户自行编程的对话

4、框开发功能.对话框的描述定义在一纯文本檔(扩展名为DCL)内,无须特别的开发环境 定义文件中的对话框描述,均以对话控制语言(Dialog Control Language,简称DCL语言) 所建立在AutoLISP程序中,配合可编程对话框(Porgrammable Dialog Box,简称PDB)函数,激活 及操控对话框可以在一个定义档(扩展名DCL)中定义多个对话框 对话框由方块本身,及包含于其内的组件(或称为控件,构件)所组成每个组件的属性定义均包含在一对大括号 中 在定义文件中,各组件及其属性均为小写;只有在赋值给属性,或设定对话框名称时才可使用 大写字母属性以等号=赋值,并以分号;结

5、束(注意 : 在AutoLISP程序中,分号是作为批注) 一般要在组件名称前加上一个冒号:,但若组件并不设定属性,则不需要在组件名称前加冒 号,但却要以分号结束 空行会被忽若定义档发生严重的错误,会在当前的目录下,产生ACAD.DCE文件,以指明所发生的错误.定义档BASE.DCL 默认在SUPPORT的目录中,它包含了各组件的原型定义,及各类型巳定义的其它 基本组件;而所有自行开发的对话框定义文件,都可以使用在BASE.DCL定义文件 中的各个组件ACAD.DCL 默认在SUPPORT的目录中,它包含了AutoCAD中所有标准对话框的定义参考定义档可在自行开发的对话框定义文件中,经由incl

6、ude指令,取得指定DCL文件中所定义的组件;其语法如下:include 对话框定义档e.g. include david.dcl定义档名称要包含在双引号中,可以在檔名前加上定的目录路径 会先在当前的目录中搜寻该定义文件,然后是定义文件所在的目录;若有指定档案的路径,则只 会在指定的目录内寻找不可以参考ACAD.DCL所定义的对话框,即不可以使用include acad.dcl预视对话框若在Visual LISP中开启一对话框定义文件,即可使用 :工具 - 接口工具 - 预览编辑器DCL在下拉式列示框中,选取该定义文件中所设定的对话框名称,即可预视对话框亦可直接输入该对话框的名称(要注意大小写

7、)批注/*/表示其右边(至该行末端)的文字视为注释包括在两个批注符号中间的所有文字(可跨越多行)均视为注释语义检核提供4个等级的检核,该些检核会在对话框载入时完成;可以将下列语句放在定义档中的任何位 置,但不能在任何对话框的定义内.dcl_settings : default_dcl_settings audit_level = 3;等级0 不检查 : 只有在该定义档巳被检核且不会再作修改时使用等级1 错误 : 找出可能造成AutoCAD终止的错误,此等级也是默认值等级2 警告 : 找出配置或行为模式的错误,所有定义在修改后,最少应执行此等级的检查一次等级3 提示 : 找出多余的属性定义对话框

8、的设计美观性 颜色配比,组件整齐排列等方便性 相同功能的项目要编排在一起,或使用线框包围使用频繁的项目应设置在最显眼及方便的位置适当设置快捷键及默认值(默认值,省缺值)除非对话框中的项目过多,否则应避免使用巢状(嵌套)式对话方框互锁或互换 项目选取(或不选取)时,会否引致其它项目功能的改变(enable或disable.等)对话框定义文件内容模式对话框名称:dialog label=对话框标题 ;:组件名称 属性名称=属性值; /组件定义结束 /对话框结束定义说明1 对话框名称就是由AutoLISP程序,启动对话框时所呼叫的名称;可以自行设定,要区分大小写字母dialog为对话框中,最外层的组

9、件(即整个对话框),其它的组件均包含在其中一般组件要以冒号:开始,并为小写字母;因为不是属性,所以不须使用分号;结束2 开大括号紧随组件名称之后,以包含该组件的属性或其它组件label为属性名称,并以等号=赋以其右边的属性值,最后以分号;结束该行叙述3 包含在对话框中的其它组件组件要以冒号:开始,并为小写字母;因为不是属性,所以不须使用分号;结束4 开大括号紧随组件名称之后,以包含组件的属性或其它组件包含在组件中的属性,要以等号=赋以其右边的属性值;最后以分号;结束该行叙述5 以关大括号与第4行的开大括号对应,以结束该组件(第3行)之定义双除号/右边的文字即为批注6 以关大括号与第2行的开大括

10、号对应,以结束该组件之定义(在本例中为整个对话框的定义,即第1行的dialog组件注意: 上例中缩排只为方便观察及维护,不作缩排亦可 包含在对话框中的组件及组件中的属性可以不只一个练习 (Exercises)请输入以下的对话框定义,并命名为RECT.DCL(纯文本格式),存在C盘的根目录中RECT:dialog label=Rectangle ;:text /文字组件 label=Rectangle width : ; /组件的属性ok_only;定义说明:1 设定对话框的名称为RECT,紧接一个以冒号开始的组件dialog2 最左边为dialog组件的开大括号,右边是其属性label,并以等

11、号设定其属性值为Rectangle,以分号结束此行叙述3 text为字符串组件,其作用是在对话框中显示文字,组件名称前要加冒号4 最左边为text组件的开大括号,右边是其属性label,并以等号设定其属性值为Rectanglewidth,最后以分号结束此行叙述5 关大括号是对应第4行的开大括号,这对大括号同属于第3行的text组件6 ok_only为一按钮组件,它的作用是在对话框中显示一个确定(OK)按钮;在一个对话框中,必需提供最少一个确定按钮,或一个取消按钮(组件名称为cancel_button),以作为结束对话框之用;本例中不设定按钮之属性,固不需以冒号放在组件名称的前面,但却需要以分号

12、结束7 关大括号是对应第2行的开大括号,这对大括号同属于第1行的dialog组件注意:虽然定义档巳经完作,但仍要待学习完第2篇的课程后,才能开启及显示该对话框第二篇 开启对话框 AutoLISP函数 加载DCL定义文件函数(LOAD_DIALOG 对话框定义档名称)e.g. (LOAD_DIALOG C:/RECT.DCL)自变量是要加载的对话框定义文件名称字符串(所以要在前后加双引号);若不设定扩展名则预设 为.DCL 函数会依资源搜寻路径找寻该定义文件;不在搜寻路径中的档案,要在文件名前加上指定 的路径 函数若成功加载该定义档,会传回一正整数值的档案处理码,供其它函数呼叫使用;无法载 入时

13、则传回负整数值一般会将传回的档案处理码以SETQ函数存入变量中e.g. (SETQ DCL_ID (LOAD_DIALOG C:/RECT.DCL)开启并显示对话框(NEW_DIALOG 对话框名称 档案处理码 预设动作 对话框位置)e.g. (NEW_DIALOG RECT DCL_ID)对话框名称为字符串,要在前后加双引号;要注意一个定义檔中,可包含多个对话框名称及其 定义档案处理码是经由LOAD_DIALOG函数取得默认动作为字符串表示式;函数可以不加默认动作,或以空字符串表示如果要设定对话框显示时的位置,则必须同时设定默认动作 对话框位置为2D的点串行,指定对话框左上角的X,Y坐标如果

14、以 (-1 -1)为对话框位置,则会在绘图屏幕的中心点开启对话框如果成功开启对话框,函数会传回T,否则传回NIL开始接受使用者输入(START_DIALOG) 函数不须提供任何自变量 使前一个用NEW_DIALOG函数开启的对话框开始作用,直至操作表示式或回复函数呼叫 DONE_DIALOG函数为止 一般DONE_DIALOG与关键词accept(一般是按下确定按钮)或关键词cancel(一般是按下取 消按钮)相关若传回值为1,表示使用者按下确定钮结束对话框;0表示按下取消钮;-1表示全部对话框都 以TERM_DIALOG函数终止;大于1的整数,其意义由应用程序决定释放(卸除)对话框(UNLO

15、AD_DIALOG 档案处理码)e.g. (UNLOAD_DIALOG DCL_ID)从内存释放档案处理码(经由LOAD_DIALOG函数取得)指定的对话框定义档函数传回值一定是NIL对话框开启方式(DEFUN C:函数名称( ) (SETQ 变量 (LOAD_DIALOG 对话框定义档) (NEW_DIALOG 对话框名称 变量) (START_DIALOG) (UNLOAD_DIALOG 变数)程序说明:1 以DEFUN函数定义程序的名称,使用LOAD_DIALOG函数加载指定的对话框定义档使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量中,以方便其它函数使用2 使用NE

16、W_DIALOG,开启及显示定义文件中(档案处理码),指定的对话框3 使用START_DIALOG函数,使对话框开始作用并接受使用者输入使用UNLOAD_DIALOG函数以结束对话框4 关括号是对应第1行DEFUN函数左边的开括号,结束整个程序练习 (Exercises)编写一AutoLISP程序,以开启上一课所定义的对话框;并将该程序命名为RECT.LSP,存在C盘的根目录中,程序代码如下 :(DEFUN C:RECT() (SETQ DCL_ID (LOAD_DIALOG C:/RECT.DCL) (NEW_DIALOG RECT DCL_ID)(START_DIALOG) (UNLOAD

17、_DIALOG DCL_ID)程序说明:1 以DEFUN函数定义程序的名称为RECT,使用LOAD_DIALOG函数将对话框定义文件RECT.DCL载入;使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量DCL_ID中,以方便其它函数使用2 使用NEW_DIALOG,开启及显示定义文件中(档案处理码)名称为RECT的对话框3 使用START_DIALOG函数,使对话框开始作用并接受使用者输入(在本例中只有确定钮可按);使用UNLOAD_DIALOG函数以结束对话框4 关括号是对应第1行DEFUN函数左边的开括号,结束整个程序编辑框组件(edit_box)可供用户直接输入字符串的

18、矩形方框;注意在编辑框中所显示及输入的数据均为字符串型态,而 数字则要在取得编辑框的字符串内容后(在下一篇中介绍),使用AutoLISP函数将其转为数值型态 的数据:edit_box /组件名称 属性=属性值 ;属性label 显示在编辑框前面(左边)的提示文字key 其属性值即为使用该组件的关键词,使在AutoLISP程序中操控此组件;在同一个对话框定义中,不能有相同名称的关键词定义edit_limit 指定在编辑框中,可输入字符串的最大字符长度edit_width 指定编辑框显示时的阔度(通常与fixed_width属性一拼使用)value 指定编辑框显示时,当中的默认值(注意显示数值数据

19、时,要先用AutoLISP函数将数据(或变量)转为字符串型态)fixed_width 通常与width属性一拼使用,以固定编辑框显示时的阔度(其属性值可设定为true或false)is_enable 可设定编辑框是否可以使用(其属性值可设定为true或false,默认值为true)alignment 如果组件成水平方向排列,属性值可设定为left,right或centered如果组件成垂直方向排列,属性值可设定为top,bottom或centered(水平方向的默认值为left,垂直方向则为centered)其它属性action allow_accept fixed_height height

20、is_tab_stop mnemonic width练习(Exercises)将上一课的RECT.DCL对话框定义档复制至RECT1.DCL,开启新的定义檔并作如下的修改,使 其可以输入四边形的阔度及高度;将AutoLISP程序文件RECT.LSP复制至RECT1.LSP,开启新的程序 文件,并将要加载的对话框定义档改为RECT1(程序第1行);完成后即可加载及执行新的程序文件RECT:dialog label=Rectangle ;:edit_box /编辑框组件 label=Rectangle width : ;key=RECT_W ; edit_limit=16; edit_width=

21、10; fixed_width=true;:edit_box /编辑框组件 label=Rectangle heigth : ;key=RECT_H ; edit_limit=16; edit_width=10; fixed_width=true;ok_only;定义说明:1 设定对话框的名称为RECT,紧接一个以冒号开始的组件dialog2 最左边为dialog组件的开大括号,右边是其属性label,并以等号设定其属性值为Rectangle,以分号结束此行叙述3 edit_box为编辑框组件,组件名称前要加冒号4 最左边为edit_box组件的开大括号,右边是其属性label,并以等号设定其

22、属性值为Rectangle width : ,最后以分号结束此行叙述5 设定属性key的属性值为RECT_W(即设定此编辑框的名称)6 设定属性edit_limit的属性值为16(即最多可以在编辑框中输入16个数字)7 设定属性edit_width的属性值为10(编辑框只会显示10个字的长度)8 设定属性fixed_width的属性值为true,表示表将编辑框以固定的阔度显示9 关大括号是对应第4行的开大括号,这一对大括号同属于第3行的edit_box组件10至16 与3至9行相似,设定另一个编辑框以输入高度的数据;只有属性label及key的属性值不同17 以ok_only组件,在对话框中显

23、示一个确定(OK)按钮,作为结束对话框之用18 关大括号是对应第2行的开大括号,这一对大括号同属于第1行的dialog组件注意1 在第一个编辑框(输入四边形的阔度)的label属性值中,在字符串最后的冒号后面,加多了一个空格,目的是方更与下一个编辑框对齐第三篇 设定及取得对话框组件内的值AutoLISP函数设定组件的值(SET_TILE 组件关键词 设定值)e.g. (SET_TILE RECT_W 50.0)组件的初始值可在定义文件中以属性value设定,但在程序文件中则以此函数设定 组件关键词即是在对话框定义文件中,以组件属性key所定义的属性值,以赋予该组件一个操 作名称 组件关键词是有

24、区分大小写的此函数要在START_DIALOG函数之后才能使用取得组件的值(GET_TILE 组件关键词)e.g. (GET_TILE RECT_W)作用是在AutoLISP程序文件中取得组件(以关键词指定)的设定值 组件关键词的说明与SET_TILE函数相同 此函数要在DONE_DIALOG函数之前使用(即要在对话框结束前使用)设定组件的状态(MODE_TILE 组件关键词 状态模式)e.g. (MODE_TILE RECT_W 0)作用是在AutoLISP程序文件中设定组件(以关键词指定)的使用状态,其状态模式可以设定为下列任一整数值 :0 使指定的组件成为使用状态1 使指定的组件成为禁用

25、状态(组件以灰色显示)2 使指定的组件成为焦点3 选取指定编辑框组件的内容4 图像高亮度显示的开关组件关键词的说明与SET_TILE函数相同练习 (Exercises)以修改对话框定义档的方式,设定输入阔度的编辑框其初始值为50,输入高度的编辑框其初始值为25定义档 将RECT1.DCL复制至RECT2.DCL,在关键词为RECT_W的组件中,加入value属性并 设定其初始值为50;在关键词为RECT_H的组件中,加入value属性并设定其初始 值为25程序文件 将RECT1.LSP复制至RECT2.LSP,只须修改其加载的定义档名称为RECT2.DCL即可;完成后存盘,进入AutoCAD并

26、载入RECT2.LSP程序文件,执行RECT2程序RECT:dialog label=Rectangle ;:edit_box Rectangle width : ; key=RECT_W ; edit_limit=16; edit_width=10; fixed_width=true;value=50.0 /注意设定值为字符串型态,要在前后加双引号:edit_box Rectangle height : ;key=RECT_H ;edit_limit=16; edit_width=10; fixed_width=true;value=25.0 /注意设定值为字符串型态,要在前后加双引号以修改

27、AutoLISP程序文件的方式,使输入阔度的编辑框其初始值为50,输入高度的编辑框其初始值为25定义档 将RECT1.DCL(不是RECT2.DCL)复制至RECT3.DCL,不作任何修改程序文件 将RECT1.LSP复制至RECT3.LSP,程序代码如下:(DEFUN C:RECT() (SETQ DCL_ID (LOAD_DIALOG C:/RECT3.DCL) (NEW_DIALOG RECT DCL_ID)(SET_TILE RECT_W 50.0) (SET_TILE RECT_H 25.0) (START_DIALOG)(UNLOAD_DIALOG DCL_ID)程序说明:1 以D

28、EFUN函数定义程序的名称RECT,使用LOAD_DIALOG函数将对话框定义文件RECT3.DCL载入;使用SETQ函数,将LOAD_DIALOG传回的档案处理码存入变量DCL_ID中,以方便其它函数使用2 使用NEW_DIALOG,开启及显示定义文件中(档案处理码)名称为RECT的对话框3,4 使用SET_TILE函数,设定输入阔度的编辑框组件RECT_W(组件关键词,在定义文件中key设定的属性值)为50,设定输入高度的编辑框组件RECT_H为255 使用START_DIALOG函数,使对话框开始作用并接受使用者输入(在本例中只有确定钮可按);使用UNLOAD_DIALOG函数以结束对话

29、框6 关括号是对应第1行DEFUN函数左边的开括号,结束整个程序AutoLISP函数组件指定动作(ACTION_TILE 组件关键词 指定动作)e.g. (ACTION_TILE RECT_W (SETQ TEMP 1)当焦点在指定的组件(关键词)上并按下接受键时,即会执行函数所指定的动作 指定动作会取代定义文件中,该组件的action属性之默认动作 组件关键词accept在默认情况下是与确定按钮组件关连(即是确定按钮的默认关键 字),cancel则与取消按钮组件关连(即是取消按钮的默认关键词)终止对话框(DONE_DIALOG 指定传回值)e.g. (DONE_DIALOG)此函数的传回值为一个2D点串行坐标,为结束对话框时,对话框的所在位置;可作为下次启动同一个对话框的位置自变量,使对话框在之前结束时的位置再次显现练习 (Exercises)将定义档RECT3.DCL复制至RECT4.DCL,但不作任何修改.将程序文件RECT3.LSP复制至 RECT4.LSP,并修改为 : 使用ACTION_TILE函数,指定在按下确定钮时,执行一辅助程序;在 该辅助程序中,使用GET_TILE函数最得对话框中四边形的阔度及高度,并在用户选取的 位置上绘画出四边形.(DEFUN C:RECT() (SETQ DCL_ID (LOAD_DIA

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1