Code:
(defun c:FOO (/ *error* _Nomutt)
(vl-load-com)
(defun *error* (msg)
(and oldNomutt (setvar 'nomutt oldNomutt))
(if acDoc (vla-endundomark acDoc))
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** ")))) ; Fatal error, display it
(princ))
(defun _Nomutt (on) (setvar 'nomutt (if on 1 0)))
((lambda (acDoc oldNomutt / ss layer)
(vla-startundomark acDoc)
(if
(and
(princ "\nSelect objects, or <Enter> for layer: ")
(_Nomutt T)
(or (setq ss (ssget "_:L"))
(and
(_Nomutt nil)
(/= "" (setq layer (getstring T "\nEnter layer name(s): "))))))
(progn
;; <- Do something with the ss, or layer string here,
;; for now, prompt user what they chose:
(prompt (strcat "\n** You chose to "
(if ss
"\"select objects\""
"\"enter layer name(s)\"")
" ** "))
(*error* nil))
;; If no valid choice is made, report:
(*error* "You didn't enter a valid option")))
(vla-get-activedocument (vlax-get-acad-object))
(getvar 'nomutt)))