明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 171|回复: 3

求助

[复制链接]
发表于 昨天 18:52 | 显示全部楼层 |阅读模式
哪位大佬能出手,优化下我这个DCL,我想要右边拾取到数值后联动到对应左边的对话框里,不知道怎么写,望大佬们能指导下。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 昨天 19:48 | 显示全部楼层
(defun c:tt (/ *get-lujing* dcl_id get-lujing re sg-lt-yk-getdata-zhinengwenzitihuan str ent txt old-dcl)
  (or sg-lt-xdx (setq sg-lt-xdx ""))
  (or sg-lt-jdx (setq sg-lt-jdx "******"))
  
  (defun sg-lt-yk-getdata-zhinengwenzitihuan ()
    (setq sg-lt-xdx (get_tile "sg-lt-xdx"))
    (setq sg-lt-jdx (get_tile "sg-lt-jdx"))
  )
  
  (defun get-text-from-user (key / ent txt)
    (princ "\n请在屏幕上选择文字或数字: ")
    (if (setq ent (entsel))
      (progn
        (setq txt (cdr (assoc 1 (entget (car ent)))))
        (if (= key "sqjdx")
          (setq sg-lt-jdx txt)
          (setq sg-lt-xdx txt)
        )
        txt
      )
    )
  )
  
  (setq old-dcl (findfile "DclTemp.dcl"))
  (if old-dcl (vl-file-delete old-dcl))
  
  (if (= (setq dcl_id (load_dialog (sg-lt-yk-make-dcl-zhinengwenzitihuan))) 0)
    (progn (alert "\n无法显示对话框!") (exit))
  )
  
  (setq re 4)
  
  (while (>= re 2)
    (if (not (new_dialog "dllC" dcl_id))
      (progn (alert "\n无法显示对话框!") (exit))
    )
   
    (set_tile "sg-lt-xdx" sg-lt-xdx)
    (set_tile "sg-lt-jdx" sg-lt-jdx)
   
    (action_tile "sqjdx" "(done_dialog 2)")
    (action_tile "sqxdx" "(done_dialog 3)")
    (action_tile "accept" "(sg-lt-yk-getdata-zhinengwenzitihuan)(done_dialog 1)")
    (action_tile "cancel" "(done_dialog 0)")
   
    (setq re (start_dialog))
   
    (cond
      ((= re 2) (get-text-from-user "sqjdx"))  
      ((= re 3) (get-text-from-user "sqxdx"))  
      ((= re 1) (sg-lt-zhinengwenzitihuan))  
      ((= re 0) nil)                          
    )
  )
  
  (unload_dialog dcl_id)
  (princ)
)

(defun sg-lt-yk-make-dcl-zhinengwenzitihuan (/ lst_str str file f)
  (setq lst_str '(
    "dllC:dialog"
    "{ // start dcl"
    "label = \"文字替换\";"
    ":column{"
    ":row{"
    ":row{:edit_box{label=\"旧对象:\";key=\"sg-lt-jdx\"; edit_width=10;}}"
    ":button{label = \"拾取\";key = \"sqjdx\" ;}}"
    ":row{"
    ":row{:edit_box{label=\"新对象:\";key=\"sg-lt-xdx\"; edit_width=10;}}"       
    ":button{label = \"拾取\";key = \"sqxdx\" ;}}"                                                                 
    "}"
    ":row{"
    ":button{label=\"确定(&Q)\";key=\"accept\";is_default=true;height=3;}"                                                                                         
    ":button{label=\"取消(&C)\";key=\"cancel\";is_cancel=true;height=3;}"
    "}"
    "fixed_width=true;"
    "alignment=left;"
    "} "        
  ))
  
  (setq file (vl-filename-mktemp "DclTemp.dcl"))
  (setq f (open file "w"))
  (foreach str lst_str
    (princ "\n" f)
    (princ str f)
  )
  (close f)
  file
)注释了你的幻灯片文件路径,导致程序报错无法加载,你看看是不是这样
回复 支持 反对

使用道具 举报

发表于 昨天 20:09 | 显示全部楼层
  1. (defun C:MM ()
  2.   (vl-load-com)
  3.   (setq texta "")
  4.   (while
  5.     (progn
  6.       (setq tmp-dcl-file-name (vl-filename-mktemp nil nil ".dcl"))
  7.       (setq dcl_file (open tmp-dcl-file-name "w"))
  8.       (foreach x
  9.         '(
  10.           "ZW:dialog {"
  11.           "label = "测试";"
  12.           ":edit_box { key = "AAA";}"
  13.           ":button { label = "拾取"; key = "CCC"; }"
  14.           "ok_cancel;"
  15.           "}"
  16.         )
  17.         (write-line x dcl_file)
  18.       )
  19.       (close dcl_file)
  20.       (setq dcl_id (load_dialog tmp-dcl-file-name))
  21.       (vl-file-delete tmp-dcl-file-name)
  22.       (if (not (new_dialog "ZW" dcl_id))(exit))
  23.       (set_tile "AAA" texta)
  24.       (action_tile "CCC" "(done_dialog 2)")
  25.       (action_tile "accept" "(done_dialog 1)")
  26.       (action_tile "cancel" "(done_dialog 0)")
  27.       (setq AA (start_dialog))
  28.       (unload_dialog dcl_id)
  29.       (cond
  30.       ((= AA 2)(setq texta (YYDS)))
  31.       (T nil)
  32.       )  
  33.       )
  34.     )
  35.   (princ)
  36.   )
  37. (defun YYDS ()
  38.   (setq ent (entsel "\n选择一个文字对象: "))
  39.   (if ent
  40.     (progn
  41.       (setq data (entget (car ent)))
  42.       (cdr (assoc 1 data))
  43.     )
  44.   )
  45. )



回复 支持 反对

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
xiao1984 发表于 2025-4-21 19:48
(defun c:tt (/ *get-lujing* dcl_id get-lujing re sg-lt-yk-getdata-zhinengwenzitihuan str ent txt old ...

感谢大佬,妙笔生花
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 12:49 , Processed in 0.168131 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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