谢谢了……方法知道了,但是细节还在处理中……
转载过来 希望对你有用
对话框文件是扩展名为.dcl的文本文件,符合dcl对话框控制语言的语法。但对话框文件本身并不能工作,还必须要用autolisp或ads应用程序调用。
对话框由主对话框和其内部的各种片型框组成,其结构为数状。图1.1为一对话框结构示例,树叶是各种片型框,树根为dialog;图1.2为其在autocad中的显示。
在可编程对话框pdb中已预定义了以下基本片型框:
:dialog 对话
:button 按钮
:edit_box 编辑框
:list_box 列表框
:image_button 图像按钮
:popup_list 弹出表
:radio_button 单选按钮
:slider 滚动条
:toggle 开关
每个片型框包含一系列的属性,这些属性的值确定了片型框的位置、大小、长度、高度和文件标识等,例如lable属性确定了在片型框上显示的文字。用户可以根据dcl语法将这些基本的片型框组装起来,形成更为复杂,功能更为详尽的对话框,也可以定义与基本片型框无关的新片型框,并将其与基本片型框组合成新的片型框组。为了方便对话框的布局,可将一行或一列片型框当作一个新的片型框,并在其周围画上边框。对话框的基本布局有以下几种:
:column 列。定义,可以与行、列嵌套。
:row 行。片型框组按行平行分布,显示顺序同column,也可与行列嵌套。
:radio_column 单选列。包含一列单选片型框,同时只能选择一个片型框。
:radio_row 单选行。包含一行单选片型框,同时只能选择一个片型框。
:boxed_column 有界列。列的周围画上边框。
:boxed_row 有界行。行的周围画上边框。
:boxed_radio_column有界单选列。在单选列的周围画上边框。
:boxed_radio_row 有界单选行。在单选行的周围画上边框。
用户可以定义自己的属性,不过在一般情况下仅使用pdb预定义的属性就可以满足程序的要求了。当片型框中的属性未被指定时,pdb将赋于其缺省值。没片型框的预定义属性也各不相同,但布局属性和功能属性则是所有有效片型框的公共属性,这些公共属性是:
aligment 片型框的定位方式;
width height 片型框的宽度和高度;
fixed_width fixed_height 其值为true时,片型框大小固定不变;
children_aligment 子片型框的定位属性;
children_fixed_width 子片型框的宽度固定属性;
children_fixed_height 子片型框的固定高度属性;
label 显示在片型框内或左上方的文字;
key 指定程序引用片型框的文本字符串,在指定的对话框中,每个key的值应该是唯一的;
value 片型框的初始值,为一字符串;
mnemonic 片型框内快捷键,即带下划线的字母;
is_enabled 值为false时,片型框不可选;
is_tab_stop 值为false时,片型框不接受tab聚焦;
action 指定片型框时,对应的autolisp程序进行的操作。
另外,片型框还包括图像框image、文本框text和衬框spacer,这三种片型框只是起修饰作用和加强视觉效果,不能引起任何操作。
dcl文件采用c语言的风格,每个分号表示一名,每个片型框的定义用一对大括号括起来;注释在单行时用//,多行时可采用/*注释语句*/的形式。
下面以一个简单的例子说明dcl的编程,图2是调用example.dcl的显示。
//example.dcl对话框示例文件
test:dialog{
label="dialog example";
:text{//文本片型框
label="this is aexample.";
}
:button{//按钮片型框
key="accept";
//关键字key为accept
label="ok";//标号为ok
mnemonic="o";
//按alt_o键可以选择ok按钮
fixed_width=true;
//按钮的宽度固定不变
aligment=centered;
//按钮以中心对齐
is_default=true;
}
}
pdb在base.dcl中还提供了一组标准的按钮群,在我们自己的dcl文件中可以直接使用:
:ok_only单个ok按钮;
:lk_cancel ok按钮和cancel两个按钮;
:ok_cncel_help ok、cancel和help…三个按钮;
:ok_cncel_help_info ok、cancel、help…和info…四个按钮。
文本文件的对话框文件自身本身不能工作,需要用autolisp或ads应用程序调用对话框文件才行,ads的效率比较高,但掌握起来要困难一些,autolisp程序较为烦琐,但比较容易掌握。autolisp提供了一组管理对话框的函数包,处理用户与对话框之间的交互。下面是最重要的几个函数:
(load_dialog dclfile)用与装入一个dcl文件,返回一个整数标识。
(unload_dialog dcl_id)卸载标识为dcl_id的dcl文件。
(new_dialog dialog_name dcl_id)初始化对话框,并在屏幕显示对话框,其中dialog_name是在对话框文件中定义的对话框名称。
(start_dialog)启动对话框,并接受用户的输入信息。
(done_dialog)终止对话框信息的输入,并且停止显示对话框。
(action_tile key action_express)处理用户的选择,将片型框与应用程序中的对应操作联系起来,key是片型框的关键字。
下面的autolisp程序就是对上面的example.dcl对话框文件的管理:
;;;example.dcl管理example.dcl对话框文件的autolisp程序
(defun c:showdcl(/dcl_id)
(setq dcl_id (load_dialog"example.dcl"))
(if(not(new_dialog"test"dcl_id))
(exit))
(action_tile
"accept"
"(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
)
在autocad中显示图2对话框的过程如下:
command:(load"example.lsp")
c:showdcl
command:showdel
本文只是对对话框dcl作了简单的介绍,要想充分发挥autocad的潜能,掌握dcl对话框的编程,还需要参阅有关资料,详加研究。
对话框文件是扩展名为.dcl的文本文件,符合dcl对话框控制语言的语法。但对话框文件本身并不能工作,还必须要用autolisp或ads应用程序调用。
对话框由主对话框和其内部的各种片型框组成,其结构为数状。图1.1为一对话框结构示例,树叶是各种片型框,树根为dialog;图1.2为其在autocad中的显示。
在可编程对话框pdb中已预定义了以下基本片型框:
:dialog 对话
:button 按钮
:edit_box 编辑框
:list_box 列表框
:image_button 图像按钮
:popup_list 弹出表
:radio_button 单选按钮
:slider 滚动条
:toggle 开关
每个片型框包含一系列的属性,这些属性的值确定了片型框的位置、大小、长度、高度和文件标识等,例如lable属性确定了在片型框上显示的文字。用户可以根据dcl语法将这些基本的片型框组装起来,形成更为复杂,功能更为详尽的对话框,也可以定义与基本片型框无关的新片型框,并将其与基本片型框组合成新的片型框组。为了方便对话框的布局,可将一行或一列片型框当作一个新的片型框,并在其周围画上边框。对话框的基本布局有以下几种:
:column 列。定义,可以与行、列嵌套。
:row 行。片型框组按行平行分布,显示顺序同column,也可与行列嵌套。
:radio_column 单选列。包含一列单选片型框,同时只能选择一个片型框。
:radio_row 单选行。包含一行单选片型框,同时只能选择一个片型框。
:boxed_column 有界列。列的周围画上边框。
:boxed_row 有界行。行的周围画上边框。
:boxed_radio_column有界单选列。在单选列的周围画上边框。
:boxed_radio_row 有界单选行。在单选行的周围画上边框。
用户可以定义自己的属性,不过在一般情况下仅使用pdb预定义的属性就可以满足程序的要求了。当片型框中的属性未被指定时,pdb将赋于其缺省值。没片型框的预定义属性也各不相同,但布局属性和功能属性则是所有有效片型框的公共属性,这些公共属性是:
aligment 片型框的定位方式;
width height 片型框的宽度和高度;
fixed_width fixed_height 其值为true时,片型框大小固定不变;
children_aligment 子片型框的定位属性;
children_fixed_width 子片型框的宽度固定属性;
children_fixed_height 子片型框的固定高度属性;
label 显示在片型框内或左上方的文字;
key 指定程序引用片型框的文本字符串,在指定的对话框中,每个key的值应该是唯一的;
value 片型框的初始值,为一字符串;
mnemonic 片型框内快捷键,即带下划线的字母;
is_enabled 值为false时,片型框不可选;
is_tab_stop 值为false时,片型框不接受tab聚焦;
action 指定片型框时,对应的autolisp程序进行的操作。
另外,片型框还包括图像框image、文本框text和衬框spacer,这三种片型框只是起修饰作用和加强视觉效果,不能引起任何操作。
dcl文件采用c语言的风格,每个分号表示一名,每个片型框的定义用一对大括号括起来;注释在单行时用//,多行时可采用/*注释语句*/的形式。
下面以一个简单的例子说明dcl的编程,图2是调用example.dcl的显示。
//example.dcl对话框示例文件
test:dialog{
label="dialog example";
:text{//文本片型框
label="this is aexample.";
}
:button{//按钮片型框
key="accept";
//关键字key为accept
label="ok";//标号为ok
mnemonic="o";
//按alt_o键可以选择ok按钮
fixed_width=true;
//按钮的宽度固定不变
aligment=centered;
//按钮以中心对齐
is_default=true;
}
}
pdb在base.dcl中还提供了一组标准的按钮群,在我们自己的dcl文件中可以直接使用:
:ok_only单个ok按钮;
:lk_cancel ok按钮和cancel两个按钮;
:ok_cncel_help ok、cancel和help…三个按钮;
:ok_cncel_help_info ok、cancel、help…和info…四个按钮。
文本文件的对话框文件自身本身不能工作,需要用autolisp或ads应用程序调用对话框文件才行,ads的效率比较高,但掌握起来要困难一些,autolisp程序较为烦琐,但比较容易掌握。autolisp提供了一组管理对话框的函数包,处理用户与对话框之间的交互。下面是最重要的几个函数:
(load_dialog dclfile)用与装入一个dcl文件,返回一个整数标识。
(unload_dialog dcl_id)卸载标识为dcl_id的dcl文件。
(new_dialog dialog_name dcl_id)初始化对话框,并在屏幕显示对话框,其中dialog_name是在对话框文件中定义的对话框名称。
(start_dialog)启动对话框,并接受用户的输入信息。
(done_dialog)终止对话框信息的输入,并且停止显示对话框。
(action_tile key action_express)处理用户的选择,将片型框与应用程序中的对应操作联系起来,key是片型框的关键字。
下面的autolisp程序就是对上面的example.dcl对话框文件的管理:
;;;example.dcl管理example.dcl对话框文件的autolisp程序
(defun c:showdcl(/dcl_id)
(setq dcl_id (load_dialog"example.dcl"))
(if(not(new_dialog"test"dcl_id))
(exit))
(action_tile
"accept"
"(done_dialog)")
(start_dialog)
(unload_dialog dcl_id)
)
在autocad中显示图2对话框的过程如下:
command:(load"example.lsp")
c:showdcl
command:showdel
本文只是对对话框dcl作了简单的介绍,要想充分发挥autocad的潜能,掌握dcl对话框的编程,还需要参阅有关资料,详加研究。
温馨提示:答案为网友推荐,仅供参考