Can anyone tell me if it is possible to add context-sensitive shortcut menus with VLisp.
I can add menu items to existing shortcut menus no problems eg adding a function (XRELOAD) to XREF shortcut menu
(defun AddContextMenuItem ( / acadApp acadMenuGroups Menu) (setq acadApp (vlax-get-acad-object)) (setq acadMenuGroups (vla-get-MenuGroups acadApp)) (vlax-for MenuGroup acadMenuGroups (setq Name (vla-get-name MenuGroup)) (if (= Name "ACAD") (setq Menu MenuGroup)) ) (setq PopUps (vla-get-Menus Menu)) (setq XREFContext nil) (vlax-for PopUp PopUps (setq Name (vla-get-name PopUp)) (if (= Name "Context menu for XREF Objects") (setq XREFContext PopUp)) ) (vla-AddMenuItem XREFContext (vla-get-count XREFContext) "Xref Reload" "(xreload) ") (princ)
)
However if I try to add a completely new menu for an object it won't recognise it as a context-sensitive menu, eg adding a menu for a CIRCLE
(defun AddContextMenu ( / acadApp acadMenuGroups Menu) (setq acadApp (vlax-get-acad-object)) (setq acadMenuGroups (vla-get-MenuGroups acadApp)) (vlax-for MenuGroup acadMenuGroups (setq Name (vla-get-name MenuGroup)) (if (= Name "ACAD") (setq Menu MenuGroup)) ) (setq PopUps (vla-get-Menus Menu)) (setq CIRC_Context (vla-add Popups "Context menu for CIRCLE Object")) (vla-AddMenuItem CIRC_Context "" "Erase" (strcat (chr 3) (chr 3) "_erase" (chr 32))) (princ)
)
It obviously has something to do with the menu ALIAS for Context menus eg
**OBJECT_CIRCLE, but there doesn't appear to be a property for ALIAS in the PopUpMenu Object.
Does anyone know if there is a way of specifying an ALIAS for a PopUpMenu object or is this an impossible task?
Thanks
Jason Kroll
I can add menu items to existing shortcut menus no problems eg adding a function (XRELOAD) to XREF shortcut menu
(defun AddContextMenuItem ( / acadApp acadMenuGroups Menu) (setq acadApp (vlax-get-acad-object)) (setq acadMenuGroups (vla-get-MenuGroups acadApp)) (vlax-for MenuGroup acadMenuGroups (setq Name (vla-get-name MenuGroup)) (if (= Name "ACAD") (setq Menu MenuGroup)) ) (setq PopUps (vla-get-Menus Menu)) (setq XREFContext nil) (vlax-for PopUp PopUps (setq Name (vla-get-name PopUp)) (if (= Name "Context menu for XREF Objects") (setq XREFContext PopUp)) ) (vla-AddMenuItem XREFContext (vla-get-count XREFContext) "Xref Reload" "(xreload) ") (princ)
)
However if I try to add a completely new menu for an object it won't recognise it as a context-sensitive menu, eg adding a menu for a CIRCLE
(defun AddContextMenu ( / acadApp acadMenuGroups Menu) (setq acadApp (vlax-get-acad-object)) (setq acadMenuGroups (vla-get-MenuGroups acadApp)) (vlax-for MenuGroup acadMenuGroups (setq Name (vla-get-name MenuGroup)) (if (= Name "ACAD") (setq Menu MenuGroup)) ) (setq PopUps (vla-get-Menus Menu)) (setq CIRC_Context (vla-add Popups "Context menu for CIRCLE Object")) (vla-AddMenuItem CIRC_Context "" "Erase" (strcat (chr 3) (chr 3) "_erase" (chr 32))) (princ)
)
It obviously has something to do with the menu ALIAS for Context menus eg
**OBJECT_CIRCLE, but there doesn't appear to be a property for ALIAS in the PopUpMenu Object.
Does anyone know if there is a way of specifying an ALIAS for a PopUpMenu object or is this an impossible task?
Thanks
Jason Kroll