;|REVSAVE.LSP -- Saves current drawing with new revision number. Last (2) digits of drawing name are replace with either A) the next consecutive number or B) with a number the users chooses. In Theory the chosen number would represent a new version "branch". Created 1/23/01 Paul Kirill, KDCAD - Kirill Design-PC & CAD Consulting www.kdcad.com info@kdcad.com|; (defun c:REVSAVE (/ filepre filesvnm filename norb flen fnum sp_num sp_num_ln renm test check check1 ) ;|===================================================================== defines "save_it" routine saves drawing with updated rev number =====================================================================|; (defun save_it () (setvar "filedia" 1) (setq FILEPRE (getvar "dwgprefix")) (setq FILESVNM (strcat FILEPRE FILENAME)) (command "saveas" "" FILESVNM) (princ) ) ;|===================================================================== defines "ask_which" routine prompts users to use next consecutive or make new branch =====================================================================|; (defun ask_which () (princ "\nFilename checked and valid...") (initget 2 "N B ?") (setq NORB (getkword "\nSaveAs Next or new Branch? /B/?: ") ) ;end "setq" (if (/= nil NORB) (setq NORB (strcase NORB)) ) ;end "if" (cond ( ;start 1st section (or (= nil NORB) (= NORB "N") ) ;end "or" (progn (setq NORB "NEXT") (save_next_rev) ) ;end "progn" ) ;end 1st section ( ;start 2nd section (= NORB "B") (progn (setq NORB "SPEC") (save_spec_rev) ) ;end "progn" ) ;end 2nd section ( ;start 3rd section (= NORB "?") (progn (alert "\next will add to the current revision number. \nranch starts revision number at new level." ) ;end "alert" (ask_which) ;restarts the "ask_which" process ) ;end "progn" ) ;end 3rd section ) ;end "if" ) ;end "ask_which" function ;|==================================================================== Defines "save_next_rev" function adds (1) to current rev number ====================================================================|; (defun save_next_rev () (setq FILENAME (getvar "dwgname") FLEN (strlen FILENAME) FNUM (substr FILENAME (- FLEN 5) 2) FNUM (itoa (+ 1 (atoi FNUM))) FNUM (if (= (strlen FNUM) 1) (strcat "0" FNUM) FNUM ) ;end "if" FILENAME (strcat (substr FILENAME 1 (- FLEN 6)) FNUM ".dwg") ) ;end "setq" (save_it) ) ;|==================================================================== Defines "save_spec_rev" function Prompts users for new rev/branch number ====================================================================|; (defun save_spec_rev () (initget 1 "?") (setq SP_NUM (getint "\nEnter new branch number or [?]: ")) (cond ( ;start 1st section (if (= "?" SP_NUM) (progn (Alert " Enter the new (1) digit branch number. \n(EX: 1234-A22v01 becomes 1234-A22v11)") (save_spec_rev) (princ)) ;end "progn" ) ;end "if" ) ;end 1st section ( ;begin 2nd section (if (/= "?" SP_NUM) (progn (setq SP_NUM (itoa SP_NUM) SP_NUM_LN (strlen SP_NUM) ) ;end "setq" (setq SP_NUM (atoi SP_NUM)) ) ;end "progn" ) ;end "if" (if (> SP_NUM_LN 1) (progn (alert "One Digit Only Please!") (save_spec_rev) ) ;end "progn" ) ;end "if" (progn (if (= check "v") (setq FILENAME (getvar "dwgname") FLEN (strlen FILENAME) FNUM (substr FILENAME (- FLEN 5) 2) FNUM (itoa SP_NUM) FNUM (if (= (strlen FNUM) 1) (strcat FNUM "0") FNUM ) ;setq FILENAME (strcat (substr FILENAME 1 (- FLEN 6)) FNUM ".dwg" ) ) ;end "setq ) (if (= check1 "v") (setq FILENAME (getvar "dwgname") FLEN (strlen FILENAME) FNUM (substr FILENAME (- FLEN 5) 2) FNUM (itoa SP_NUM) FNUM (if (= (strlen FNUM) 1) (strcat FNUM "00") FNUM ) ;setq FILENAME (strcat (substr FILENAME 1 (- FLEN 7)) FNUM ".dwg" ) ) ;end "setq ) (save_it) ) ;end "progn" ) ;end 2nd section ) ;end cond ) ;end defun ;|==================================================================== defines "rename_file" routine in case original filename is not in revision format. ====================================================================|; (defun rename_file () (setq FILENAME (getvar "dwgname") FILEPRE (getvar "dwgprefix") FLEN (strlen FILENAME) FNUM (substr FILENAME (- FLEN 3)) ;FNUM (itoa FNUM) FNUM (if (= (strlen FNUM) 1) (strcat FNUM "0") FNUM ) ;setq FILENAME (strcat FILEPRE (substr FILENAME 1 (- FLEN 4)) "v00.dwg") ) (command "saveas" "" filename) (princ) ) ;|==================================================================== defines "rename_check". Check file name for revision format. Prompts for rename (above) or quit. ====================================================================|; (defun rename_check () (initget 2 "R Q") (setq RENM (getkword "\nFilename not in revision format! \nRename or Quit? /Q: " ) ) (if (= "R" RENM) (rename_file) (progn (princ "Bye-bye! Try again later!") (princ) ) ) ) ;|==================================================================== defines "check_fname" checks the file name for revision standard. ====================================================================|; (defun check_fname () (setq test (getvar "dwgname") test (mapcar 'chr (vl-string->list test)) test (reverse TEST) check (nth 6 test) check1 (nth 7 test) ) (if (or (= check "v") (= check1 "v") ) (ask_which) (rename_check) ) ) ;|==================================================================== runs initial "check_fname" routine. ====================================================================|; (check_fname) ) ;END