请教右键菜单的程序怎么使用?
下面这个程序代码是从网上下来,用来显示CAD的右键菜单,但不知为何?test主程序调用后mtext值是nil,请教大侠,这个子程序gps->popupmenu该如何用?怎么获取我选取的菜单选项值?代码如下:
(defun c:test( / mtext)
(setq mtext (gps->popupmenu (list "快捷菜单测试" "" "AA" "BB" "CC" "DD" "EE" "FF")))
(cond
((= (strcase mtext) (strcase "AA")) (princ "选择A"))
((= (strcase mtext) (strcase "BB")) (princ "选择B"))
)
;(princ mtext)
(princ)
)
;(setq str (gps->popupmenu '("Line" "" "Circle" "Arc")))
(DEFUN gps->popupmenu (MENULST / acadobj currmenugroup flag fn N menus newmenu newmenuitem openmacro str thisdoc )
(SETVAR "cmdecho" 0)
(SETQ FLAG nil)
(SETQ FN (OPEN "VbaMenu.mns" "w"))
(CLOSE FN)
(SETQ ACADOBJ (vlax-get-acad-object))
(SETQ THISDOC (vla-get-ActiveDocument ACADOBJ))
(SETQ MENUS (vla-get-MenuGroups ACADOBJ))
; (VLAX-FOR N MENUS (IF (= (vla-get-Name N) "VbaMenu")
; (SETQ FLAG T)
; ) (TERPRI)
; )
; (IF FLAG
; (UnLoadMenuGroup "VbaMenu")
; )
(UnLoadMenuGroup "VbaMenu")
(vla-Load MENUS "VbaMenu.mns")
(SETQ CURRMENUGROUP (vla-Item MENUS "VbaMenu"))
(IF (<= (vla-get-Count (vla-get-Menus CURRMENUGROUP)) 0)
(PROGN
(SETQ NEWMENU (vla-Add (vla-get-Menus CURRMENUGROUP) "V&BA Menu"))
(FOREACH N MENULST
(IF (= (TYPE N) (QUOTE STR))
(COND
((/= N "")(SETQ OPENMACRO (STRCAT (CHR 3) (CHR 3) "(setq xxx " N ")" (CHR 32))
NEWMENUITEM (vla-AddMenuItem NEWMENU (1+ (vla-get-Count NEWMENU)) N OPENMACRO)
)
(vla-put-HelpString NEWMENUITEM N)
)
((= N "")(vla-AddSeparator NEWMENU (1+ (vla-get-Count NEWMENU))))
)
)
)
(vla-Save CURRMENUGROUP acMenuFileCompiled)
)
(PRINC "\nThe menu is already loaded")
);End If
(PRIN1)
(MENUCMD "p0=VbaMenu.POP2")
(MENUCMD "p0=*")
)
(defun UnLoadMenuGroup (iValue / rValue)
(if (menugroup iValue)
(progn
(if (not (vl-catch-all-error-p (setq rValue (vl-catch-all-apply 'vla-unload (list (vla-item (vla-get-menugroups(vlax-get-acad-object)) iValue))))))
(setq rValue T)
)
rValue
)
)
)
我也想知道 (SETQ OPENMACRO (STRCAT (CHR 3) (CHR 3) "(setq xxx " N ")" (CHR 32))--》》(SETQ OPENMACRO (STRCAT (CHR 3) (CHR 3) "(setq xxx " (CHR 34) N (CHR 34) ")" (CHR 32))
这样输出为(setq xxx "string"),设置xxx为字符串,但是xxx是全局变量,我只想到这个笨方法,具体怎么使用得具体研究了吧
页:
[1]