Not for me, I think if osnap was last menu ?
If you want to set osnaps then make suitable defuns.
defun C:15 ()(setvar "osmode" 15359)) ; sets all snaps on
(defun C:47 ()(setvar "osmode" 47)(setvar "AUNITS" 0))
(defun C:99 ()(setvar "osmode" 99))
(defun C:8 ()(setvar "osmode" 8))
(defun C:59 ()(setvar "osmode" 15359))
(defun C:9 ()(setvar "osmode" 9))
(defun C:0 ()(setvar "osmode" 0))
(menucmd "P0=*") works for me.
Actually, My goal is "HOW TO HANDLE OSNAP SHORTCODE MENU WITHIN GRREAD?", might I missed something in the below routine, or some special cases are not covered, or else?.
The GrSnapV1-0.lsp is attached hereby
;How to handle osnap shortcode menu within grread function
(setq osf (LM:grsnap:snapfunction) ;; Define optimised Object Snap function
osm (getvar 'osmode) ;; Retrieve active Object Snap modes
flag 1
tosm nil
)
(while (= flag 1)
(setq code_12 (grread (setq code (grread t 13 0))))
(redraw)
(cond
((equal code '(11 1000)) (menucmd "POP500=*"))
((= 5 (car code))
(if tosm (osf (cadr code) tosm) (osf (cadr code) osm))
(grdraw '(0 0 0) (cadr code) 1)
)
((= 3 (car code))
(if tosm
(grdraw '(0 0 0) (osf (cadr code) tosm) 1)
(grdraw '(0 0 0) (osf (cadr code) osm) 1)
)
(setvar 'osmode osm)
(setq flag nil)
)
)
(if (= (car code_12) 11)
(cond
((= (cadr code_12) 525) (setq tosm (setvar 'osmode 1))) ;endpoint
((= (cadr code_12) 526) (setq tosm (setvar 'osmode 2))) ;midpoint
((= (cadr code_12) 527) (setq tosm (setvar 'osmode 4))) ;centerpoint
;;;;And so on
)
)
)