明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3868|回复: 8

已解决,谢谢大家 :radio_button分组单选问题求解决

[复制链接]
发表于 2012-1-20 17:40:15 | 显示全部楼层 |阅读模式
本帖最后由 ld80721 于 2012-1-23 12:20 编辑

高手帮帮忙哦,选择时怎么会出现看似重选的问题,(圈中的点)。
同一列没问题,不同列就会出现这样的问题。我要做到的是:选框中任选其一,其他的不作选择。

我现在有12个单选按钮因为使用功能不同,分为多组,12个只能任选其一,在线请教如何用lisp控制!



cs.lsp

  1. (defun c:cs()
  2.    (setvar "cmdecho" 0)
  3.    (dcl_lmgt)
  4.    (prin1)
  5. )
  6. (defun dcl_lmgt()
  7.    (setq dcl_id (load_dialog "lmgt"))
  8.    (new_dialog "lmgt" dcl_id)   
  9.    (sub_rb1)
  10.    (set_tile "rb1" "1")
  11.    (set_tile "bww" "60")
  12.    (set_tile "kww" "420")
  13.    (set_tile "khh" "600")
  14.    (action_tile "rb1" "(sub_rb1)")
  15.    (action_tile "rb2" "(sub_rb2)")
  16.    (action_tile "rb3" "(sub_rb3)")
  17.    (action_tile "rb4" "(sub_rb4)")
  18.    (action_tile "rb5" "(sub_rb5)")
  19.    (action_tile "rb6" "(sub_rb6)")
  20.    (action_tile "rb7" "(sub_rb7)")
  21.    (action_tile "rb8" "(sub_rb8)")
  22.    (action_tile "rb9" "(sub_rb9)")
  23.    (action_tile "rb10" "(sub_rb10)")
  24.    (action_tile "rb11" "(sub_rb11)")
  25.    (action_tile "rb12" "(sub_rb12)")




  26.    (action_tile "accept" "(ok_lmgt)(done_dialog 1)")
  27.    (setq dd(start_dialog))
  28.    (if (= dd 1)
  29.        (draw_lmgt)
  30.    )
  31. )
  32. (defun sub_rb1()
  33.    (setq ddtype 1)
  34.    (show_sld "kimage" "lmgt1")
  35.    (mode_tile "bww" 1)
  36.    (mode_tile "kww" 1)
  37.    
  38.    (mode_tile "khh" 1)
  39. )
  40. (defun sub_rb2()
  41.    (setq ddtype 2)
  42.    (show_sld "kimage" "lmgt2")
  43.    (mode_tile "bww" 0)
  44.    (mode_tile "kww" 1)

  45.    (mode_tile "khh" 1)
  46. )
  47. (defun sub_rb3()
  48.    (setq ddtype 3)
  49.    (show_sld "kimage" "lmgt3")
  50.    (mode_tile "bww" 1)
  51.    (mode_tile "kww" 0)

  52.    (mode_tile "khh" 0)
  53. )
  54. (defun sub_rb4()
  55.    (setq ddtype 4)
  56.    (show_sld "kimage" "lmgt4")
  57.    (mode_tile "bww" 1)
  58.    (mode_tile "kww" 0)

  59.    (mode_tile "khh" 0)
  60. )
  61. (defun sub_rb5()
  62.    (setq ddtype 5)
  63.    (show_sld "kimage" "lmgt5")
  64.    (mode_tile "bww" 0)
  65.    (mode_tile "kww" 1)
  66.    (mode_tile "khh" 1)
  67. )

  68. (defun sub_rb6()
  69.    (setq ddtype 6)
  70.    (show_sld "kimage" "lmgt6")
  71.    (mode_tile "bww" 0)
  72.    (mode_tile "kww" 1)
  73.    (mode_tile "khh" 1)
  74. )

  75. (defun sub_rb7()
  76.    (setq ddtype 7)
  77.    (show_sld "kimage" "lmgt7")
  78.    (mode_tile "bww" 1)
  79.    (mode_tile "kww" 0)
  80.    (mode_tile "khh" 1)
  81. )
  82. (defun sub_rb8()
  83.    (setq ddtype 8)
  84.    (show_sld "kimage" "lmgt8")
  85.    (mode_tile "bww" 1)
  86.    (mode_tile "kww" 0)
  87.    (mode_tile "khh" 1)
  88. )
  89. (defun sub_rb9()
  90.    (setq ddtype 9)
  91.    (show_sld "kimage" "lmgt9")
  92.    (mode_tile "bww" 1)
  93.    (mode_tile "kww" 0)
  94.    (mode_tile "khh" 1)
  95. )
  96. (defun sub_rb10()
  97.    (setq ddtype 10)
  98.    (show_sld "kimage" "lmgt10")
  99.    (mode_tile "bww" 1)
  100.    (mode_tile "kww" 0)
  101.    (mode_tile "khh" 0)
  102. )
  103. (defun sub_rb11()
  104.    (setq ddtype 11)
  105.    (show_sld "kimage" "lmgt11")
  106.    (mode_tile "bww" 1)
  107.    (mode_tile "kww" 0)
  108.    (mode_tile "khh" 1)
  109. )

  110. (defun sub_rb12()
  111.    (setq ddtype 12)
  112.    (show_sld "kimage" "lmgt12")
  113.    (mode_tile "bww" 1)
  114.    (mode_tile "kww" 0)
  115.    (mode_tile "khh" 1)
  116. )






  117. (defun show_sld(key sld)
  118.    (setq x (dimx_tile key))
  119.    (setq y (dimy_tile key))
  120.    (start_image key)
  121.    (fill_image 0 0 x y -2)
  122.    (slide_image 0 0 x y sld)
  123.    (end_image)
  124. )
  125. (defun ok_lmgt()
  126.    (setq bw (atof (get_tile "bww")))
  127.    (setq bb (atof (get_tile "kww")))
  128.    (setq hh (atof (get_tile "khh")))
  129. )
  130. (defun draw_lmgt()
  131.    (setq pt1 (getpoint "\n左上角点:")
  132.          pt3 (getcorner pt1 "\n右下角点:") )
  133.    ;以下为三个模块共享的点坐标变量
  134.    (setq pt2 (polar pt1 0 ww))
  135.    
  136.    (setq pt4 (polar pt3 pi (* ww 0.5)))
  137.    (setq pt5 (polar pt4 (* pi 1.5) (* hh 0.5)))
  138.    (setq pt6 (polar pt5 pi (* ww 0.5)))
  139.    ;以下依据不同的类别,调用不同的绘图模式
  140.    (cond
  141.      ((= ddtype 1)
  142.                                  
  143.                  (setq pt2 (polar pt1 (* pi 1.5) bw))

  144.                   (command "pline" pt1 pt2 pt3  ""))
  145.      ((= ddtype 2)(command "pline" pt6 pt1 pt2 pt3 pt4 "")
  146.                   (command "circle" "2p" pt4 pt6))
  147.      ((= ddtype 3)(command "pline" pt1 pt2 pt3 "")
  148.     (command "pline" pt4 pt5 pt6 "")
  149.                   (command "circle" "2p" pt3 pt4)
  150.                   (command "circle" "2p" pt6 pt1))
  151.      ((= ddtype 4)(command "pline" pt1 pt2 pt3 pt4 "a" "a" -180 pt6 "L" "C"))
  152.      ((= ddtype 5)(command "pline" pt1 pt2 pt3 pt4 "C"))
  153.    )
  154. )



  1. lmgt:dialog{
  2.   label="衣柜立面内结构绘制工具  浪刀作品";
  3. spacer_1;
  4.   :column{
  5.        :row{
  6.         :image {
  7.       key = "kimage";
  8.       color = -2;
  9.                         width = 41;
  10.       aspect_ratio =0.6;
  11.                }
  12.         
  13.       

  14.       
  15.   
  16.     :boxed_radio_column{
  17.       label="设计样式";
  18.                         :radio_button{label="36宽边框线";    key="rb1";}
  19.       :radio_button{label="欧式边框线";    key="rb2";}
  20.                         :radio_button{label="两等分样式";    key="rb3";}
  21.                      
  22.       :text{label="中间电视位";}
  23.                         :row{
  24.       :radio_button{label="普通";    key="rb4";}
  25.                         :radio_button{label="欧外";    key="rb5";}
  26.                         :radio_button{label="欧内";    key="rb6";}}

  27.       }
  28.             
  29.              }
  30.       
  31.                        
  32.   :row{
  33.        :boxed_radio_column{  
  34.                          label="无敌组合";
  35.   :row{           
  36.      :radio_button{label="上叠下挂";    key="rb7";horizontal_margin = none;vertical_margin = none;}
  37.      :radio_button{label="上挂下叠";    key="rb8";horizontal_margin = none;vertical_margin = none;}
  38.      :radio_button{label="上挂下挂";    key="rb9";horizontal_margin = none;vertical_margin = none;}
  39.      }
  40.   :row{
  41.      
  42.      :radio_button{label="上挂下裤";    key="rb10";horizontal_margin = none;vertical_margin = none;}
  43.      :radio_button{label="中间电视";    key="rb11";horizontal_margin = none;vertical_margin = none;}
  44.      :radio_button{label="全为层板";    key="rb12";horizontal_margin = none;vertical_margin = none;}}
  45.      
  46.      
  47.      }
  48.        :column{
  49.      
  50.   
  51.                   :edit_box{label="边框线宽度BW:";edit_width=8;edit_limit=2;key="bww";}
  52.       :edit_box{label="棉被格高度MH:";edit_width=8;edit_limit=3;key="kww";}
  53.                         
  54.       :edit_box{label="库抽格宽度KW:";edit_width=8;edit_limit=3;key="khh";}
  55.       
  56.       }
  57.    
  58.                
  59.     }  }
  60.    
  61.   spacer_1;
  62.   ok_cancel;
  63. }



