明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 353|回复: 3

[提问] 此处为何不能用循环语句?

[复制链接]
发表于 2020-11-26 06:34 | 显示全部楼层 |阅读模式
;;问题:对话框中RadioGroup显示多行实现单选和互斥时,逐行调用action_tile与调用循环action_tile效果为何不同?
;;问题描述:boxed_radio单行或单列排不下,只能多行多列,但各列不互斥,列间无法实现单选。
;;         于是逐行调用action_tile来写互斥代码时,逐行调用action_tile(代码中方法一)可以实现预期功能,
;;         但改用循环语句调用action_tile(代码中方法二)却始终达不到目的。
;;      请热心人帮我找一下问题出在哪里。谢谢!

(defun c:tt ( / fname fn dcl_id i )
        ;;写对话框文件
        (setq fname (vl-filename-mktemp nil nil ".dcl"))
        (setq fn (open fname "w"))
        (write-line "temp:dialog{label=\"多行多列radio例示\";" fn)
        (write-line "" fn)
        (write-line ":boxed_radio_row{label=\"装夹方式>系数C(多选一): \";" fn)
        (write-line "key=\"E3\";value=\"E3R1\";" fn)
        (write-line ":radio_column{" fn)
        (write-line ":radio_button{label=\"三爪\"; key=\"E3R1\";}" fn)
        (write-line ":radio_button{label=\"三爪顶尖\"; key=\"E3R2\";}" fn)
        (write-line ":radio_button{label=\"三爪中心架\"; key=\"E3R3\";}" fn)
        (write-line ":radio_button{label=\"三爪顶尖\"; key=\"E3R4\";}" fn)
        (write-line ":radio_button{label=\"两头顶尖(梅花)\"; key=\"E3R5\";}" fn)
        (write-line "}" fn)
        (write-line ":radio_column{" fn)
        (write-line ":radio_button{label=\"四爪(专用胎具)\"; key=\"E3R6\";}" fn)
        (write-line ":radio_button{label=\"四爪顶尖\"; key=\"E3R7\";}" fn)
        (write-line ":radio_button{label=\"四爪中心架\"; key=\"E3R8\";}" fn)
        (write-line ":radio_button{label=\"四爪顶尖\"; key=\"E3R9\";}" fn)
        (write-line ":radio_button{label=\"芯轴顶尖(花键)\"; key=\"E3R10\";}" fn)
        (write-line "}" fn)
        (write-line ":radio_column{" fn)
        (write-line ":radio_button{label=\"外涨胎\"; key=\"E3R11\";}" fn)
        (write-line ":radio_button{label=\"定心模具\"; key=\"E3R12\";}" fn)
        (write-line ":radio_button{label=\"弯板\"; key=\"E3R13\";}" fn)
        (write-line ":radio_button{label=\"花盘\"; key=\"E3R14\";}" fn)
        (write-line "}" fn)
        (write-line "" fn)
        (write-line "}" fn)
        (write-line "" fn)
        (write-line ":edit_box{label=\"你选择了: \"; key=\"num\";}" fn)
        (write-line "ok_cancel;" fn)
        (write-line "errtile;}" fn)
        (close fn)

        (setq dcl_id (load_dialog fname))
        (if (not (new_dialog "temp" dcl_id))
                (exit)
        );if

        ;;实现互现互斥(方法一):
        (action_tile "E3R1" "(cleari \"E3\" 1 14)(set_tile \"num\" \"1\")")
        (action_tile "E3R2" "(cleari \"E3\" 2 14)(set_tile \"num\" \"2\")")
        (action_tile "E3R3" "(cleari \"E3\" 3 14)(set_tile \"num\" \"3\")")
        (action_tile "E3R4" "(cleari \"E3\" 4 14)(set_tile \"num\" \"4\")")
        (action_tile "E3R5" "(cleari \"E3\" 5 14)(set_tile \"num\" \"5\")")
        (action_tile "E3R6" "(cleari \"E3\" 6 14)(set_tile \"num\" \"6\")")
        (action_tile "E3R7" "(cleari \"E3\" 7 14)(set_tile \"num\" \"7\")")
        (action_tile "E3R8" "(cleari \"E3\" 8 14)(set_tile \"num\" \"8\")")
        (action_tile "E3R9" "(cleari \"E3\" 9 14)(set_tile \"num\" \"9\")")
        (action_tile "E3R10" "(cleari \"E3\" 10 14)(set_tile \"num\" \"10\")")
        (action_tile "E3R11" "(cleari \"E3\" 11 14)(set_tile \"num\" \"11\")")
        (action_tile "E3R12" "(cleari \"E3\" 12 14)(set_tile \"num\" \"12\")")
        (action_tile "E3R13" "(cleari \"E3\" 13 14)(set_tile \"num\" \"13\")")
        (action_tile "E3R14" "(cleari \"E3\" 14 14)(set_tile \"num\" \"14\")")
       
        ;;实现互现互斥(方法二):
        ;(setq i 0)
        ;(repeat 14
        ;        (setq i (+ i 1))
        ;        (action_tile (strcat "E3R" (itoa i)) "(cleari \"E3\" i 14)(set_tile \"num\" (itoa i))")
        ;)
       
        (start_dialog)
        (unload_dialog dcl_id)
        (princ)
);defun

;;===========多行多列boxed_radio单选互斥
;;key---"E3"
;;n---第n项选中
;;num---共有radio个数---14
(defun cleari ( key n num / i )
        (setq i 0)
        (while (< i num)
                (setq i (+ i 1))
                (if (/= i n)
                        ;(set_tile (strcat key "R" (itoa i)) "1")
                        (set_tile (strcat key "R" (itoa i)) "0")
                )
        )
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-11-26 11:51 | 显示全部楼层
循环里的执行字符没对,对着方法一那核对下
(action_tile (strcat "E3R" (itoa i)) (strcat "(cleari \"E3\" "(itoa i)" 14)(set_tile \"num\" " "\" "(itoa i)" \")" ")"))

评分

参与人数 1明经币 +1 收起 理由
wrf610051 + 1 很给力!

查看全部评分

发表于 2020-11-26 16:36 | 显示全部楼层
本帖最后由 xyp1964 于 2020-11-26 17:15 编辑

这种用poplist下拉表或list_box列表框可能更简单

http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTExOTU3fDg4MGI3ZWQzYWFjZDFlOTJhMmM0MWFmZDcyNGY2NmI3fDE3MTE2Nzc2NjU%3D&request=yes&_f=.gifattach://111958.lsp







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
wrf610051 + 1 很给力!

查看全部评分

 楼主| 发表于 2020-11-27 06:55 | 显示全部楼层
谢谢start4444,解决了我的问题;
谢谢xyp19664,给了我更多的帮助;
同时也感谢明经这个我们学知识的好平台。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 10:01 , Processed in 0.336506 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表