DDNUB。用于AutoCAD 2017的lsp
ddnumb了吗。lsp工作?我在工作中经常使用它,直到2016年升级到2017年。所以我甚至不用2017年。有ddnumb吗。2017年lsp? 我用了DDNUB。lsp多年,它为我节省了很多时间。但它在2017年停止工作,所以我只使用2016年。是否已更新? 代码在哪里? cadalyst可能是来源。我看到有一个dcl文件和lsp文件。AutoCad版本之间的路径是否有任何变化?
我看你是双重职务。你可以在两个帖子中找出任何答案。 该lisp不依赖于版本。应该在2017年表现良好。 我认为如果你使用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。 我把帖子从你复活的旧帖子移到了这个帖子上。请不要重复投递。 我对代码一无所知。2016年,我进入工具,加载应用程序,选择autonum。lsp。它存储在支持文件中。我点击加载。然后我键入ddnumb作为命令。效果很好。
2017年,我加载例程并键入ddnumb。我得到一个错误-
错误:退出/退出中止
如果没有事先调用(*push error using command*),则无法从*error*调用(命令)。
建议将(命令)调用转换为(命令-s)。 我在前面加了一个分号
(command "_.UNDO" "_E")在上述marko_ribar代码的第13行对其进行注释,2018年效果良好。不过,它不像Express Tool TCOUNT那样适用于多行文字。
页:
[1]