How to popup the osnap menu (see figure) by Autolisp?

How to popup the osnap menu (see figure) by Autolisp?

_Bilal
Advocate Advocate
774 Views
5 Replies
Message 1 of 6

How to popup the osnap menu (see figure) by Autolisp?

_Bilal
Advocate
Advocate

Shift+Rightclick..jpg

0 Likes
Accepted solutions (1)
775 Views
5 Replies
Replies (5)
Message 2 of 6

rgrainer
Collaborator
Collaborator
Accepted solution

try this:
(menucmd "P0=pop0")

(menucmd "P0=*)

0 Likes
Message 3 of 6

_Bilal
Advocate
Advocate

Thank you, the second one (menucmd "P0=*") runs the popup osnap.

Message 4 of 6

Sea-Haven
Mentor
Mentor

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))

 

 

0 Likes
Message 5 of 6

TomBeauford
Advisor
Advisor

(menucmd "P0=*") works for me.

64bit AutoCAD Map & Civil 3D 2023
Architecture Engineering & Construction Collection
2023
Windows 10 Dell i7-12850HX 2.1 Ghz 12GB NVIDIA RTX A3000 12GB Graphics Adapter
0 Likes
Message 6 of 6

_Bilal
Advocate
Advocate

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
		)
	)
)

 

0 Likes