搞了一整天都是点"保存"或"取消"后再运行"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) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun POLYLINE (DXF E1 / XY E2 count_xy pd) (setq count_xy nil) (SETQ DXF (MEMBER (ASSOC 330 DXF) DXF)) (SETQ E2 (ENTNEXT E1)) (SETQ DXF (ENTGET E2)) (setq e1 (cdr (assoc 0 dxf))) (while (= e1 "VERTEX") (setq e1 (cdr (assoc 10 dxf))) (setq pd (cdr (assoc 70 dxf))) (if (/= pd 16) (setq count_xy (cons e1 count_xy))) (setq e1 e2) (SETQ E2 (ENTNEXT E1)) (SETQ DXF (ENTGET E2)) (setq e1 (cdr (assoc 0 dxf))) ) (setq COUNT_XY (reverse count_xy)) )
|