明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 349|回复: 5

[提问] 关于dcl控件动作触发问题

[复制链接]
发表于 2024-7-27 12:59:24 | 显示全部楼层 |阅读模式
本帖最后由 aws 于 2024-7-27 13:00 编辑

  1. (defun c:tt()
  2.   (setq lst
  3.     '(
  4.        "diy:dialog{"
  5.        "label = \"dcl名称\";"
  6.        ":popup_list{"
  7.        "label = \"选择材料:\";"
  8.        "key = \"k-a\";"
  9.        "width = 40;"
  10.        "fixed_width = true;"
  11.        "list = \"钢铁\\n玻璃\\n木头\";"
  12.        "}"
  13.        ":edit_box{"
  14.        "key = \"k-b\";"
  15.        "label = \"属性\";"
  16.        "value = 1;"
  17.        "}"
  18.        ":button{"
  19.        "key = \"k-c\";"
  20.        "label = \"拾取曲线\";"
  21.        "}"
  22.        ":edit_box{"
  23.        "key = \"k-d\";"
  24.        "label = \"图元名\";"
  25.       
  26.        "}"
  27.        "ok_cancel;"
  28.        "}"
  29.      )
  30.   )
  31.   (setq dcl_file(vl-filename-mktemp nil nil ".dcl"))
  32.   (setq file(open dcl_file "w"))
  33.   (foreach str lst(write-line str file))
  34.   (close file)
  35.   (setq dcl_id(load_dialog dcl_file))
  36.   (vl-file-delete dcl_file)
  37.   (new_dialog "diy" dcl_id)
  38.   
  39.   (action_tile "ok" "(done_dialog 1)")
  40.   (action_tile "cancel" "(done_dialog 0)")
  41.   (action_tile "k-a" "(popup(setq v $value))")
  42.   (action_tile "k-c" "(button)")
  43.   
  44.   (setq idd(start_dialog))
  45.   (unload_dialog dcl_id)
  46.   (princ)
  47. )
  48. ;---下拉菜单触发
  49. (defun popup(v /)
  50.   (cond
  51.     ((= v 0)(set_tile "k-b" 1))
  52.     ((= v 1)(set_tile "k-b" 2))
  53.     ((= v 2)(set_tile "k-b" 3))
  54.   )
  55. )
  56. ;---按钮菜单触发
  57. (defun button(v /)
  58.     (set_tile "k-d"(car(entsel "选取一根曲线:")))
  59. )
  60. 请教大家,这是一个错误的程序,我想要实现这样的功能,请问怎么修改呢?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-7-27 21:39:40 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq lst '("diy:dialog{label=\"dcl名称\";"
  3.                ":popup_list{label=\"选择材料:\";key=\"k-a\";width=40;fixed_width=true;list=\"钢铁\\n玻璃\\n木头\";}"
  4.                ":edit_box{key=\"k-b\";label=\"属性\";value=1;}"
  5.                ":button{key=\"k-c\";label=\"拾取曲线\";}"
  6.                ":edit_box{key=\"k-d\";label=\"图元名\";}"
  7.                "ok_cancel;}"
  8.                )
  9.         dcl_file (vl-filename-mktemp nil nil ".dcl")
  10.         file (open dcl_file "w")
  11.   )
  12.   (foreach str lst (write-line str file))
  13.   (close file)
  14.   (setq dcl_id (load_dialog dcl_file))
  15.   (vl-file-delete dcl_file)
  16.   (new_dialog "diy" dcl_id)
  17.   (action_tile "ok" "(done_dialog 1)")
  18.   (action_tile "cancel" "(done_dialog 0)")
  19.   (action_tile "k-a" "(popup(setq v $value))")
  20.   (action_tile "k-c" "(done_dialog 2)")
  21.   (if s1
  22.     (set_tile "k-d" (vl-prin1-to-string s1))
  23.   )
  24.   (setq id (start_dialog))
  25.   (unload_dialog dcl_id)
  26.   (cond ((= id 2)
  27.          (if (setq s1 (car (entsel "选取一根曲线: ")))
  28.            (c:tt)
  29.          )
  30.         )
  31.   )
  32.   (princ)
  33. )
  34. (defun popup (v /)
  35.   (cond ((= v "0") (set_tile "k-b" "1"))
  36.         ((= v "1") (set_tile "k-b" "2"))
  37.         ((= v "2") (set_tile "k-b" "3"))
  38.   )
  39. )
 楼主| 发表于 2024-7-27 13:07:43 | 显示全部楼层
请教大家,这是一个错误的程序,我想要实现这样的功能,请问怎么修改呢?
 楼主| 发表于 2024-7-27 21:45:32 | 显示全部楼层

感谢院长!又学到
发表于 2024-7-27 21:57:48 | 显示全部楼层
  1. (defun c:tt (/ Dlst ll1 ll2)
  2.   (defun main-pro () (princ))
  3.   (defun bu1 ()
  4.     (if        (setq s1 (car (entsel "选取一根曲线: ")))
  5.       (setq k-d (vl-prin1-to-string s1))
  6.       (setq k-d "")
  7.     )
  8.     (sub)
  9.   )
  10.   (defun ak-a ()
  11.     (xyp-Dcl-Gettile '("k-a"))
  12.     (cond ((= k-a "0") (set_tile "k-b" "1"))
  13.           ((= k-a "1") (set_tile "k-b" "2"))
  14.           ((= k-a "2") (set_tile "k-b" "3"))
  15.     )
  16.   )
  17.   (defun sub ()
  18.     (setq ll1 '(k-a k-b k-d)
  19.           ll2 '("0" "" "")
  20.     )
  21.     (xyp-initSet ll1 ll2)
  22.     (setq lst1 '("钢铁" "玻璃" "木头")
  23.           Dlst '(("k-a" "材料" "poplist" "lst1" "20" "(ak-a)")
  24.                  ("k-b" "属性" "str" "20")
  25.                  ("k-c" "拾取曲线" "button" "(bu1)")
  26.                  ("k-d" "图元名" "str" "20")
  27.                 )
  28.     )
  29.     (if        (= (xyp-Dcl-Init Dlst "【DCL练习】" t) 1)
  30.       (main-pro)
  31.     )
  32.   )
  33.   (sub)
  34.   (princ)
  35. )
发表于 2024-7-28 19:48:39 | 显示全部楼层
多谢分享  学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-8 10:04 , Processed in 0.285687 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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