@franc_as hi,
Here is a nice lisp i made (10 years ago) to trap invocation of any lisp command, save current object snap and restore it on lisp command end (or cancel).
wrap\save this to saveOSnap.lsp file and load it first from appload (or acad.lsp, acaddoc.lsp)
And one importing things... during vlx procedure I must pick two or more objects...for example, vlx routine for multiple offset.
Any suggestions?
what is wrong with that?
enjoy
Moshe
; saveOsnap.lsp
; by Moshe-A, 11-13-2014
; program to save osnap before lisp command is start
; and restore osnap when lisp command is ended or cancelled
(defun OnLispStart (R args^ / doc)
; (princ "\nOnLispStart")
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq *saveOsnap* (vla-getVariable doc "osmode"))
(vlax-release-object doc)
)
(defun OnLispEnded (R args^ / doc)
; (princ "\nOnLispEnded")
(if *saveOsnap*
(progn
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(if (/= (vla-getVariable doc "osmode") *saveOsnap*)
(vla-setVariable doc "osmode" *saveOsnap*)
)
(vlax-release-object doc)
)
)
)
(defun install_lisp_reactor ()
(setq *lispReactor* (vlr-lisp-reactor "" (list '(:vlr-lispWillStart . OnLispStart)
'(:vlr-lispEnded . OnLispEnded)
'(:vlr-lispCancelled . OnLispEnded)
)
)
)
(princ)
)
(defun c:DisableSaveOsnap ()
(if (and *lispReactor* (vlr-added-p *lispReactor*))
(progn
(vlr-remove *lispReactor*)
(setq *lispReactor* nil)
(setq *saveOsnap* nil)
)
)
(princ)
)
(defun c:EnableSaveOsnap ()
(install_lisp_reactor)
)
(install_lisp_reactor)