Compare this:
Code:
(defun c:FOO1 ()
(command "._pline" "_cen" pause "_perp" pause "")
(princ)
)
... To this:
Code:
(vl-load-com)
(defun c:FOO2 (/ *error* startPoint endPoint oldCmdecho oldOsmode)
(defun *error* (msg)
(and oldCmdecho (setvar 'cmdecho oldCmdecho))
(and oldOsmode (setvar 'osmode oldOsmode))
(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)
)
(if
(and
(setq oldOsmode (getvar 'osmode))
(setvar 'osmode 4)
(setq startPoint (getpoint "\nSpecify first point: "))
(setvar 'osmode 128)
(not (initget 32))
(setq endPoint (getpoint startPoint "\nSpecify second point: "))
)
(progn
(setq oldCmdecho (getvar 'cmdecho))
(setvar 'cmdecho 0)
(command "._pline" "_non" startPoint "_perp" endPoint "")
)
)
(*error* nil)
)