本帖子中包含更多资源

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

x
 楼主| 发表于 2012-1-20 19:55:26 | 显示全部楼层
我费尽周折找到以下循环代码,本人套进去,我要的可以实现,但其他连接失效,不明哦。求助!
代码
  1. (setq ma mb)
  2.   (if (null ma) (setq ma "M6"))
  3.   (set_tile ma "1")
  4.   (setq spec '("M3" "M4" "M5" "M6" "M8" "M10" "M12" "M14" "M16"
  5.               "M18" "M20" "M22" "M24" "M27" "M30" "M33" "M36" "M39"
  6.               "M42" "M45" "M48" "M52"))
  7.   (foreach keyspec spec (action_tile keyspec "(sel)"))
  8.   (defun sel ()
  9.     (foreach keyspec1 spec (set_tile keyspec1 "0"))
  10.     (setq ma $key)
  11.     (set_tile $key "1")
  12.     (setq mb ma)
  13.   )
 楼主| 发表于 2012-1-21 08:40:42 来自手机 | 显示全部楼层
我现在有12个单选按钮因为使用功能不同,分为多组,12个只能任选其一,在线请教如何用lisp控制!
发表于 2012-1-21 11:35:01 | 显示全部楼层
将所有的radio_button合并到一个里面,需要重新布置对话框。

  1. lmgt:dialog{
  2.    label="衣柜立面内结构绘制工具  浪刀作品";
  3.    :row{
  4.      :boxed_radio_column{
  5.       key="rbtype";
  6.       :text{label=" >> 设计样式";}      
  7.       :radio_button{label="36宽边框线";key="rb1";}
  8.       :radio_button{label="欧式边框线";key="rb2";}
  9.       :radio_button{label="两等分样式";key="rb3";}                     
  10.       :text{label=" >> 中间电视位";}
  11.       :radio_button{label="普通";key="rb4";}
  12.       :radio_button{label="欧外";key="rb5";}
  13.       :radio_button{label="欧内";key="rb6";}
  14.       :text{label=" >> 无敌组合";}     
  15.       :radio_button{label="上叠下挂";key="rb7";}
  16.       :radio_button{label="上挂下叠";key="rb8";}
  17.       :radio_button{label="上挂下挂";key="rb9";}
  18.       :radio_button{label="上挂下裤";key="rb10";}
  19.       :radio_button{label="中间电视";key="rb11";}
  20.       :radio_button{label="全为层板";key="rb12";}
  21.      }
  22.      :column{
  23.       spacer;
  24.       :image {key = "kimage";color = -2;width = 50;aspect_ratio =0.6;}
  25.       :boxed_column {
  26.       :edit_box{label="边框线宽度BW:";edit_width=8;edit_limit=2;key="bww";}
  27.       :edit_box{label="棉被格高度MH:";edit_width=8;edit_limit=3;key="kww";}                        
  28.       :edit_box{label="库抽格宽度KW:";edit_width=8;edit_limit=3;key="khh";}
  29.       }
  30.       errtile;
  31.       ok_cancel;
  32.      }
  33.   }  
  34. }
