找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1625|回复: 6

[弹指神通]:如何另对话框显示前次输入值???

[复制链接]
发表于 2008-6-15 20:51:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
搞了一整天都是点"保存"或"取消"后再运行"GETDATA"才能返回前一次输入的"P""D""N""R"值,请问如何实现点击"选择"或"继续选择"后显示的对话框中显示前一次输入的"P""D""N""R"值呢,请大家指教.谢谢

DCL文件:

getdata : dialog {
  label="提取多义线顶点坐标";
  : boxed_column {
   label="列表";
   : list_box {key="list1";width=20;height=20;}
   : column {
    : row {
     : edit_box {label="P:";key="P";edit_width=3;}
     : edit_box {label="D:";key="D";edit_width=6;}
     : row {
      : edit_box {label="N:";key="N";edit_width=3;}
     }
     : edit_box {label="R:";key="R";edit_width=6;}
    }
   }
  }
  :row {
   :retirement_button {label="选择..";key="xz";}
   :retirement_button {label="继续选择..";key="jxxz";}
   :retirement_button {label="保存..";key="accept";is_default=true;}
   :button{label="取消";key="cancel";is_cancel=true;}
  }
}

LISP文件:

(defun setdialog ()
  (set_tile "P" (if p (itoa p) "1"))
  (set_tile "D" (if D (rtos D 2) "508"))
  (set_tile "N" (if N1 (itoa N1) "4"))
  (set_tile "R" (if R1 (rtos R1 2) "500"))
  (mode_tile "jxxz" 1)
  (mode_tile "bcsj" 1)
)
(defun GETVALOFDIA ()
  (setq p (read (get_tile "P"))
        d (read (get_tile "D"))
        n1 (read (get_tile "N"))
        r1 (read (get_tile "R")))
)
(defun showbutton ()
  (mode_tile "jxxz" 0)
  (mode_tile "bcsj" 0)
)
(defun showlist (/ i lst)
  (setq i 0)
  (start_list "list1")
  (repeat (length lbl)
   (setq lst (nth i lbl))
   (add_list (car lst))
   (MAPCAR (quote ADD_LIST) (cadr lst))
   (setq i (1+ i))
  )
  (end_list)
)
(DEFUN C:getdata (
;/ P D SST H fi N1 I J K NAME DXF TYPE_LINE XY_COUNT F x y PT1 R1
)
  (setq lbl (list) re 5)
  (IF (> (SETQ DCL_ID (LOAD_DIALOG "getdata")) 0) (progn
   (while (> re 1)
    (IF (NEW_DIALOG "getdata" DCL_ID "") (PROGN
     (if (= (length lbl) 0) (setdialog) (showlist))
     (action_tile "xz" "(showbutton)(getvalofdia)(done_dialog 2)")
     (action_tile "jxxz" "(getvalofdia)(done_dialog 3)")
     (action_tile "accept"  "(GETVALOFDIA) (DONE_DIALOG 1)")
     (action_tile "cancel" "(DONE_DIALOG 0)")
     (SETQ RE (START_DIALOG))
     (if (or (= RE 2) (= RE 3)) (progn
      (if (= re 2) (setq lbl (list)))
      (PROMPT " \n选多义线:")
      (if (SETQ SST (SSGET '((0 . "*POLYLINE")))) (progn
       (SETQ J 0 te (list))
       (REPEAT (SSLENGTH SST)
        (setq ta (list (strcat (itoa p) "," (rtos D 2 3) "," (rtos R1 2 3) "," (itoa N1))))
        (SETQ NAME (SSNAME SST J))
        (SETQ J (1+ J))
        (SETQ DXF (ENTGET NAME))
        (SETQ TYPE_LINE (CDR (ASSOC 0 DXF)))
        (SETQ XY_COUNT (EVAL (READ (STRCAT "(" TYPE_LINE " DXF NAME)"))))
        (setq k 0 tl (list))
        (repeat (length xy_count)
         (setq y (nth k xy_count))
         (setq h (caddr y))
         (setq x (cadr y))
         (setq y (car y))
         (setq tl (cons (strcat (rtos y 2 3) "," (rtos x 2 3) "," (rtos h 2 3)) tl))
         (setq k (1+ k))
        )
        (setq te (append te (list (append ta (list (reverse tl))))))
        (setq p (1+ p))
       )
       (setq lbl (append lbl te))
      ))
     ))
    )
     (ALERT "Unable to display dialog box!\n无法显示对话框!")
    )
   )
    (UNLOAD_DIALOG DCL_ID)
   )
   (ALERT "Unable to open dialog box!\n无法装载对话框!")
  )
  (if (= RE 1) (progn
   (setq fn (if fn fn ""))
   (setq fn (if fn fn "") fn (getfiled "写出文件" fn "Txt" 1))
   (setq f (open fn "w"))
   (setq i 0)
   (repeat (length lbl)
    (setq lcl (nth i lbl) i (1+ i))
    (princ (car lcl) f)
    (princ "," f)
    (setq ldl (cadr lcl) j 0)
    (repeat (length ldl)
     (princ (if (= j 0) "" ",") f)
     (princ (nth j ldl) f)
     (setq j (1+ j))
    )
    (princ "\n" f)
   )
   (close f)
  ))
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-6-22 21:16:03 | 显示全部楼层
没有时间仔细看你的程序,看了你的文字叙述,你可能是需要在程序推出以前保存一些数据,再次启动则回复使用,这个问题恐怕需要将你的数据写入磁盘,或者写入cad预留的变量(关闭cad后失效)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2008-6-23 21:33:36 | 显示全部楼层
(done_dialog 3)和(done_dialog 2)对应的处理程序需要保存当前值到变量,每次启动对话框前,判断变量的值,对对话框进行初始化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-6-24 18:06:26 | 显示全部楼层
在赋初值时 (if (/=  "变量"  nil)  (set_tile "控件"  "变量"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-6-26 07:44:31 | 显示全部楼层
  1. [FONT=courier new];; 顶点列表
  2. (defun c:test ()
  3.   (CMDLA0)
  4.   (xyp-initSet '(p1) '("0"))
  5.   (defun aaa (/ s1 ptn)
  6.     (if        (and (setq s1 (car (entsel "\n选择多段线: ")))
  7.              (member (xyp-get-dxf 0 s1) '("POLYLINE" "LWPOLYLINE"))
  8.         )
  9.       (progn (setq ptn        (xyp-get-Vertexs s1 0)
  10.                    plst        '()
  11.              )
  12.              (foreach pt ptn
  13.                (setq plst (cons (xyp-2str pt) plst))
  14.              )
  15.       )
  16.     )
  17.     (main)
  18.   )
  19.   (defun bbb (/ ss i s1)
  20.     (setq ss (ssget '((0 . "*POLYLINE")))
  21.           i  -1
  22.     )
  23.     (while (setq s1 (ssname ss (setq i (1+ i))))
  24.       (foreach pt (xyp-get-Vertexs s1 0)
  25.         (setq plst (cons (xyp-2str pt) plst))
  26.       )
  27.     )
  28.     (main)
  29.   )
  30.   (defun ccc ()
  31.     (setq plst '())
  32.     (main)
  33.   )
  34.   (defun main (/ Ilst)
  35.     (if        (null plst)
  36.       (setq plst '())
  37.     )
  38.     (setq Ilst '(("p1" "列表" "list" "plst" "24" "16")
  39.                  (nil nil ":row{")
  40.                  ("b1" "选择" "button" "(aaa)")
  41.                  ("b2" "继续选择" "button" "(bbb)")
  42.                  ("b3" "清空" "button" "(ccc)")
  43.                  (nil nil "}")
  44.                 )
  45.     )
  46.     (if        (= (xyp-Dcl-Init Ilst "【顶点列表】" t) 1)
  47.       (princ "ok")                                  ;另添加写出顶点到文件内容
  48.     )
  49.   )
  50.   (main)
  51.   (CMDLA1)
  52. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-27 23:33:50 | 显示全部楼层
感谢大家的热心回复,问题解决了...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 22个

财富等级: 恭喜发财

发表于 2014-1-3 07:19:13 | 显示全部楼层
路过看一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-7-8 23:43 , Processed in 0.196040 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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