【实例简介】
[jjj-dcl-make lst aaa bbb]
函数名:jjj-dcl-make
参数
lst:dcl控件列表
aaa:dcl启动时要预先执行的函数名,参数类型为字符串或字符串表,如无预先要执行的函数,则用""空字符串占位。
示例:"(abc)" '("(abc)" "(bcd)")
bbb:是否保留dcl文件选项,参数类型为整数。0为不保存,1为保存,保存地址为CAD根目录下的support文件夹中,保存名为dcl标题。
一.lisp表中各控件及组件的书写方式
控件及组件 lisp表格式 示例
编辑框edit_box ("控件类型" "控件显示名" "键值" "宽度" "函数名") ("bj" "输入" "su" "10" "(abc)")
文字text ("控件类型" "文字内容" "键值" "宽度" "函数名") ("wz" "文字内容" "wb" "10" "(abc)")
按钮button ("控件类型" "按钮名称" "键值" "宽度" "高度" "函数名") ("an" "计算" "js" "10" "2" "(abc)")
按钮button ("控件类型" "按钮名称" "键值" "宽度" "高度" "函数名" "返回值") ("an1" "确定" "qd" "10" "2" "(abc)" 1)
图像块image_block ("控件类型" "键值" "宽度" "高度" "图像颜色") ("tx" "tx1" "10" "5" "256")
图标按钮icon_image ("控件类型" "键值" "宽度" "高度" "函数名" "返回值") ("tx1" "tb1" "10" "5" "(abc)" 1)
单选按钮radio_button ("控件类型" "控件显示名" "键值" "预设值" "函数名") ("dx" "极坐标" "zb" "1" "(abc)")
复选按钮toggle ("控件类型" "控件显示名" "键值" "预设值" "函数名") ("fx" "极坐标" "zb" "1" "(abc)")
列表框list_box ("控件类型" "控件显示名" "键值" "宽度" "高度" "函数名") ("lb" "种类" "zl" "10" "30" "(abc)")
下拉列表框popup_list ("控件类型" "控件显示名" "键值" "宽度" "预设值" "函数名") ("xllb" "种类" "zl" "15" "0" "(abc)")
滑杆slider ("控件类型" "键值" "宽度" "最小值" "最大值" "预设值" "函数名") ("hg" "gl" "20" "0" "100" "50" "(abc)")
密码框edit_box ("控件类型" "控件显示名" "键值" "宽度" "密码形态" "函数名") ("mm" "密码" "mima" "20" "*" "(abc)")
行列row{ ("组件" "组件属性" "组件对齐方式") ("row{" "kd" "zb")
纵列column{ ("组件" "组件属性" "组件对齐方式") ("column{" "kd" "zb")
行框boxed_row{ ("组件" "组件显示名" "组件属性" "组件对齐方式") ("boxed_row{" "文字内容" "kd" "zb")
纵框boxed_column{ ("组件" "组件显示名" "组件属性" "组件对齐方式") ("boxed_column{" "文字内容" "kd" "zb")
右括号} ("组件") ("}")
空一行spacer ("组件") ("spacer;")
确定、取消组合键ok_cancel ("组件") ("ok_cancel;")
确定键ok_noly ("组件") ("ok_only;")
取消键cancel_button ("组件") ("cancel_button;")
二.注意事项
1.所有的[控件类型、组件],这两种参数的书写方式为固定不可变的,所有参数的书写顺序也是不可变的。
2.所有控件及组件的参数中(行列、纵列、行框、纵框除外),[控件显示名、键值、文字内容、按钮名称、组件显示名、宽度、高度]这些参数
可不提供(如不提供参数时,必须用""空字符串占位)。图像块控件的[图像颜色]参数,以及其他控件的[函数名、返回值]参数均可缺省不提
供,无需用""空字符串占位。其余参数均为必填参数,且不可用""空字符串代替,所填参数也必须是dcl所指定的参数类型。an1型控件与tx1
型控件为特殊控件,点击此类控件后会关闭dcl,并返回参数表中指定的返回值,如提供了返回值而未提供函数名时,函数名参数则需用""
空字符串占位。返回值参数类型为整数,参数1效果等同于点击了确定键,0效果则等同于取消键。如只提供了函数名而缺省了返回值参数时
则默认返回0
3.函数还提供了一种控件紧贴模式,2个控件之间可以相互紧贴没有间隙。支持的控件有编辑框控件、an型按钮控件,使用时仅需在控件类型前
加一个小写t即可。示例:普通型编辑框:("bj" "输入" "su" "10"),紧贴型编辑框:("tbj" "输入" "su" "10")。
4.行列、纵列以及行框、纵框的参数中,除行框、纵框的[组件显示名]参数不提供时,需由""空字符串占位外,[组件属性、组件对齐方式]两种
参数可缺省不提供,不提供时无需用""空字符串占位。2种参数类型为字符串,书写方式不可更改,具体含义如下:
(1)组件属性(全部为小写)
"kd" 开启使用者自定义宽度功能
"gd" 开启使用者自定义高度功能
(2)组件对齐方式(全部为小写)
"sm" 顶部对齐方式
"xm" 底部对齐方式
"zj" 中间对齐方式
"zb" 左边对齐方式
"yb" 右边对齐方式
5.[空一行]、[确定、取消组合键]、[确定键]、[取消键],此类组件在书写时需在后面添加分号。
6.lisp表中第一项为dcl的定义名,和dcl的标题2个参数,参数类型为字符串,后续项则按dcl格式自行编排。
完整示例:
(defun c:tt(/ dcl_lst)
(setq dcl_lst (list'("dcl" "DCL测试")
'("boxed_column{" "两点画线")
'("row{")
'("bj" "点1x:" "d1x" "5")
'("bj" "点1y:" "d1y" "5")
'("}")
'("row{")
'("bj" "点2x:" "d2x" "5")
'("bj" "点2y:" "d2y" "5")
'("}")
'("an" "绘制直线" "hz" "27" "")
'("}")
'("ok_cancel;")
'("}")
)
)
(jjj-dcl-make dcl_lst "" 0)
)
三.dcl排版技巧
1.[row{、column{、boxed_row{、boxed_column{]组件其实也可以把它看成是一个控件,给它附带fixed_width=true属性时,它会控制自身的
宽度。其宽度为它所携带控件群集的最大宽度,然后搭配alignment属性,可以使群集在整个dcl水平方向中处于指定位置。如不带fixed_wi
dth=true属性,群集的宽度将是弹性的,它会调整自身宽度,以最大程度在水平方向占满dcl。垂直方向方法相同,只需将fixed_width=true
属性改为fixed_height=true即可。示例::boxed_row{label="群集";alignment=centered;fixed_width=true;(此技巧使用方法请查阅注意事
项中第4条说明)
2.图像类控件的宽度值是高度值的1倍,就可以使图像控件成正方形显示。
【实例截图】
【核心代码】
jjj-dcl-make函数
├── DCL测试样本.lsp
├── jjj-dcl-make函数.LSP
└── jjj-dcl函数详解.txt
0 directories, 3 files