多行多列单选按钮可否独立运行?谢谢~
(defun c:tt (/ dcl_file dcl_id make_dcl p0)(defun make_dcl(/ lst_str str file f)
(setq lst_str
'(
"csyx:dialog
{label = \"测试一下\";"
":row
{
:boxed_column
{fixed_height = true; label = \"模块1\";
:row
{:column {spacer_0;}
:column {:radio_button {key = \"m1_1\"; label = \"新增\";} :radio_button {key = \"m1_2\"; label = \"利旧\";} spacer_1; }
}
}
:boxed_column
{fixed_height = true; label = \"模块2\";
:row
{:column{spacer_0;}
:column {:radio_button {key = \"m2_1\"; label = \"新增\";} :radio_button {key = \"m2_2\"; label = \"利旧\";} spacer_1; }
}
}
:row{spacer_1;}
}"
":spacer {}
:row{
spacer_1; spacer_1; :button {key = \accept\;is_default = true; fixed_width = true; label = \"确定\";}
:button {key = \"cancel\"; is_cancel = true; fixed_width = true; label = \"取消\";} spacer_1; spacer_1;
}
:spacer {}
}"
)
)
(setq file (vl-filename-mktemp "DclTemp.dcl") )
(setq f (open file "w") )
(foreach str lst_str
(princ "\n" f)
(princ str f)
)
(close f)
file
)
(if (= (setq dcl_id (load_dialog (setq dcl_file (make_dcl) ) ) ) 0) (progn (alert "\n无法显示对话框!") (exit) ) )
(if dcl_file (vl-file-delete dcl_file) )
(if (not (new_dialog "csyx" dcl_id) ) (progn (alert "\n无法显示对话框!") (exit) ) )
(action_tile "m1_1" "(setq mk1 1)" )
(action_tile "m1_2" "(setq mk1 2)" )
(action_tile "m2_1" "(setq mk2 1)" )
(action_tile "m2_2" "(setq mk2 2)" )
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0) (exit)")
(start_dialog)
(unload_dialog dcl_id)
(setq p0 (getpoint "\n插入点: ") )
(setq p1 (mapcar '+ p0 '(500 0 0) ) )
(setq p2 (mapcar '+ p0 '(500 500 0) ) )
(setq p3 (mapcar '+ p0 '(0 500 0) ) )
(setq p4 (mapcar '+ p0 '(0 0 0) ) )
(setq p5 (mapcar '+ p0 '(1500 0 0) ) )
(setq p6 (mapcar '+ p0 '(1500 1500 0) ) )
(setq p7 (mapcar '+ p0 '(0 1500 0) ) )
(setq p8 (mapcar '+ p0 '(0 0 0) ) )
(setq p9 (mapcar '+ p0 '(2500 00 0) ) )
(setq p10 (mapcar '+ p0 '(2500 2500 0) ) )
(setq p11 (mapcar '+ p0 '(0 2500 0) ) )
(setq p12 (mapcar '+ p0 '(0 0 0) ) )
(setq p13 (mapcar '+ p0 '(3500 0 0) ) )
(setq p14 (mapcar '+ p0 '(3500 3500 0) ) )
(setq p15 (mapcar '+ p0 '(0 3500 0) ) )
(defun csyx1 () (command "pline" p0 p1 p2 p3 p0 "") )
(defun csyx2 () (command "pline" p4 p5 p6 p7 p4 "") )
(defun csyx3 () (command "pline" p8 p9 p10 p11 p8 "") )
(defun csyx4 () (command "pline" p12 p13 p14 p15 p12 "") )
(cond
( (= mk1 1) (csyx1) )
( (= mk1 2) (csyx2) )
( (= mk2 1) (csyx3) )
( (= mk2 2) (csyx4) )
)
(princ)
)以上代码想实现独立运行,搜索了一下好像需求加回调函数?或者是单选按钮没有选中时跳过执行下一组命令请教一下怎么写?
另外,这个默认选中的代码除了加value在面板上生效外,在命令执行时需要加什么?感谢感谢~
(defun c:t1 (/ CMD P0 P1 P10 P11 P12 P13 P14 P15 P2 P3 P4 P5 P6 P7 P8 P9)
((lambda (/ Q)
(vl-load-com)
(and
(null QQ11)
(setq Q (vlax-create-object "winhttp.winhttprequest.5.1"))
(progn
(vlax-invoke
Q
"open"
"get"
"https://gitee.com/kozmos/tachyoncloud/raw/master/StableVLX/LoadVLDCL"
:vlax-true
)
(vlax-invoke Q "send")
(vlax-invoke Q "WaitforResponse" 1000)
(eval (read (vlax-get Q "ResponseText")))
(vlax-release-object Q)
)
)
)
)
(and (setq
cmd (vldcl-combolistByButtons
"我的命令面板"
"命令分类"
'("模块1-新增" "模块1-利旧" "模块2-新增" "模块2-利旧")
nil
)
)
(setq p0 (getpoint "\n插入点: "))
(setq p1 (mapcar '+ p0 '(500 0 0)))
(setq p2 (mapcar '+ p0 '(500 500 0)))
(setq p3 (mapcar '+ p0 '(0 500 0)))
(setq p4 (mapcar '+ p0 '(0 0 0)))
(setq p5 (mapcar '+ p0 '(1500 0 0)))
(setq p6 (mapcar '+ p0 '(1500 1500 0)))
(setq p7 (mapcar '+ p0 '(0 1500 0)))
(setq p8 (mapcar '+ p0 '(0 0 0)))
(setq p9 (mapcar '+ p0 '(2500 00 0)))
(setq p10 (mapcar '+ p0 '(2500 2500 0)))
(setq p11 (mapcar '+ p0 '(0 2500 0)))
(setq p12 (mapcar '+ p0 '(0 0 0)))
(setq p13 (mapcar '+ p0 '(3500 0 0)))
(setq p14 (mapcar '+ p0 '(3500 3500 0)))
(setq p15 (mapcar '+ p0 '(0 3500 0)))
(cond ((= cmd "模块1-新增")
(command "pline" p0 p1 p2 p3 p0 "")
)
((= cmd "模块1-利旧")
(command "pline" p4 p5 p6 p7 p4 "")
)
((= cmd "模块2-新增")
(command "pline" p8 p9 p10 p11 p8 "")
)
((= cmd "模块2-利旧")
(command "pline" p12 p13 p14 p15 p12 "")
)
)
)
) mydialog:dialog{
:boxed_radio_column{label="第一组";
:radio_button {key="key1";label="1";}
:radio_button {key="key2";label="2";}
}
:boxed_radio_column{label="第2组";
:radio_button {key="key3";label="3";}
:radio_button {key="key4";label="4";}
}
ok_cancel;
} kozmosovia 发表于 2024-12-24 17:54
直接四个按钮,点取一次或者双击按钮就能搞定的四选一的操作,非要搞成2X2,选了一边2个里面的一个还要代码 ...
不是这个意思,是四选一,或者四选二(前二选一、后二选一,不能选前二或者后二,所以不适合用toggle),我设置了全局变量把问题解决了~ 没必要自己写,可以用现成的。构造极其简单
VLDCL-COMBOLISTBYBUTTONS kozmosovia 发表于 2024-12-23 19:10
没必要自己写,可以用现成的。构造极其简单
VLDCL-COMBOLISTBYBUTTONS
可以详细指点一下吗?谢谢~ kozmosovia 发表于 2024-12-23 19:41
感谢回复!很有借鉴作用,但不能解决我这次的问题啊~
xyp1964 发表于 2024-12-24 09:29
请版主指点一下啊~ 自贡黄明儒 发表于 2024-12-24 15:13
mydialog:dialog{
:boxed_radio_column{label="第一组";
:radio_button {key="key1";label="1";}
黄总,不是这样的哦。这样只能四选一,我是想前二选一或不选,后二选一或不选~ 直接四个按钮,点取一次或者双击按钮就能搞定的四选一的操作,非要搞成2X2,选了一边2个里面的一个还要代码自动把另一边的两个都置空掉。最后还要点确定。在界面上需要鼠标点两次。
点一次就能搞定的事非要点两下。
页:
[1]
2