Kent's answer is solid, but for important things, I like to use a message box that can provide Yes or No answers.
Copy the entire code into your acaddoc.lsp file. If you're not sure where it is located, enter
(findfile "acaddoc.lsp")
at the command prompt. It will return the full path.
(command "_.undefine" "PLOT")
(vl-load-com)
(defun C:PLOT ( / *error* cmd Doc Ans )
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;* *
;* PLOTALERT.LSP by John F. Uhden *
;* 2 Village Road *
;* Sea Girt, NJ 08750 *
;* *
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
(gc)
;;
;; This section initializes environmental and program variables:
;;
(or *acad* (setq *acad* (vlax-get-acad-object)))
(setq cmd (getvar "cmdecho")
Doc (vla-get-ActiveDocument *acad*)
)
(defun *error* (error)
(if (= (type cmd) 'INT)(setvar "cmdecho" cmd))
(vla-endundomark Doc)
(cond
((not error))
((wcmatch (strcase error) "*QUIT*,*CANCEL*"))
(1 (princ (strcat "\nERROR: " error)))
)
(princ)
)
;;--------------------------------------------------------
;; MsgBox(prompt[, buttons][, title][, helpfile, context])
;; Buttons:
;; vbOKOnly 0 Display OK button only.
;; vbOKCancel 1 Display OK and Cancel buttons.
;; vbAbortRetryIgnore 2 Display Abort, Retry, and Ignore buttons.
;; vbYesNoCancel 3 Display Yes, No, and Cancel buttons.
;; vbYesNo 4 Display Yes and No buttons.
;; vbRetryCancel 5 Display Retry and Cancel buttons.
;; vbCritical 16 Display Critical Message icon.
;; vbQuestion 32 Display Warning Query icon.
;; vbExclamation 48 Display Warning Message icon.
;; vbInformation 64 Display Information Message icon.
;; vbDefaultButton1 0 First button is default.
;; vbDefaultButton2 256 Second button is default.
;; vbDefaultButton3 512 Third button is default.
;; vbDefaultButton4 768 Fourth button is default.
;; vbApplicationModal 0 Application modal; the user must respond to the message box before continuing work in the current application.
;; vbSystemModal 4096 System modal; all applications are suspended until the user responds to the message box.
;; Revised (01-27-03) thanks to Ed Jobe's contribution about snagging the return value.
(defun @msgbox (Title Buttons Message / useri1 value)
(vl-load-com)
(or *acad* (setq *acad* (vlax-get-acad-object)))
(setq useri1 (getvar "useri1"))
(acad-push-dbmod)
(vla-eval
*acad*
(strcat
"ThisDrawing.SetVariable \"USERI1\","
"MsgBox (\""
Message "\","
(itoa Buttons) ",\""
Title "\")"
)
)
(setq value (getvar "useri1"))
(setvar "useri1" useri1)
(acad-pop-dbmod)
value
)
(vla-endundomark Doc)
(vla-startundomark Doc)
(setvar "cmdecho" 0)
(command "_.expert" (getvar "expert")) ;; dummy command
(setvar "cmdecho" 1)
(setq Ans (@msgbox "PLOT WARNING" (+ 4 32) "Did you do the hiding?"))
(if (= Ans 6)
(command "_.plot")
(@msgbox "PLOT WARNING" 48 "Do the Hiding, then Plot.")
)
(*error* nil)
)