对话框设计清华CAD二次开发LISP.ppt
《对话框设计清华CAD二次开发LISP.ppt》由会员分享,可在线阅读,更多相关《对话框设计清华CAD二次开发LISP.ppt(148页珍藏版)》请在三一办公上搜索。
1、,第 12 章 对话框设计,12.1概述1.对话框的特点 对话框形象、直观,可以随意输入、随时修改,鼠标、键盘并用,是一种深受用户欢迎的界面。对话框用DCL语言(Dialog Control Language)定义,得到DCL类型的文件,用AutoLISP或C程序驱动。AutoCAD提供了两个重要的DCL文件:ACAD.DCL存放AutoCAD系统定义的对话框,BASE.DCL为用户提供了一些常用的对话框标准控件。2.对话框的组成 对话框由若干控件组成,见图12-1。控件可以是按钮、切换开关、编辑框、列表或图像等。,图12-1对话框的组成,3.实例【例12-1】用DCL定义一个简单的对话框。进
2、入VLISP环境,将下列源代码输入到文本编辑窗口,选取下拉菜单ToolsInterface ToolPreview DCL in Editor,即可看到图12-2所示该对话框的外观。sample:dialog label=简单的对话框实例;:text label=祝您成功!;:button key=accept;label=确认;is_default=true;fixed_width=true;alignment=centered;图12-2 简单的对话框实例,12.2 对话框控件 控件是构造对话框的元件。AutoCAD为用户预定义了23种控件和8个常用的固定控件。每一种控件属于一种类型。每一
3、个控件有多个属性。每个属性都有一个名字和值。多数的属性都有它的默认值。一个控件具有哪些属性是由它的类型所决定的。控件的这些属性确定了它的外观形式和动作行为。,例如上例中的确认按钮,它的类型是button。当它的属性label=确认、key=accept、is_default=true、fixed_width=true、alignment=centered,其余属性为默认值时,就确定了图12-2所示的外观。按照控件的特点可以将控件分为以下几类。,可以定义动作行为的控件 这类控件具有动作行为(action)的属性,动作行为是用AutoLISP的函数或表达式表示定义的,用鼠标单击这样的控件时,就会执
4、行相应的函数或表达式。,1.按钮(Button)按钮适用于立即产生可视的操作,如退出对话框、弹出子对话框及其它特定操作。每个对话框至少包含一个OK按钮(或功能相当的控件)。按钮的类型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enabled、is_tab_stop、key、label、mnemonic、width 共13个属性。它的标签(label)显示在按钮上。若要创建与OK等价的控件,其关键字必须为accept,并将其属性is_default设定为true(真)。参照例1
5、21中确认按钮的定义。,2.编辑框(Edit Box)编辑框用于输入字符串。它的类型是edit_box。有action、alignment、allow_accept、edit_limit、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width、password_char 16个属性。其标签显示在该框的左边,它的默认宽度为12个字符,当输入的字符多于12时,文本自动向左滚动,框内的字符串即为编辑框的值(value)。图12-3所示的编辑框定义如下::edit_
6、box key=test_text;label=长度:;value=100.0;width=12;图12-3 编辑框,3.图像按钮(Image Button)图像按钮将图像显示在按钮上。图像由AutoLISP程序确定。它的类型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width 13个属性。图像按钮很有用的一个特性是,通过AutoLISP程序可以获取被单击时的位置,从而根据不
7、同的位置设计相应的动作。图12-4 所示图像按钮定义的如下::image_button key=test_image_button;width=10;aspect_ratio=1.5;图12-4 图像按钮,4.列表框(List Bbox)列表框的类型是list_box。有action、alignment、allow_accept、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、multiple_select、tabs、value、width 16个属性。列表内含有若干行可供选择的文本,
8、当表的内容超出表的范围时,将自动在表的右侧出现一个滑动条。,列表的标签显示在列表框的上方作为文字说明。列表的值是被选中的文本行的序号,序号从0开始。属性multiple_select为true时,允许同时选取框内的多行文本。,图12-5 列表框,图12-5 所示对话框的列表定义如下::list_box label=齿轮种类;list=圆柱直齿n圆柱斜齿n圆锥直齿n螺旋伞齿n蜗轮n蜗杆n;value=2;key=gear_list;height=6;,图12-5 列表框,5.下拉列表(Popup List)下拉列表的类型是popup_list。它具有action、alignment、edit_w
9、idth、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、tabs、value、width 15个属性。下拉列表具有编辑框和列表框的两个特点,初始状态象一个编辑框,标签显示在框的左边,框内只有一行字符和一个向下的箭头,见图12-6(a)。单击框内箭头,将弹出一个列表,见图12-6(b),选取表内文本之后,列表自动关闭,在编辑框内显示选中的内容。下拉列表的值是被选中的文本行的序号。,图12-6 所示下拉列表的定义如下::popup_listlabel=齿轮种类:;list=圆柱直齿n圆柱
10、斜齿n圆锥直齿n螺旋伞齿n蜗轮n蜗杆n;key=gear_list;,(a)(b)图12-6 下拉列表,6.互锁按钮(Radio Button)互锁按钮的类型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width 12个属性。互锁按钮不宜能单独使用,必须由多个这样的按钮以行或列的形式组成一组,同组的按钮之间是互锁的,只能从中选取一个。互锁按钮的标签显示在按钮的右边。图12-7所示互锁按钮的定义如下::radio_bu
11、tton key=unit_mm;label=毫米;,图12-7 互锁按钮,7.滑动条(Slider)滑动条是一种直观控制数值的控件。点取滑动条上的箭头或拖动滑块,可以得到字符串方式表示的整数。滑动条的类型是slider。有action、alignment、big_increment、fixed_height、fixed_width、height、key、label、layout、max_value、min_value、mnemonic、small_increment、value、width 15个属性。属性max_value、min_value确定数值的最大和最小值,small_increm
12、ent、big_increment确定点击滑动条箭头时的最小、最大增量。图12-8 所示滑动条的定义如下::slider key=test_slider;min_value=0;max_value=100;,图12-8 滑动条,8.切换开关(Toggle)切换开关又称作复选开关、乒乓开关,它的类型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width 11个属性。切换开关与互锁按钮不同的是它可以单独使用,同组的切换开关各自是独立的。标签显示在开关
13、的右边。图12-9所示切换开关的定义如下::toggle label=正交方式;key=ortho_mode;value=1;,图12-9 切换开关,12.2.2 组合类控件 组合类控件可以将相关的控件组合在一起,使得对话框的布局更加美观、合理,操作更加方便。1.列(Column)列是将若干控件构成垂直分布的一个组件。列的类型是column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9个属性。,图12-1
14、0 列,图12-11 加框列,图12-10 所示列的定义如下::column:buttonlabel=光标拾取;key=pick;:edit_boxlabel=x=;width=12;key=x;mnemonic=x;value=0.0;,:edit_boxlabel=y=;width=12;key=y;mnemonic=y;value=0.0;,图12-10 列,2.加框列(Boxed Column)顾名思义加框列就是加了一个矩形框的列。加框列的类型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、childr
15、en_fixed_width、fixed_height、fixed_width、height、label、width 9个属性。如果将图12-10 所示列的定义的第一行:column改为:boxed_columnlabel=左下角点;,即可定义一个加框列,见图12-11。,图12-11 加框列,3.互锁列(Radio Column)若干个互锁按钮组成的列即为互锁列。互锁列的类型是radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_widt
16、h、height、label、width 9个属性。互锁列的特点是,它保证了其中只能有一个按钮的值为1,即处于打开状态。,图12-12 互锁列,图12-13 加框互锁列,图12-12 所示互锁列的定义如下::radio_column key=size;:radio_buttonlabel=A,:radio_buttonlabel=A,图12-12 互锁列,图12-13 加框互锁列,4.加框互锁列(Boxed Radio Column)加框互锁列就是加了一个矩形框的互锁列。加框互锁列的类型是boxed_radio_column。有alignment、children_alignment、chil
17、dren_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9个属性。,如果将图12-12 所示互锁列的定义的第一行:radio_column改为:boxed_radio_columnlabel=幅面规格;,即可定义一个加框互锁列,见图12-13。,5.行(Row)行是将若干控件构成水平分布的一个组件。行的类型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、
18、fixed_width、height、label、width 9个属性。,图12-14 行,图12-14 所示行的定义如下::row:toggle label=纵向;key=dir;:edit_box label=W(mm)=;mnemonic=W;key=w;value=420;:edit_box label=H(mm)=;mnemonic=H;key=h;value=297;,6.加框行(Boxed Row)加框行就是加了一个矩形框的行。加框行的类型是boxed_row。有alignment、children_alignment、children_fixed_height、children
19、_fixed_width、fixed_height、fixed_width、height、label、width 9个属性。如果将图12-14 所示行的定义的第一行:row改为:boxed_rowlabel=图纸幅面;,即可定义一个加框行,见图12-15。,图12-15 加框行,7.互锁行(Radio Row)若干个互锁按钮组成的行即为互锁行。互锁行的类型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label
20、、width 9个属性。互锁行中只能有一个选钮的值为1。图12-16 所示互锁行的定义如下::radio_row key=size;:radio_buttonlabel=A,图12-16 互锁行,8.加框互锁行(Boxed Radio Row)加框互锁行就是加了一个矩形框的互锁行。加框互锁行的类型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9个属性。如果将图12-16 所示
21、互锁行的定义的第一行:radio_row改为:boxed_radio_rowlabel=幅面规格;,即可定义一个加框互锁行,见图12-17。,图12-17 加框互锁行,9.对话框(dialog)对话框本身也可以看作是一种控件,它是对话框的主体,不能单独使用,且至少要有一个确认(OK)或取消(Cancel)按钮。它的类型是dialog,有initial_focus、label、value 3个属性。标签是对话框的标题。属性value也可以作为标题,这样的标题在程序运行时可以被改变。initial_focus用于指定初始聚焦的控件。见右图所示对话框及以下程序代码:sample:dialog lab
22、el=简单的对话框实例;:text label=祝您成功!;:buttonkey=accept;label=确认;简单的对话框实例 is_default=true;fixed_width=true;alignment=centered;,12.2.3 装饰性和信息类控件 装饰性和信息类控件无行为动作,也不能被选择,主要用于显示信息、加强视觉效果或协助对话框布局。1.图像(Image)图像是在一个矩形区域内显示矢量图形、色彩填充块等的控件。它的类型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_ena
23、bled、is_tab_stop、key、mnemonic、width 11个属性。图像的值是点取图像时的位置,通过AutoLISP程序可以获取该位置,从而根据这些位置设计相应的动作。必须指定图像的width、height或二者之一和aspect_ratio属性。图像的内容由AutoLISP程序确定。,图12-18所示图像的定义如下::image width=30;aspect_ratio=0.6;key=rect;color=graphics_background;,图12-18 图像,注意:图像的内容由AutoLISP程序确定。,2.文本(Text)文本控件通常用于显示提示或警告信息。文本
24、的类型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、value、width 9个属性。属性label和value都可以存放用户要显示的信息,且外观相同。但是,label存放的信息是不变的,value存放的信息可以由AutoLISP程序赋以新的内容。若label和value同时存放了某些信息时,label的信息不予显示。例12-2 定义了用属性label存放显示信息的对话框,外观见图12-19。,【例12-2】用属性label存放显示信息的对话框。iwarn1:dialoglabel=警告信息;:textla
25、bel=选取的对象不是直线,请重新选择!;ok_cancel;,图12-19 文本,3.部分文本(text_part)部分文本的类型是text_part,只有label一个属性。单独的部分文本与只含label属性的文本(Text)等效。多个部分文本可以组成单行的文本或段落,弥补了文本(Text)只能单行的不足,例12-3定义了显示两行信息的对话框,外观见图12-20。【例12-3】定义多行文本的对话框。warn2:dialoglabel=警告信息;:text_part label=选取的对象不是直线,;:text_part label=请重新选择!;ok_cancel;,图12-20部分文本,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对话框 设计 清华 CAD 二次开发 LISP
链接地址:https://www.31ppt.com/p-5051319.html