dcl驱动程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/9/8
AutoCAD二次开发——DCL对话框基础
7
1.按钮button
用途:以按钮上的文字提示用户,一触动此按 钮要执行某一动作。
实例1:
2019/9/8
AutoCAD二次开发——DCL对话框基础
8
2.编辑框 edit_box:
用途:参数化设计的数值字符串输入。编辑框 前可带提示文字(label属性)。
AutoLISP控制DCL相关函数一览表
AutoLISP函数名
功能简述
加载与释放DCL
load_dialog
加载DCL文件,并返回一个编号整数值
unload_dialog
释放DCL
激活与终止dialog对话框
new_dialog
激活DCL对话框画面
start_dialog
将控制权交给DCL
done_dialog
AutoCAD二次开发 DCL对话框基础
标准默认的DCL单一对象。设计好DCL对 话画面后,真正让对话框各DCL对象动起来的 “幕后高手”就是AutoLISP ,否则,光有漂亮 的DCL是没有用的。
两个最重要的DCL文件
在CAD的SUPPORT文件夹下,有两个重量级的DCL文件,非常重要, 不要轻易加以修改!以免造成CAD无法正常执行的惨状!
AutoCAD二次开发——DCL对话框基础
3
※ 第二种方式:以“/*”及“*/”之间夹 带的方式,中间的文字内容不受行数限 制。
如:/* 这是DCL批注测试范例 以夹带的方式处理这三行说明 如此一来,才不用在每行前面都 要加双斜线
*/
2019/9/8
AutoCAD二次开发——DCL对话框基础
4
DCL程序设计的基本结构(实例)
实例4:
2019/9/8
AutoCAD二次开发——DCL对话框基础
11
5.图像按钮 image_button:
用 途 : 与 button 按 钮 功 能 类 似 , 差 异 在 于 image_button 的框内提示图形可以是幻灯片SLD、 填满单一色块、或绘制示意线。
实例5:
2019/9/8
2019/9/8
AutoCAD二次开发——DCL对话框
23
基础
DCL驱动程序(操作实例)
1. 编辑框 eidt_box DCL对话框程序
2019/9/8
AutoCAD二次开发——DCL对话框基础
24
编辑框驱动程序
2019/9/8
AutoCAD二次开发——DCL对话框基础
25
2019/9/8
AutoCAD二次开发——DCL对话框
21
基础
6.接受键的回调
对话框通常包含二组变量:随控件回调而变化的局部变量 以及对应于对话框最终控件取值的全局变量。当用户选择 接受键以后,应用程序需调用一个函数将局部变量永久性 地赋给相应地全局变量。
接受键的另一个重要调用函数时(done_dialog 1)。注意 此时的状态值一定为1。
2019/9/8
AutoCAD二次开发——DCL对话框
19
基础
4.激活对话框(start_dialog)
此函数将控制权交给对话框,并可开始交 互操作。此时对话框中的控件均成为可选 择控件(用mode_tile“禁止”的控件除外), 并始终处于活动状态;直至执行done_dialog 关闭对话框为止,对话框选中的控件会自 动执行由action_tile设定的动作。
2019/9/8
AutoCAD二次开发——DCL对话框基础
5
说明: ※ NAME相当于AutoLISP中的defun后定 义的函数或程序一样。
※ “:dialog”相当于AutoLISP中的defun函数 。
※ “:edit_box”与“:button”都是DCL对象。
※ “label”、“width”与“edit_width”都是各 对象的属性,属性值设定后,都需要加一个“; ”分号。
对于一个完整的程序来说,只有漂亮的对 话框界面是不够的。
AutoCAD的对话框驱动程序可由AutoLISP 完成,为了便于学习和理解驱动程序的主 要构造及解决方法,我们以AutoLISP程序 来介绍AutoCAD中的对话框处理函数。
2019/9/8
AutoCAD二次开发——DCL对话框
14
基础
实例2:
2019/9/8
AutoCAD二次开发——DCL对话框基础
9
3.单选框 radio_button:
用途:需求功能或数据是多选一时。 实例3:
2019/9/8
AutoCAD二次开发——DCL对话框基础
10
4.切换开关(复选框) toggle:
用途:控制此定义的功能或选项是“开”或 “关”。当开关内出现打勾记号时,响应值为“1”, 反之,则为“0”。
终止显示当前DCL对话框
选择与触发DCL对象、连接、调用子程序
action_tile
触发DCL对象,并执行其后指定的动作及表达式
2019/9/8
AutoCAD二次开发——DCL对话框
15
基础
驱动程序的结构框架
2019/9/8
AutoCAD二次开发——DCL对话框
16
基础
1.加载对话框DCL文件(load_dialog Dclfile)
接受键的回调函数可按以下二种方式进行: (action_tile "accept" " (set_variables) (done_dialog 1)") (action_tile "cancel" " (done_dialog 0)")或 (action_tile "accept" "(done_dialog 1)") (action_tile "accept" "(done_dialog 0)") (if(1= result) (set_varibles)) 式中ste_varibles是用户自定义地将局部变量赋给永久性全
2019/9/8
AutoCAD二次开发——DCL对话框
20
基础
5.处理用户操作
激活对话框后,根据用户的交互动作,应 同时执行相应的动作函数,此过程被称为 回调(callback)。通常用户须使用get_tile, get_attr函数返回控件的value及相应的属性 值,再通过set_tile,mode_tile进行相应的处 理。
name:dialog{ }//end dialog
label=“对话框DEMO”; :edit_box{
label=“编辑框”; edit_width=12; key=“edit_1”;} :button{ label=“按钮”; width=8; key=“button_1”;} ok_cancel;
1.BASE.DCL 内含DCL的原始定义与整合性DCL对象定义。 2.ACAD.DCL 内含CAD所用的各个DCL画面,是一个不错的观摩学
习文件。
2019/9/8
AutoCAD二次开发——DCL对话框基础
1
DCL基本语法结构
1.以文件形态存在的DCL程序(ASCLL文 件),其扩展名最好是.DCL。
AutoCAD二次开发——DCL对话框基础
6
DCL控件的类型及其相应的控 件
操作控件
1 button 2 edit_box 3 image_button 4 list_box 5 popup_list 6 radio_button 7 slider 8 toggle
按钮 编辑框 图像按钮 列表框 下拉列表 单选按钮 滑动条 切换开关
2.编写的环境不挑剔,只要是一般的文本 编辑软件均适用(如记事本Notepad、 Wordpad、Visual Lisp等)。
3.一个DCL文件内,可以设计多组的 dialog对话界面如同一个LISP程序内可以 设计多个可执行命令一样。
2019/9/8
AutoCAD二次开发——DCL对话框基础
局变量地函数。
2019/9/8
AutoCAD二次开发——DCL对话框
22
基础
7.卸载对话框文件(unload_dialog Dcl_id)
对话框完成操作并且不再使用时,应从内 存中释放对话框文件。这是对话框操作的 最后一个步骤,注意:若DCL文件中有多 个对话框(dialog)定义,其中有的对话框 仍再使用时,不应卸载DCL文件。
AutoCAD二次开发——DCL对话框基础
12
6.下拉选单 popup_list:
用途:功能类似list_box,正常状况属于收缩单 一列状态。右侧有一向下箭头,选取后,会拉下一 列选单供用户选取。
实例6:
2019/9/8
AutoCAD二次开发——DCL对话框基础
13
DCL驱动程序(AutoLISP) ——AutoLISP控制DCL的关键技术
如:(setq dcl_id (load_dialog “*.dcl”))
若加载成功,返回大于0的值,否则返回小于0的 值。
2019/9/8
AutoCAD二次开发——DCL对话框
17
基础
2.显示特定的对话框(new_dialog name Dcl_id)
初始化一个新的对话框并显示它。该函数 中name变量是指DCL文件所包含的某一对 话框的一个字符串;Dcl_id变量用来识别一 个对话框(load_dialog的返回值)。当对话 框显示成功时,该函数返回true否则返回 false。在调用这一函数时,检测该返回值状 态很重要,因为当new_dialog调用失败而又 试图调用start_dialog激活对话框时,将产生 不可预料的后果。
※ 对话框定义结束前,请注意一定至少有 一个“OK”或“Cancel”键。
※ 属性key值,相当于各DCL对象的名称 ,如“edit_1”与“button_1”,它们非常重要,是 LISP与DCL沟通的惟一桥梁,若DCL对象未定义 key值,则根本无法用LISP控制信息的设定、取得 与修改、变化。
2019/9/8
使用对话框的第一件事就是通过load_dialog函数 加载DCL文件(可省略扩展名),该函数可包含 多个对话框。若加载成功,则返回一个大于零的 正整数值(假设存入变量Dcl_id中);否则返回 一个负整数,这个Dcl_id在随后调用new_dialog和 unload_dialog函数时可用作被装入的DCL句柄使 用。同时可以检测到该值不大于零时,可以及时 地显示出错信息并返回系统。
2019/9/8
AutoCAD二次开发——DCL对话框
18
基础
3.对话框控件的初始化
new_dialog调用成功后,系统自动根据DCL文件中 的内容对控件初始化,此时用户也可根据自己的 需要利用程序对控件作相应的初始化设置,如函 数set_tile和mode_tile可改变控件的初始值及控件 的初始状态;函数start_list,add_list,endlist可以变 更列表框的内容;函数start_image, vector_image,fill_image,slide_image和end_image均 用于初始化图像控件的显示内容。同时用户可以 通过函数action_tile对控件设置动作和回调函数, 也可通过client_data_tile将应用程序中的特定数据 与对话框中对话框中某些组成部分相联系。
2源自文库
4.适时的增加批注,将程序更具可读性、 学习性及完整性,DCL程序中的批注有 两种方式(请注意,不能用AutoLISP的 “;”分号)。
※ 第一种方式:加上“//”两个斜线, 双斜线后的一行文字为批注。
如: //本DCL设计时间2007/6
//设计者:四川理工学院
//欢迎学习
2019/9/8