Efeezy 发表于 2022-7-6 08:50:45

DDNUB请帮忙!加载错误

我正在运行Autocad 2011,我遇到了一个加载错误,我在Autocad 2005中使用过这个lisp,并且工作得很好,仍然像ti一样,比express tols中的新自动编号更好
 
 
;DDNUMB.LSP for release 15
;Auto numbers text strings.
;Written by: S. Restmeyer 3/01

;;;
;;;----------------------ERROR FUNCTION----------------------------
;;;
(DEFUN ERR (S)                                ;if an error (such as CTRL-C)
                                ;occurs while this command is active...
(if (not (member s '("console break" "Function cancelled")))
   (princ (strcat "\nError: " s))
)
(command "_.UNDO" "_E")                ;end any outstanding UNDO group
(setvar "cmdecho" cmd)                ;restore saved mode
(setq *error* olderr)
(princ)
)
;;;---------------------- MAIN PROGRAM ----------------------------
;;;
(defun C:DDNUMB (/ CMD dcl_id1 olderr)
(setq        olderr        *error*
*error*        err
)
(SETQ CMD (GETVAR "CMDECHO"))
(command "_.UNDO" "_G")
(setvar "cmdecho" 0)
(defun set_replace ()
   (cond
   ((= (get_tile "do_replace") "0")
      (set_tile "sort_type" "0")
      (mode_tile "sort_type" 1)
      (set_tile "start_no" " ")
      (mode_tile "start_no" 1)
      (set_tile "txt_inc" " ")
      (mode_tile "txt_inc" 1)
   )
   )
   (cond
   ((= (get_tile "do_replace") "1")
      (mode_tile "sort_type" 0)
      (mode_tile "start_no" 0)
      (mode_tile "txt_inc" 0)
      (if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
      (if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
      (if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
   )
   )
   )
(defun my_help ()
   (setq file_name (findfile "autonumb.pdf"))
   (startapp "acrobat.exe" (strcat "\"" file_name "\""))
   )
      (defun get_data ()
(setq suffix (get_tile "suffix"))
(setq prefix (get_tile "prefix"))
(setq start_no (atoi (get_tile "start_no")))
(setq txt_inc (atoi (get_tile "txt_inc")))
(setq sort_type (get_tile "sort_type"))
(setq do_replace (get_tile "do_replace"))
   )
;;;-------------------------------------------------------------------
;;;-----------THIS SECTION RETRIEVES USER INPUT INFORMATION------------
;;;
    (setq dcl_id1 (load_dialog "autonumb.dcl"))
   (if (not (new_dialog "ddstart" dcl_id1))
(exit)
   )
(setq sort_list '("Selection" "Top-Bottom" "Left-Right" "Bottom-Top" "Right-Left"))
        (start_list "sort_type")
(mapcar 'add_list sort_list)
        (end_list)
(if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
(if prefix
   (set_tile "prefix" prefix)
   )
(if suffix
   (set_tile "suffix" suffix)
   )
(if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
(if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
   (action_tile "do_replace" "(set_replace)")
   (action_tile "numb_hlp" "(my_help)")
   (action_tile "accept" "(setq start_ok T)(get_data)(done_dialog 1)")
   (action_tile "cancel" "(setq start_ok nil)(done_dialog 0)")
   (start_dialog)
   (unload_dialog dcl_id1)
;;;-------------------------------------------------------------------
;;;---------------THIS SECTION MODIFIES SELECTED TEXT-----------------
;;;
(defun get_txt (/ sset sset1 sset2 sset3 test num llen temp old)
   (setq sset (ssget '((0 . "TEXT"))))
   (setq num 0)
(if (= do_replace "1")
    (progn
   (cond
   ((= sort_type "0")
    (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq num (+ num 1))
      )
      )
   ((= sort_type "1")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   ((= sort_type "2")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
   (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "3")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "4")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   )
   )
    (progn
      (setq start_no nil)
      (setq txt_inc nil)
   (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcatprefix (cdr old) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq num (+ num 1))
      )
      )
    )
   )
(if start_ok
   (get_txt)
)
(setq *error* olderr)
(setvar "cmdecho" cmd)
   )


Tharwat 发表于 2022-7-6 09:02:21

快速阅读此代码发布

Efeezy 发表于 2022-7-6 09:05:18

;DDNUMB.LSP for release 15
;Auto numbers text strings.
;Written by: S. Restmeyer 3/01

;;;
;;;----------------------ERROR FUNCTION----------------------------
;;;
(DEFUN ERR (S)                                ;if an error (such as CTRL-C)
                                ;occurs while this command is active...
(if (not (member s '("console break" "Function cancelled")))
   (princ (strcat "\nError: " s))
)
(command "_.UNDO" "_E")                ;end any outstanding UNDO group
(setvar "cmdecho" cmd)                ;restore saved mode
(setq *error* olderr)
(princ)
)
;;;---------------------- MAIN PROGRAM ----------------------------
;;;
(defun C:DDNUMB (/ CMD dcl_id1 olderr)
(setq        olderr        *error*
*error*        err
)
(SETQ CMD (GETVAR "CMDECHO"))
(command "_.UNDO" "_G")
(setvar "cmdecho" 0)
(defun set_replace ()
   (cond
   ((= (get_tile "do_replace") "0")
      (set_tile "sort_type" "0")
      (mode_tile "sort_type" 1)
      (set_tile "start_no" " ")
      (mode_tile "start_no" 1)
      (set_tile "txt_inc" " ")
      (mode_tile "txt_inc" 1)
   )
   )
   (cond
   ((= (get_tile "do_replace") "1")
      (mode_tile "sort_type" 0)
      (mode_tile "start_no" 0)
      (mode_tile "txt_inc" 0)
      (if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
      (if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
      (if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
   )
   )
   )
(defun my_help ()
   (setq file_name (findfile "autonumb.pdf"))
   (startapp "acrobat.exe" (strcat "\"" file_name "\""))
   )
      (defun get_data ()
(setq suffix (get_tile "suffix"))
(setq prefix (get_tile "prefix"))
(setq start_no (atoi (get_tile "start_no")))
(setq txt_inc (atoi (get_tile "txt_inc")))
(setq sort_type (get_tile "sort_type"))
(setq do_replace (get_tile "do_replace"))
   )
;;;-------------------------------------------------------------------
;;;-----------THIS SECTION RETRIEVES USER INPUT INFORMATION------------
;;;
    (setq dcl_id1 (load_dialog "autonumb.dcl"))
   (if (not (new_dialog "ddstart" dcl_id1))
(exit)
   )
(setq sort_list '("Selection" "Top-Bottom" "Left-Right" "Bottom-Top" "Right-Left"))
        (start_list "sort_type")
(mapcar 'add_list sort_list)
        (end_list)
(if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
(if prefix
   (set_tile "prefix" prefix)
   )
(if suffix
   (set_tile "suffix" suffix)
   )
(if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
(if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
   (action_tile "do_replace" "(set_replace)")
   (action_tile "numb_hlp" "(my_help)")
   (action_tile "accept" "(setq start_ok T)(get_data)(done_dialog 1)")
   (action_tile "cancel" "(setq start_ok nil)(done_dialog 0)")
   (start_dialog)
   (unload_dialog dcl_id1)
;;;-------------------------------------------------------------------
;;;---------------THIS SECTION MODIFIES SELECTED TEXT-----------------
;;;
(defun get_txt (/ sset sset1 sset2 sset3 test num llen temp old)
   (setq sset (ssget '((0 . "TEXT"))))
   (setq num 0)
(if (= do_replace "1")
    (progn
   (cond
   ((= sort_type "0")
    (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq num (+ num 1))
      )
      )
   ((= sort_type "1")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   ((= sort_type "2")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
   (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "3")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "4")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   )
   )
    (progn
      (setq start_no nil)
      (setq txt_inc nil)
   (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcatprefix (cdr old) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq num (+ num 1))
      )
      )
    )
   )
(if start_ok
   (get_txt)
)
(setq *error* olderr)
(setvar "cmdecho" cmd)
   )


Hippe013 发表于 2022-7-6 09:08:49

你能把自动麻醉贴出来吗。dcl文件?也许你只需要将该文件添加到你的支持文件夹中。只是一个想法,没有深入思考。

Efeezy 发表于 2022-7-6 09:20:47

那么我用这个文件做什么,或者我需要做什么?我已经好几年没有在新电脑上加载这个了。。。。
//----------------------------------------------------------------------------
//
// Corresponding dialogue for DDNUMB.LSP
//
//----------------------------------------------------------------------------

//dcl_settings : default_dcl_settings { audit_level = 3; }


ddstart : dialog {
    label = "Auto Number";
initial_focus = "prefix";
        : row {
        : boxed_column {
                fixed_width = true;
                label = "&Prefix";
                        : edit_box {
                                key = "prefix";
                                mnemonic = "P";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Start &No";
                        : edit_box {
                                key = "start_no";
                                mnemonic = "N";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "&Suffix";
                        : edit_box {
                                key = "suffix";
                                mnemonic = "S";
                                fixed_width = true;
                                   }
                        }
                }
: row {
        : boxed_column {
                fixed_width = true;
                label = "&Increment";
                        : edit_box {
                                key = "txt_inc";
                                mnemonic = "I";
                                fixed_width = true;
                                   }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Sort &By";
                        : popup_list {
                                key = "sort_type";
                                width = 13;
                                fixed_width = true;
                                }
                        }
        : toggle {
                label = "Replace";
                key = "do_replace";
                value = 1;
                }
        }
        spacer_1;
        : row {
ok_cancel;
                : button {
                        key = "numb_hlp";
                        label = "Help";
                        mnemonic = "H";
                        }
                }
        }

Efeezy 发表于 2022-7-6 09:23:33

我无法加载我的自动编号DDNUMB我已经尝试了工具加载应用程序。我在Autocad 2005中使用了lisp,现在在2011年尝试使用它。我做错了什么?
;DDNUMB.LSP for release 15
;Auto numbers text strings.
;Written by: S. Restmeyer 3/01

;;;
;;;----------------------ERROR FUNCTION----------------------------
;;;
(DEFUN ERR (S)                                ;if an error (such as CTRL-C)
                                ;occurs while this command is active...
(if (not (member s '("console break" "Function cancelled")))
   (princ (strcat "\nError: " s))
)
(command "_.UNDO" "_E")                ;end any outstanding UNDO group
(setvar "cmdecho" cmd)                ;restore saved mode
(setq *error* olderr)
(princ)
)
;;;---------------------- MAIN PROGRAM ----------------------------
;;;
(defun C:DDNUMB (/ CMD dcl_id1 olderr)
(setq        olderr        *error*
*error*        err
)
(SETQ CMD (GETVAR "CMDECHO"))
(command "_.UNDO" "_G")
(setvar "cmdecho" 0)
(defun set_replace ()
   (cond
   ((= (get_tile "do_replace") "0")
      (set_tile "sort_type" "0")
      (mode_tile "sort_type" 1)
      (set_tile "start_no" " ")
      (mode_tile "start_no" 1)
      (set_tile "txt_inc" " ")
      (mode_tile "txt_inc" 1)
   )
   )
   (cond
   ((= (get_tile "do_replace") "1")
      (mode_tile "sort_type" 0)
      (mode_tile "start_no" 0)
      (mode_tile "txt_inc" 0)
      (if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
      (if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
      (if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
   )
   )
   )
(defun my_help ()
   (setq file_name (findfile "autonumb.pdf"))
   (startapp "acrobat.exe" (strcat "\"" file_name "\""))
   )
      (defun get_data ()
(setq suffix (get_tile "suffix"))
(setq prefix (get_tile "prefix"))
(setq start_no (atoi (get_tile "start_no")))
(setq txt_inc (atoi (get_tile "txt_inc")))
(setq sort_type (get_tile "sort_type"))
(setq do_replace (get_tile "do_replace"))
   )
;;;-------------------------------------------------------------------
;;;-----------THIS SECTION RETRIEVES USER INPUT INFORMATION------------
;;;
    (setq dcl_id1 (load_dialog "autonumb.dcl"))
   (if (not (new_dialog "ddstart" dcl_id1))
(exit)
   )
(setq sort_list '("Selection" "Top-Bottom" "Left-Right" "Bottom-Top" "Right-Left"))
        (start_list "sort_type")
(mapcar 'add_list sort_list)
        (end_list)
(if sort_type
   (set_tile "sort_type" sort_type)
   (set_tile "sort_type" "0")
   )
(if prefix
   (set_tile "prefix" prefix)
   )
(if suffix
   (set_tile "suffix" suffix)
   )
(if start_no
   (set_tile "start_no" (rtos start_no 2 0))
   (set_tile "start_no" "1")
   )
(if txt_inc
   (set_tile "txt_inc" (rtos txt_inc 2 0))
   (set_tile "txt_inc" "1")
   )
   (action_tile "do_replace" "(set_replace)")
   (action_tile "numb_hlp" "(my_help)")
   (action_tile "accept" "(setq start_ok T)(get_data)(done_dialog 1)")
   (action_tile "cancel" "(setq start_ok nil)(done_dialog 0)")
   (start_dialog)
   (unload_dialog dcl_id1)
;;;-------------------------------------------------------------------
;;;---------------THIS SECTION MODIFIES SELECTED TEXT-----------------
;;;
(defun get_txt (/ sset sset1 sset2 sset3 test num llen temp old)
   (setq sset (ssget '((0 . "TEXT"))))
   (setq num 0)
(if (= do_replace "1")
    (progn
   (cond
   ((= sort_type "0")
    (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq num (+ num 1))
      )
      )
   ((= sort_type "1")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   ((= sort_type "2")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
   (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "3")
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen (- (length sset2) 1))
      (while (> llen -1)
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (caddr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (- llen 1))
      )
      )
   ((= sort_type "4")
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (list temp))
      (setq num (+ num 1))
    (while (< num (sslength sset))
      (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
      (setq sset1 (append sset1 (list temp)))
      (setq num (+ num 1))
      )
      (setq sset2 (list ""))
      (while (< (- (length sset2) 1) (sslength sset))
    (setq temp (apply 'max sset1))
    (setq sset2 (append sset2 (list temp)))
    (setq sset3 (list ""))
    (setq num (- (length sset1) 1))
   (while (> num -1)
(setq test (nth num sset1))
(if (not (member test sset2))
(setq sset3 (append sset3 (list test)))
)
(setq num (- num 1))
)
      (setq sset1 (cdr sset3))
   )
      (setq sset2 (cdr sset2))
      (setq llen 0)
      (while (< llen (length sset2))
(setq test (nth llen sset2))
(setq num 0)
(while (not (= (cadr (assoc 10 (entget (ssname sset num)))) test))
   (setq num (+ num 1))
   )
(setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcat prefix (rtos start_no 2 0) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq start_no (+ start_no txt_inc))
      (setq llen (+ llen 1))
      )
      )
   )
   )
    (progn
      (setq start_no nil)
      (setq txt_inc nil)
   (while (< num (sslength sset))
      (setq temp (entget (ssname sset num)))
      (setq old (assoc 1 temp))
(setq new (cons 1 (strcatprefix (cdr old) suffix)))
         (setq temp (subst new old temp))
         (entmod temp)
      (setq num (+ num 1))
      )
      )
    )
   )
(if start_ok
   (get_txt)
)
(setq *error* olderr)
(setvar "cmdecho" cmd)
   )


Efeezy 发表于 2022-7-6 09:30:13

添加到文件中的lisp。我该怎么办?DCL文件
 
//----------------------------------------------------------------------------
//
// Corresponding dialogue for DDNUMB.LSP
//
//----------------------------------------------------------------------------

//dcl_settings : default_dcl_settings { audit_level = 3; }


ddstart : dialog {
    label = "Auto Number";
initial_focus = "prefix";
        : row {
        : boxed_column {
                fixed_width = true;
                label = "&Prefix";
                        : edit_box {
                                key = "prefix";
                                mnemonic = "P";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Start &No";
                        : edit_box {
                                key = "start_no";
                                mnemonic = "N";
                                fixed_width = true;
                                 }
                        }
        : boxed_column {
                fixed_width = true;
                label = "&Suffix";
                        : edit_box {
                                key = "suffix";
                                mnemonic = "S";
                                fixed_width = true;
                                   }
                        }
                }
: row {
        : boxed_column {
                fixed_width = true;
                label = "&Increment";
                        : edit_box {
                                key = "txt_inc";
                                mnemonic = "I";
                                fixed_width = true;
                                   }
                        }
        : boxed_column {
                fixed_width = true;
                label = "Sort &By";
                        : popup_list {
                                key = "sort_type";
                                width = 13;
                                fixed_width = true;
                                }
                        }
        : toggle {
                label = "Replace";
                key = "do_replace";
                value = 1;
                }
        }
        spacer_1;
        : row {
ok_cancel;
                : button {
                        key = "numb_hlp";
                        label = "Help";
                        mnemonic = "H";
                        }
                }
        }

Efeezy 发表于 2022-7-6 09:34:10

我想出来了加载DCL文件:
C: \程序文件\ AutoCAD版本\支持

ketxu 发表于 2022-7-6 09:41:31

但是为什么你发了两次?
http://www.cadtutor.net/forum/showthread.php?63198-DDNUB请帮忙-加载错误

SLW210 发表于 2022-7-6 09:48:18

我组合了你的线程。请只发布同一个问题一次。
页: [1] 2
查看完整版本: DDNUB请帮忙!加载错误