TLHansen 发表于 2022-7-5 15:43:39

DDNUB。用于AutoCAD 2017的lsp

ddnumb了吗。lsp工作?我在工作中经常使用它,直到2016年升级到2017年。所以我甚至不用2017年。有ddnumb吗。2017年lsp?

TLHansen 发表于 2022-7-5 15:56:37

我用了DDNUB。lsp多年,它为我节省了很多时间。但它在2017年停止工作,所以我只使用2016年。是否已更新?

kpblc 发表于 2022-7-5 16:00:48

代码在哪里?

eldon 发表于 2022-7-5 16:12:26

cadalyst可能是来源。
 
我看到有一个dcl文件和lsp文件。AutoCad版本之间的路径是否有任何变化?
 
我看你是双重职务。你可以在两个帖子中找出任何答案。

Hippe013 发表于 2022-7-5 16:21:02

该lisp不依赖于版本。应该在2017年表现良好。

marko_ribar 发表于 2022-7-5 16:26:03

我认为如果你使用Windows 10,你应该将程序文件的只读文件夹改为完全控制读写。。。在那里你应该已经安装了你的ACAD,如果ACAD下的支持文件夹是完全控制的,你应该能够使用这个我的mod…:
 

                                       ;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 fn fname)
(vl-load-com)
(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 "\""))
   |;
   (prompt "\nFile \"autonumb.pdf\" not found... Can't initialize \"acrobat.exe\" to view help info...")
)
(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 fn (open (setq fname (strcat (vla-get-path (vlax-get-acad-object)) "\\Support\\autonumb.dcl")) "w"))
(write-line "//----------------------------------------------------------------------------" fn)
(write-line "// " fn)
(write-line "// Corresponding dialogue for DDNUMB.LSP" fn)
(write-line "// " fn)
(write-line "//----------------------------------------------------------------------------" fn)
(write-line "" fn)
(write-line "//dcl_settings : default_dcl_settings { audit_level = 3; }" fn)
(write-line "" fn)
(write-line "" fn)
(write-line "ddstart : dialog {" fn)
(write-line "   label = \"Auto Number\";" fn)
(write-line "      initial_focus = \"prefix\";" fn)
(write-line "                : row {" fn)
(write-line "                : boxed_column {" fn)
(write-line "                        fixed_width = true;" fn)
(write-line "                        label = \"&Prefix\";" fn)
(write-line "                              : edit_box {" fn)
(write-line "                                        key = \"prefix\";" fn)
(write-line "                                        mnemonic = \"P\";" fn)
(write-line "                                        fixed_width = true;" fn)
(write-line "                                           }" fn)
(write-line "                              }" fn)
(write-line "                : boxed_column {" fn)
(write-line "                        fixed_width = true;" fn)
(write-line "                        label = \"Start &No\";" fn)
(write-line "                              : edit_box {" fn)
(write-line "                                        key = \"start_no\";" fn)
(write-line "                                        mnemonic = \"N\";" fn)
(write-line "                                        fixed_width = true;" fn)
(write-line "                                           }" fn)
(write-line "                              }" fn)
(write-line "                : boxed_column {" fn)
(write-line "                        fixed_width = true;" fn)
(write-line "                        label = \"&Suffix\";" fn)
(write-line "                              : edit_box {" fn)
(write-line "                                        key = \"suffix\";" fn)
(write-line "                                        mnemonic = \"S\";" fn)
(write-line "                                        fixed_width = true;" fn)
(write-line "                                           }" fn)
(write-line "                              }" fn)
(write-line "                        }" fn)
(write-line "      : row {" fn)
(write-line "                : boxed_column {" fn)
(write-line "                        fixed_width = true;" fn)
(write-line "                        label = \"&Increment\";" fn)
(write-line "                              : edit_box {" fn)
(write-line "                                        key = \"txt_inc\";" fn)
(write-line "                                        mnemonic = \"I\";" fn)
(write-line "                                        fixed_width = true;" fn)
(write-line "                                           }" fn)
(write-line "                              }" fn)
(write-line "                : boxed_column {" fn)
(write-line "                        fixed_width = true;" fn)
(write-line "                        label = \"Sort &By\";" fn)
(write-line "                              : popup_list {" fn)
(write-line "                                        key = \"sort_type\";" fn)
(write-line "                                        width = 13;" fn)
(write-line "                                        fixed_width = true;" fn)
(write-line "                                        }" fn)
(write-line "                              }" fn)
(write-line "                : toggle {" fn)
(write-line "                        label = \"Replace\";" fn)
(write-line "                        key = \"do_replace\";" fn)
(write-line "                        value = 1;" fn)
(write-line "                        }" fn)
(write-line "                }" fn)
(write-line "                spacer_1;" fn)
(write-line "                : row {" fn)
(write-line "      ok_cancel;" fn)
(write-line "                        : button {" fn)
(write-line "                              key = \"numb_hlp\";" fn)
(write-line "                              label = \"Help\";" fn)
(write-line "                              mnemonic = \"H\";" fn)
(write-line "                              }" fn)
(write-line "                        }" fn)
(write-line "                }" fn)
(close fn)
(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)
(if (findfile fname)
   (vl-file-delete fname)
)
;;;-------------------------------------------------------------------
;;;---------------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 (strcat prefix (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)
(princ)
)
HTH。,M、 R。

SLW210 发表于 2022-7-5 16:35:36

我把帖子从你复活的旧帖子移到了这个帖子上。请不要重复投递。

TLHansen 发表于 2022-7-5 16:37:25

我对代码一无所知。2016年,我进入工具,加载应用程序,选择autonum。lsp。它存储在支持文件中。我点击加载。然后我键入ddnumb作为命令。效果很好。
 
2017年,我加载例程并键入ddnumb。我得到一个错误-
错误:退出/退出中止
如果没有事先调用(*push error using command*),则无法从*error*调用(命令)。
建议将(命令)调用转换为(命令-s)。

tombu 发表于 2022-7-5 16:50:13

我在前面加了一个分号
(command "_.UNDO" "_E")在上述marko_ribar代码的第13行对其进行注释,2018年效果良好。不过,它不像Express Tool TCOUNT那样适用于多行文字。
页: [1]
查看完整版本: DDNUB。用于AutoCAD 2017的lsp