;;; ;;; ;;; ;;; ;;;************************************************************************************** ;;; ;;;NOTE: ;;;Some problems (crashing AutoCAD) will happen randomly when .OPEN is called from within ;;;autolisp routines. It has been observed that this problem never or very rarely occurs ;;;when drawings are opened using a script. This is true regardless of how many drawings ;;;are opened in succession using the script; therefore, the autolisp calls for the .OPEN ;;;command herein have been replaced by script execution of the .OPEN command in the hope ;;;to the .OPEN command. ;;; ;;;************************************************************************************** ;;; ;;;> Author: Henry C. Francis ;;;> 425 N. Ashe St. ;;;> Southern Pines, NC 28387 ;;;> http://paracadd.com ;;;> All rights reserved. ;;; ;;;> COPYRIGHT: 9-19-95 ;;;> EDITED: 01-22-2007 ;;; (DEFUN myopencmd (fn) (IF fn ; If there is a filename provided for us to open... (PROGN (IF (EQ (SUBSTR fn 1 1) "\"") nil (SETQ fn (STRCAT "\"" fn "\"")); Put the filename in quotes if it isn't already ) ;_ end of IF (SETQ useropenscr1 (OPEN (STRCAT "C:\\" (GETVAR "loginname") "_open_1.scr") "w")); open user script #1 for writing (IF useropenscr1 (PROGN (WRITE-LINE "(acad-pop-dbmod)" useropenscr1) (WRITE-LINE ".open" useropenscr1) (WRITE-LINE "n" useropenscr1) (WRITE-LINE fn useropenscr1) ;;; (WRITE-LINE "(SETQ fstr nil)" useropenscr1) (WRITE-LINE "(SETQ file_info (dos_file (strcat (getvar \"dwgprefix\")(getvar \"dwgname\"))))" useropenscr1) (WRITE-LINE "(IF (and file_info (<(ATOI(CADR file_info))3000000))(COMMAND \"_.AUDIT\" \"Y\" \"REDRAW\"))" useropenscr1) (IF (EQ myopenfrom "xrswap") (WRITE-LINE "(c:xrswp_vctr)" useropenscr1) ) (WRITE-LINE "(SETQ onam nil)" useropenscr1) (WRITE-LINE "(dlog)" useropenscr1) (CLOSE useropenscr1) ) ;_ end of PROGN (PROGN (PRINC (STRCAT "\nUnable to open C:\\" (GETVAR "loginname") "_open_1.scr for writing")); Tell us when we fail (PRINC) ) ;_ end of PROGN ) ;_ end of IF (SETQ useropenscr2 (OPEN (STRCAT "C:\\" (GETVAR "loginname") "_open_2.scr") "w")); open user script #2 for writing (IF useropenscr2 (PROGN (WRITE-LINE "(acad-pop-dbmod)" useropenscr2) (WRITE-LINE ".open" useropenscr2) (WRITE-LINE fn useropenscr2) ;;; (WRITE-LINE "(SETQ fstr nil)" useropenscr2) (WRITE-LINE "(SETQ file_info (dos_file (strcat (getvar \"dwgprefix\")(getvar \"dwgname\"))))" useropenscr2) (WRITE-LINE "(IF (and file_info (<(ATOI(CADR file_info))3000000))(COMMAND \"_.AUDIT\" \"Y\"))" useropenscr2) (IF (EQ myopenfrom "xrswap") (WRITE-LINE "(c:xrswp_vctr)" useropenscr2) ) (WRITE-LINE "(SETQ onam nil)" useropenscr2) (WRITE-LINE "(dlog)" useropenscr2) (CLOSE useropenscr2) ) ;_ end of PROGN (PROGN (PRINC (STRCAT "\nUnable to open C:\\" (GETVAR "loginname") "_open_2.scr for writing")); Tell us when we fail (PRINC) ) ;_ end of PROGN ) ;_ end of IF (SETQ useropenscr3 (OPEN (STRCAT "C:\\" (GETVAR "loginname") "_open_3.scr") "w")); open user script #3 for writing (IF useropenscr3 (PROGN (WRITE-LINE "(acad-pop-dbmod)" useropenscr3) (WRITE-LINE ".open" useropenscr3) (WRITE-LINE "y" useropenscr3) (WRITE-LINE fn useropenscr3) ;;; (WRITE-LINE "(SETQ fstr nil)" useropenscr3) (WRITE-LINE "(SETQ file_info (dos_file (strcat (getvar \"dwgprefix\")(getvar \"dwgname\"))))" useropenscr3) (WRITE-LINE "(IF (and file_info (<(ATOI(CADR file_info))3000000))(COMMAND \"_.AUDIT\" \"Y\"))" useropenscr3) (WRITE-LINE "AUDIT" useropenscr3) (WRITE-LINE "Y" useropenscr3) (IF (EQ myopenfrom "xrswap") (WRITE-LINE "(c:xrswp_vctr)" useropenscr3) ) (WRITE-LINE "(SETQ onam nil)" useropenscr3) (WRITE-LINE "(dlog)" useropenscr3) (CLOSE useropenscr3) ) ;_ end of PROGN (PROGN (PRINC (STRCAT "\nUnable to open C:\\" (GETVAR "loginname") "_open_3.scr for writing")); Tell us when we fail (PRINC) ) ;_ end of PROGN ) ;_ end of IF (SETQ princprfx (IF (AND debug_princs princprfx (< (STRLEN princprfx) 29)) (STRCAT princprfx " ") (IF debug_princs "[DEBUG] " "" ) ;_ end of IF ) ;_ end of IF ) ;_ end of SETQ (IF princdebugstrs nil (LOAD "princdebugstrs" "\nFile PRINCDEBUGSTRS.LSP not loaded! ") ) ;_ end of IF (IF dlog nil (LOAD "dlog" "\nFile DLOG.LSP not loaded! ") ) ;_ end of IF ;;; (princdebugstrs (LIST "Begin execution of MYOPENCMD function.\n" "Begin COMMAND delay.\n")) ;;; (COMMAND "DELAY" 3500) (princdebugstrs (LIST ;;;"End COMMAND delay.\n" (STRCAT "DBMOD = " (ITOA (GETVAR "DBMOD")) "; what_to_do=" (IF what_to_do (ITOA what_to_do)"NIL") " in MYOPENCMD(2).\n" ) ;_ end of STRCAT (STRCAT "Execute (COMMAND \".OPEN\"..." fn ") called from " (IF myopenfrom (STRCASE myopenfrom) "?" ) ;_ end of IF "(2).\n" ) ;_ end of STRCAT )) (acad-push-dbmod) (princdebugstrs "We pushed dbmod!") (COND ((AND (EQ (GETVAR "dbmod") 0) ;;; (NOT (EQ (BOOLE 1 1 (GETVAR "dbmod")) 1)) ;;; (NOT (EQ (BOOLE 1 8 (GETVAR "dbmod")) 8)) ;;; (NOT (EQ (BOOLE 1 16 (GETVAR "dbmod")) 16)) (NOT (WCMATCH (STRCASE (GETVAR "dwgname")) "DRAWING#.DWG")) (NOT (WCMATCH (STRCASE (GETVAR "dwgname")) "DRAWING##.DWG")) ); If the drawing is not modified (princdebugstrs (LIST (STRCAT "COND #1 DBMOD=" (ITOA (GETVAR "DBMOD")) "\n"))) (IF useropenscr2 (PROGN (princdebugstrs (LIST (STRCAT "(0)Execute Script C:\\" (GETVAR "loginname") "_open_2.scr\n")) ) ;_ end of princdebugstrs (COMMAND "script" (STRCAT "C:\\" (GETVAR "loginname") "_open_2.scr")) (princdebugstrs (LIST (STRCAT "(0)Done executing Script C:\\" (GETVAR "loginname") "_open_2.scr\n"))) ) ;_ end of PROGN (PROGN (COMMAND "_.OPEN" fn) (princdebugstrs (LIST (STRCAT "(0)Done executing (COMMAND \"_.OPEN\" \"" fn "\")"))) ) )) ((AND (OR (EQ (BOOLE 1 1 (GETVAR "dbmod")) 1) (EQ (BOOLE 1 4 (GETVAR "dbmod")) 4) (EQ (BOOLE 1 8 (GETVAR "dbmod")) 8) (EQ (BOOLE 1 16 (GETVAR "dbmod")) 16) ) (OR(EQ what_to_do 3)(EQ what_to_do 6)) ) (princdebugstrs (LIST (STRCAT "COND #2 DBMOD=" (ITOA (GETVAR "DBMOD")) "\n"))) (COND ((OR save_this (= what_to_do 6)); Save changes "Yes" or Discard changes "No" (princdebugstrs (LIST (STRCAT "COND #2a DBMOD=" (ITOA (GETVAR "DBMOD")) "\n"))) (IF useropenscr1 (PROGN (princdebugstrs (LIST (STRCAT "(1)Execute Script C:\\" (GETVAR "loginname") "_open_1.scr\n")) ) ;_ end of princdebugstrs (COMMAND "script" (STRCAT "C:\\" (GETVAR "loginname") "_open_1.scr")) (princdebugstrs (LIST (STRCAT "(1)Done executing Script C:\\" (GETVAR "loginname") "_open_1.scr\n"))) ) ;_ end of PROGN (PROGN (COMMAND "_.OPEN" "n" fn) (princdebugstrs (LIST (STRCAT "(1)Done executing (COMMAND \"_.OPEN\" \"n\" \"" fn "\")"))) ) )) ((= what_to_do 3) ; Save changes "No" or Discard changes "Yes" (princdebugstrs (LIST (STRCAT "COND #2b DBMOD=" (ITOA (GETVAR "DBMOD")) "\n"))) (IF useropenscr3 (PROGN (princdebugstrs (LIST (STRCAT "(4)Execute Script C:\\" (GETVAR "loginname") "_open_3.scr\n") ) ;_ end of LIST ) ;_ end of princdebugstrs (COMMAND "script" (STRCAT "C:\\" (GETVAR "loginname") "_open_3.scr")) (princdebugstrs (LIST (STRCAT "(4)Done executing Script C:\\" (GETVAR "loginname") "_open_3.scr\n"))) ) ;_ end of PROGN (PROGN (COMMAND "_.OPEN" "y" fn) (princdebugstrs (LIST (STRCAT "(4)Done executing (COMMAND \"_.OPEN\" \"y\" \"" fn "\")"))) ) )) )) (T ;Ask again if we should discard changes (princdebugstrs (LIST (STRCAT "COND #2c DBMOD=" (ITOA (GETVAR "DBMOD")) "\n"))) (IF (OR (WCMATCH (STRCASE (GETVAR "dwgname")) "DRAWING#.DWG")(WCMATCH (STRCASE (GETVAR "dwgname")) "DRAWING.DWG")) (SETQ what_to_do 3) (SETQ what_to_do ; Question "Save changes to...?" Returns: 6=Yes, 3=No, or 1=Cancel (DOS_MSGBOX (STRCAT "Sorry, I missed that,\ndid you say to save changes to " (GETVAR "dwgprefix") (GETVAR "dwgname") "?" ) ;_ end of strcat "AutoCAD" 5 1 ) ;_ end of dos_msgbox ) ;_ end of SETQ ) (COND ((EQ what_to_do 6) (IF useropenscr1 (PROGN (princdebugstrs (LIST (STRCAT "(1)Execute Script C:\\" (GETVAR "loginname") "_open_1.scr\n")) ) ;_ end of princdebugstrs (COMMAND "script" (STRCAT "C:\\" (GETVAR "loginname") "_open_1.scr")) (princdebugstrs (LIST (STRCAT "(1)Done executing Script C:\\" (GETVAR "loginname") "_open_1.scr\n"))) ) ;_ end of PROGN (PROGN (COMMAND "_.OPEN" "n" fn) (princdebugstrs (LIST (STRCAT "(1)Done executing (COMMAND \"_.OPEN\" \"n\" \"" fn "\")"))) ) )) ((EQ what_to_do 3) (IF useropenscr3 (PROGN (princdebugstrs (LIST (STRCAT "(1)Execute Script C:\\" (GETVAR "loginname") "_open_3.scr\n")) ) ;_ end of princdebugstrs (COMMAND "script" (STRCAT "C:\\" (GETVAR "loginname") "_open_3.scr")) (princdebugstrs (LIST (STRCAT "(1)Done executing Script C:\\" (GETVAR "loginname") "_open_3.scr\n"))) ) ;_ end of PROGN (PROGN (COMMAND "_.OPEN" "y" fn) (princdebugstrs (LIST (STRCAT "(1)Done executing (COMMAND \"_.OPEN\" \"y\" \"" fn "\")"))) ) )) ) ) ) ) (PRINC "\nNo filename specified. Nothing to open. ") ) ;_ end of IF (SETQ princprfx (COND ((AND princprfx (WCMATCH princprfx "`[DEBUG`] *")) (SUBSTR princprfx 1 (- (STRLEN princprfx) 2)) ) (debug_princs "[DEBUG] ") (T "") ) ;_ end of COND ) ;_ end of SETQ (PRINC) ) ;_ end of defun ;|«Visual LISP© Format Options» (100 2 40 2 T "end of " 100 9 2 1 0 nil T nil T) ;*** DO NOT add text below the comment! ***|;