明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1792|回复: 2

请教右键菜单的程序怎么使用?

[复制链接]
发表于 2012-11-23 22:53:07 | 显示全部楼层 |阅读模式
下面这个程序代码是从网上下来,用来显示CAD的右键菜单,但不知为何?test主程序调用后mtext值是nil,请教大侠,这个子程序gps->popupmenu该如何用?怎么获取我选取的菜单选项值?
代码如下:

  1. (defun c:test( / mtext)
  2.    (setq mtext (gps->popupmenu (list "快捷菜单测试" "" "AA" "BB" "CC" "DD" "EE" "FF")))
  3.    (cond
  4.      ((= (strcase mtext) (strcase "AA")) (princ "选择A"))
  5.      ((= (strcase mtext) (strcase "BB")) (princ "选择B"))
  6.    )
  7.    ;(princ mtext)
  8.    (princ)
  9. )


  10. ;(setq str (gps->popupmenu '("Line" "" "Circle" "Arc")))
  11. (DEFUN gps->popupmenu (MENULST / acadobj currmenugroup flag fn N menus newmenu newmenuitem openmacro str thisdoc )
  12.    (SETVAR "cmdecho" 0)
  13.    (SETQ FLAG nil)
  14.    (SETQ FN (OPEN "VbaMenu.mns" "w"))
  15.    (CLOSE FN)
  16.    (SETQ ACADOBJ (vlax-get-acad-object))
  17.    (SETQ THISDOC (vla-get-ActiveDocument ACADOBJ))
  18.    (SETQ MENUS (vla-get-MenuGroups ACADOBJ))
  19. ; (VLAX-FOR N MENUS (IF (= (vla-get-Name N) "VbaMenu")
  20. ; (SETQ FLAG T)
  21. ; ) (TERPRI)
  22. ; )
  23. ; (IF FLAG
  24. ; (UnLoadMenuGroup "VbaMenu")
  25. ; )
  26.    (UnLoadMenuGroup "VbaMenu")
  27.    (vla-Load MENUS "VbaMenu.mns")
  28.    (SETQ CURRMENUGROUP (vla-Item MENUS "VbaMenu"))
  29.    (IF (<= (vla-get-Count (vla-get-Menus CURRMENUGROUP)) 0)
  30.       (PROGN
  31.         (SETQ NEWMENU (vla-Add (vla-get-Menus CURRMENUGROUP) "V&BA Menu"))
  32.         (FOREACH N MENULST
  33.            (IF (= (TYPE N) (QUOTE STR))
  34.               (COND
  35.                  ((/= N "")(SETQ OPENMACRO (STRCAT (CHR 3) (CHR 3) "(setq xxx " N ")" (CHR 32))
  36.      NEWMENUITEM (vla-AddMenuItem NEWMENU (1+ (vla-get-Count NEWMENU)) N OPENMACRO)
  37.                            )
  38.                   (vla-put-HelpString NEWMENUITEM N)
  39.                  )
  40.                  ((= N "")(vla-AddSeparator NEWMENU (1+ (vla-get-Count NEWMENU))))
  41.               )
  42.            )
  43.         )
  44.         (vla-Save CURRMENUGROUP acMenuFileCompiled)
  45.       )
  46.       (PRINC "\nThe menu is already loaded")
  47.    );End If
  48.    (PRIN1)
  49.    (MENUCMD "p0=VbaMenu.POP2")
  50.    (MENUCMD "p0=*")
  51. )

  52. (defun UnLoadMenuGroup (iValue / rValue)
  53.    (if (menugroup iValue)
  54.      (progn
  55.         (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))))))
  56.         (setq rValue T)
  57.         )
  58.         rValue
  59.      )
  60.    )
  61. )

发表于 2012-11-24 21:06:34 | 显示全部楼层
我也想知道

评分

参与人数 1金钱 +20 收起 理由
有来有去 + 20 淡定

查看全部评分

发表于 2015-4-6 23:07:40 | 显示全部楼层
(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是全局变量,我只想到这个笨方法,具体怎么使用得具体研究了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 11:07 , Processed in 0.170567 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表