明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6546|回复: 17

旧事重提!如何实现单击radio_button时edit_box实时更新

  [复制链接]
发表于 2012-3-6 09:55:40 | 显示全部楼层 |阅读模式
1明经币

我要的内容和此贴要求的一样,已有不少高手解答了,无奈DCL对我来说太验了,我只能实现单列的实时更新,两列在一块时就有问题。请高手写出此图片上的DCL和LISP调用文件。
要求:点左侧的单选按钮时,给变量guanya赋值为单选按钮的label值,点右侧的单选按钮时给xinghao赋值为单选按钮的label值。(setq str1(strcat guanya xinghao))(set_tile "guanyaxinghao" str1)
注意:(set_tile "guanyaxinghao" str1)这句只是显示我的选择,程序中我使用的是str1这个变量。如果str1不容易得到的话,可以从(setq str1(get_tile "guanyaxinghao" ))中取值。也就是说guanyaxinghao这个edit_box只是“测试”显示结果,我的程序中不必要这个edit_box
插入引线标注 是不必要的。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-3-6 09:55:41 | 显示全部楼层
本帖最后由 xshrimp 于 2012-3-6 10:49 编辑

  1. (defun c:test( / dclid dclname filen gyxh stream tempname)
  2. (defun act-dcl()
  3.   (setq #gydata# (subst (list $key $value)(assoc $key #gydata#)#gydata#))   
  4.   (set_tile "GYXH" (setq gyxh (strcat(get_tile "GY")(get_tile "XH"))))
  5.   (setq #gydata# (subst(list "GYXH" gyxh)(assoc "GYXH" #gydata#)#gydata#))
  6. )
  7. (defun act-dcl-gyxh( )  
  8.   (setq #gydata# (subst(list "GYXH" $value)(assoc "GYXH" #gydata#)#gydata#))
  9. )
  10. (defun act-dcl-in()  
  11.   (alert (cadr(assoc "GYXH" #gydata#)))  
  12. )
  13. (setq dclname
  14. (cond  
  15. ((setq tempname (vl-filename-mktemp "gps-dcl-tmp.dcl") filen (open tempname "w"))
  16. (foreach stream  
  17. '(  
  18. "test:dialog{\n"
  19. "label=\"管牙型号标注\";\n"
  20. ":row{\n"
  21. ":boxed_radio_column{key=\"GY\";label=\"管牙\";width=15;\n"
  22. ":radio_button{key=\"PT\";label=\"PT\";}\n"
  23. ":radio_button{key=\"NPT\";label=\"NPT\";}\n"
  24. ":radio_button{key=\"BSP\";label=\"BSP\";}\n"
  25. ":radio_button{key=\"BSPT\";label=\"BSPT\";}\n"
  26. "}\n"
  27. ":boxed_radio_column{key=\"XH\";label=\"型号\";width=15;\n"
  28. ":radio_button{key=\"1/8\";label=\"1/8\";}\n"
  29. ":radio_button{key=\"1/4\";label=\"1/4\";}\n"
  30. ":radio_button{key=\"3/8\";label=\"3/8\";}\n"
  31. ":radio_button{key=\"1/2\";label=\"1/2\";}\n"
  32. ":radio_button{key=\"3/4\";label=\"3/4\";}\n"
  33. "}\n"
  34. "}\n"
  35. ":edit_box{key=\"GYXH\";label=\"管牙型号\";}\n"
  36. ":row{\n"
  37. ":button{key=\"IN\";label=\"插入引线标注\";}\n"
  38. ":button{is_cancel=true;key=\"cancel\";label=\"取消\";}\n"
  39. "}\n"
  40. "}\n"
  41. )
  42. (princ stream filen)
  43. )
  44. (close filen)
  45. tempname
  46. )))
  47. (setq dclid (load_dialog dclname))  
  48. (if (not (new_dialog "test" dclid)) (progn (alert "dcl对话框加载失败.")(exit)))
  49. (if (null #gydata#)
  50.   (setq #gydata# (list (list "GY" "PT")(list "XH" "1/8")(list "GYXH" "PT1/8")))
  51. )
  52. (set_tile "GY"   (cadr(assoc "GY"   #gydata#)))
  53. (set_tile "XH"   (cadr(assoc "XH"   #gydata#)))
  54. (set_tile "GYXH" (cadr(assoc "GYXH" #gydata#)))

  55. (action_tile "GY"   "(act-dcl)")
  56. (action_tile "XH"   "(act-dcl)")
  57. (action_tile "GYXH" "(act-dcl-gyxh)")

  58. (action_tile "IN"   "(act-dcl-in)")
  59. (action_tile "cancel" "(done_dialog 0)")

  60. (start_dialog)
  61. (unload_dialog dclid)
  62. (vl-file-delete dclname)
  63. )

点评

编辑大人,咱明经对TEST没有着色,可TEST这在VLSIP是保留字符,所以不能使用TEST来做命令名哦!  发表于 2012-3-6 11:01
回复

使用道具 举报

 楼主| 发表于 2012-3-6 10:06:22 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-3-6 10:58:36 | 显示全部楼层
谢谢您了!水平真高,有您的范例我就能照着仿写,谢谢
回复

使用道具 举报

 楼主| 发表于 2012-3-6 10:59:19 | 显示全部楼层
好像有BUG,自己也能回答自己的帖子!
回复

使用道具 举报

 楼主| 发表于 2012-3-6 13:55:52 | 显示全部楼层
请问如何再加两个编辑框,此编辑框的内容也要随你的选择而变化,
在路径下有20个文件,文件名为pt1/8.dat   pt1/4.dat...pt3/4.dat......BSPT1/8.dat...BSPT3/4.dat共20个文件,使用函数myread可将文件的内容读成表,第行为一个元素。如'(1.3 2.6 2.8 12).
两个单选按钮组成一个文件名变量,使用函数myread将此文件中的内容读出来,返回的表的第2、第4个元素分别赋值给edit_box1和edit_box2
回复

使用道具 举报

 楼主| 发表于 2012-3-6 14:00:15 | 显示全部楼层
myread函数我已经自定义好了,你在程序中只用调用就行了,
;|需要输入文件路径,返回文件按行读取读取后的列表=====================================|;

(defun str-lst (lj / data_list ff data)
  (setq        data_list '()
        ff          (open lj "r")
        data          (read-line ff)
  )
  (while data
    (setq data_list (cons data data_list)
          data            (read-line ff)
    )
  )
  (reverse data_list)                        ;对表倒序排序,;输出列表
)                                        ;edn defun
回复

使用道具 举报

 楼主| 发表于 2012-3-6 16:58:21 | 显示全部楼层
xshrimp 发表于 2012-3-6 09:55

已完成了,谢谢你,主要在act-dcl中加代码就行了
回复

使用道具 举报

 楼主| 发表于 2012-4-7 13:45:16 | 显示全部楼层
xshrimp 发表于 2012-3-6 09:55

程序目前好像只对key=XH和key=GY这两个key作用,而key=1/8、key=PT等都不起作用了,
(action_tile "PT" "(show22)")此句用来显示幻灯片,可是不起作用了,请问如何解决?
回复

使用道具 举报

发表于 2012-4-11 17:49:05 | 显示全部楼层
厉害  对DCL  一直没下功夫学习
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-24 09:32 , Processed in 0.513507 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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