TLHansen Posted December 18, 2017 Posted December 18, 2017 Did the ddnumb.lsp work? I used it a lot in my work until I upgraded from 2016 to 2017. So I don't even use 2017. Is there a ddnumb.lsp for 2017? Quote
TLHansen Posted December 18, 2017 Author Posted December 18, 2017 I used ddnumb.lsp for years, and it saves me lots of time. But it quit working in 2017, so I only use 2016. Has this been updated? Quote
eldon Posted December 18, 2017 Posted December 18, 2017 cadalyst might be the source. I see there is a dcl file as well as the lsp file. Has anything changed with the pathing between your versions of AutoCad? I see that you are double posting. You can sort out any answers in both your threads. Quote
Hippe013 Posted December 18, 2017 Posted December 18, 2017 That lisp isn't version dependent. Should work fine for 2017. Quote
marko_ribar Posted December 18, 2017 Posted December 18, 2017 (edited) I think you should change read only folder of Program Files if you are using Windows 10 to full control - read-write... There you should have installed your ACAD, and if Support folder under ACAD is with full control, you should be able to use this my 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. Edited December 18, 2017 by marko_ribar Quote
SLW210 Posted December 18, 2017 Posted December 18, 2017 I moved the post from the older thread you resurrected to this thread. Please don't double post. Quote
TLHansen Posted December 18, 2017 Author Posted December 18, 2017 I know nothing about code. In 2016, I go to TOOLS, LOAD APPLICATION, and pick autonum.lsp. It is stored in the SUPPORT file. I clilck LOAD. Then I type ddnumb as the command. Works great. In 2017, I load the routine and type ddnumb. I get an error - Error: quit / exit abort Cannot invoke (command) from *error* without prior call to (*push-error-using-command*). Converting (command) calls to (command-s) is recommended. Quote
tombu Posted December 18, 2017 Posted December 18, 2017 I added a semicolon in front of (command "_.UNDO" "_E") to comment it out on line 13 of marko_ribar's code above and it worked fine in 2018. It doesn't work on Mtext like the Express Tool TCOUNT though. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.