明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 602|回复: 4

[讨论] 文字输入

[复制链接]
发表于 2023-7-4 22:16 | 显示全部楼层 |阅读模式




  1. (vl-load-com)
  2. (defun c:TT(/ fname fn x dclid lin )
  3.   (setvar "CMDECHO" 0)
  4.   (vl-cmdf "undo" "be")
  5.   (setq fname (VL-FILENAME-MKTEMP nil nil ".dcl" ))
  6.   (setq fn (open fname "w" ))
  7.   (foreach x '(
  8.     "  __CHENJINYI__ : dialog{"
  9.     "  label="文字输入 V1.0";"
  10.     "     :column{"
  11.     "     :edit_box{label="文字输入:";key="_var1";edit_width=30;value="xxx";alignment=right;}"   
  12.     "     :boxed_row{"
  13.     "     :toggle{label="+系统时间";key="_var2";value=1;}"  
  14.     "     :ok_button{label="确定";key="accept";}"
  15.     "     :cancel_button{label="关闭";key="cancel";}"   
  16.     "     }"
  17.     "     }"
  18.     "}"
  19.     );end ;endlist
  20.     (princ x fn)
  21.     (write-line "" fn)
  22.   );end foreach
  23.   (close fn)  
  24.   
  25.   (setq fn (open fname "r" ))
  26.   (setq dclid (load_dialog fname))
  27.   
  28.   (while (or
  29.     (eq (substr (setq lin (vl-string-right-trim "" fn)" (vl-string-left-trim "(write-line "" (read-line fn))))1 2)"//" )
  30.     (eq (substr lin 1 (vl-string-search " " lin))"" )
  31.     (not (eq (substr lin (+ (vl-string-search " " lin) 1)9)" : dialog" ))
  32.     )
  33.   )
  34.   (new_dialog (substr lin 1 (vl-string-search " " lin))dclid)

  35.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  36.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;控件响应设计
  37.   (dcl_action '("accept" "cancel" "_var1" "_var2"))   
  38.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  39.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;文字输入
  40.   (cond ((= (start_dialog) 1)
  41.    
  42.     (princ)
  43.   ))
  44.   (unload_dialog dclid)
  45.   (close fn)
  46.   (vl-file-delete fname)
  47.   
  48.   (if (atoi _var2_bak)
  49.     (progn
  50.       (setq p0 (getpoint "选择文字插入点:"))
  51.       (entmake
  52.         (list
  53.           '(0 . "TEXT")
  54.           '(100 . "AcDbEntity")
  55.           '(100 . "AcDbText")
  56.           '(8 . "文字说明")
  57.           '(40 . 3.0)
  58.           '(41 . 0.7)
  59.           '(62 . 7)   
  60.           '(7   . "hcs")      
  61.           (cons 1 _var1_bak)
  62.           (cons 10 p0)
  63.       
  64.         )
  65.       )   
  66.     )
  67.     (progn
  68.       (setq p0 (getpoint "选择文字插入点:"))
  69.       (entmake
  70.         (list
  71.           '(0 . "TEXT")
  72.           '(100 . "AcDbEntity")
  73.           '(100 . "AcDbText")
  74.           '(8 . "文字说明")
  75.           '(40 . 3.0)
  76.           '(41 . 0.7)
  77.           '(62 . 7)   
  78.           '(7   . "hcs")      
  79.           (cons 1 _var1_bak)
  80.           (cons 10 p0)
  81.       
  82.         )
  83.       )   
  84.     )   
  85.   )  
  86.   (vl-cmdf "undo" "e")
  87.   (princ)
  88. )
  89. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  90. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  91. ;;每个控件赋一个变量xx_bak
  92. (defun dcl_getkeys (keys / key)
  93.   (foreach key keys
  94.     (set (read (strcat key "_bak"))(get_tile key)))
  95. )
  96. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  97. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  98. ;;全部控件的点击动作触发
  99. (defun action_keys (key value)
  100.   (cond
  101.     ((= key "accept")
  102.       (dcl_getkeys '("_var1" "_var2"))
  103.       (t (done_dialog 1))
  104.     )      
  105.     ((= key "cancel")(done_dialog 0))
  106.   )
  107. )
  108. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  109. ;;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  110. ;;还原控件+控件触发动作    ;by nonsmall
  111. (defun dcl_action (keyslst)
  112.   (foreach key keyslst
  113.     (if (eval (read (strcat key "_bak")))(set_tile key (eval (read (strcat key "_bak")))))
  114.     (action_tile key "(action_keys $key $value)")
  115.   )
  116. )

这段代码运行有问题,按下OK 后出现函数错误,麻烦亲们解答,谢谢

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-7-4 22:53 | 显示全部楼层
,自己先抢个沙发
发表于 2023-7-5 08:44 | 显示全部楼层
action_keys内cond语句错误

  1. (defun action_keys (key value)
  2.   (cond
  3.     ((= key "accept")
  4.      (dcl_getkeys '("_var1" "_var2"))
  5.      (done_dialog 1))
  6.     ((= key "cancel")(done_dialog 0))
  7.   )
  8. )
 楼主| 发表于 2023-7-5 09:22 | 显示全部楼层
llsheng_73 发表于 2023-7-5 08:44
action_keys内cond语句错误

一大早就收到您的解答,谢谢大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-1 03:22 , Processed in 0.235637 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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