LISP program update

  1. (defun C:lmgt ()
  2.   (defun _RbType (id / KEY X Y)
  3.     (set_tile "rbtype" id)
  4.     (setq ddtype (read (substr id 3))
  5.           key         "kimage"
  6.           x         (dimx_tile key)
  7.           y         (dimy_tile key)
  8.     )
  9.     (start_image key)
  10.     (fill_image 0 0 x y -2)
  11.     (slide_image 0 0 x y (strcat "lmgt" (itoa ddtype)))
  12.     (end_image)
  13.   )
  14.   (defun ok_lmgt ()
  15.     (setq bw (atof (get_tile "bww")))
  16.     (setq bb (atof (get_tile "kww")))
  17.     (setq hh (atof (get_tile "khh")))
  18.   )
  19.   (defun draw_lmgt ()
  20.     (setq pt1 (getpoint "\n左上角点:")
  21.           pt3 (getcorner pt1 "\n右下角点:")
  22.     )
  23.                                         ;以下为三个模块共享的点坐标变量
  24.     (setq pt2 (polar pt1 0 ww))

  25.     (setq pt4 (polar pt3 pi (* ww 0.5)))
  26.     (setq pt5 (polar pt4 (* pi 1.5) (* hh 0.5)))
  27.     (setq pt6 (polar pt5 pi (* ww 0.5)))
  28.                                         ;以下依据不同的类别,调用不同的绘图模式
  29.     (cond
  30.       ((= ddtype 1)

  31.        (setq pt2 (polar pt1 (* pi 1.5) bw))

  32.        (command "pline" pt1 pt2 pt3 "")
  33.       )
  34.       ((= ddtype 2)
  35.        (command "pline" pt6 pt1 pt2 pt3 pt4 "")
  36.        (command "circle" "2p" pt4 pt6)
  37.       )
  38.       ((= ddtype 3)
  39.        (command "pline" pt1 pt2 pt3 "")
  40.        (command "pline" pt4 pt5 pt6 "")
  41.        (command "circle" "2p" pt3 pt4)
  42.        (command "circle" "2p" pt6 pt1)
  43.       )
  44.       ((= ddtype 4)
  45.        (command "pline" pt1 pt2 pt3 pt4 "a" "a" -180 pt6 "L" "C")
  46.       )
  47.       ((= ddtype 5) (command "pline" pt1 pt2 pt3 pt4 "C"))
  48.     )
  49.   )
  50.   (setq        ddtype 1
  51.         dcl_id (load_dialog "lmgt")
  52.   )
  53.   (if (new_dialog "lmgt" dcl_id)
  54.     (progn
  55.       (_RbType (strcat "rb" (itoa ddtype)))
  56.       (setq ii 0)
  57.       (while (< (setq ii (1+ ii)) 13)
  58.         (action_tile (strcat "rb" (itoa ii)) "(_RbType $Key)")
  59.       )
  60.       (set_tile "bww" "60")
  61.       (set_tile "kww" "420")
  62.       (set_tile "khh" "600")
  63.       (action_tile "accept" "(ok_lmgt)(done_dialog 1)")
  64.       (if (= (start_dialog) 1)
  65.         (draw_lmgt)
  66.       )
  67.     )
  68.   )
  69. )
 楼主| 发表于 2012-1-21 11:51:47 | 显示全部楼层
好像不行哦,不到问题出在哪里
发表于 2012-1-21 12:12:48 | 显示全部楼层
你把文件都放到搜索路径里。
另外在draw_lmgt里,(setq pt2 (polar pt1 0 ww))这一句,WW没有定义。
发表于 2012-1-21 12:19:03 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2012-1-21 12:38:46 | 显示全部楼层
谢谢,正在摸索中。。。
 楼主| 发表于 2012-1-21 13:49:51 | 显示全部楼层
ZZXXQQ 发表于 2012-1-21 12:19
[/post]

谢谢你的帮忙,问题已解决。还有一问题请教下。
(cond((= ddtype 1) 。。。依据不同的类别,调用不同的绘图模式,为何出现问题!
附件传上,再帮个忙。帮我的绘图程序套进去下,谢谢
lmgt.lsp

lmgt.dcl

两等分衣柜.lsp

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 01:24 , Processed in 0.211294 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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