明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2534|回复: 13

[提问] 遍历菜单下的所有命令

[复制链接]
发表于 2013-6-10 23:34 | 显示全部楼层 |阅读模式
菜单下的所有命令我想让程序自动遍历一遍,有什么方法啊?

本帖被以下淘专辑推荐:

  • · 收集|主题: 58, 订阅: 4
发表于 2013-6-11 13:04 | 显示全部楼层
直接将命令写到一个程序中,运行这个程序。
 楼主| 发表于 2013-6-11 16:34 | 显示全部楼层
是要把所有命令都手动写到一个程序中吗?有什么办法自动遍历吗?
发表于 2013-6-11 17:11 | 显示全部楼层
基本上不会有人研究怎么去遍历命令吧!挺多余的
 楼主| 发表于 2013-6-11 17:15 | 显示全部楼层
对我来说确实很有必要啊,我主要是想验证二次开发的所有功能是否都能正常执行,如果把所有命令都写到程序中,就算执行后所有命令都正常,也不能保证菜单命令就是正常的啊,主要是不想手动一个一个点。嘿嘿。
发表于 2013-7-5 16:15 | 显示全部楼层
你的所有功能都自动执行吗?不需要输入参数或者选点等等的?
发表于 2013-7-5 20:19 | 显示全部楼层
看下MENUCMD函数。
 楼主| 发表于 2013-8-4 20:38 | 显示全部楼层
ZZXXQQ 发表于 2013-7-5 20:19
看下MENUCMD函数。

谢谢您的指点,我看了menucmd函数的说明,用P0--P16就可以得到菜单命令了,那如果我想得到面板式菜单命令呢?
发表于 2013-8-4 21:47 | 显示全部楼层
  1. ;;(gxl-ListAllMenuPops MenuGroupName) 返回菜单组所有的命令
  2. ;;(gxl-ListAllMenuPops "ACAD")
  3. (defun gxl-ListAllMenuPops (menugroupname / menus dl MenuPopList itemsMenuPop item1)
  4.   (defun itemsMenuPop (itemMenuPop / item1)
  5.     (vlax-for item itemMenuPop
  6.       (if (VL-CATCH-ALL-ERROR-P
  7.               (setq item1
  8.                      (VL-CATCH-ALL-APPLY 'vla-get-SubMenu (list item))
  9.               )
  10.             )
  11.         (if (/= "" (setq label (vla-get-label item)))
  12.         (setq dl (cons (list (strcase label) ;_ 菜单名称
  13.                              (vl-string-trim
  14.                                "\003 "
  15.                                (strcase (vla-get-Macro item))
  16.                              ) ;_ 命令名称
  17.                        )
  18.                        dl
  19.                  )
  20.         )
  21.           )
  22.         (itemsMenuPop item1)
  23.       )
  24.       )
  25.     )
  26.                        
  27.   (setq        menus (vla-get-Menus
  28.                 (vla-item (vla-get-menugroups (vlax-get-acad-object))
  29.                           menugroupname
  30.                 )
  31.               )
  32.   )
  33.   (vlax-for MenuPop menus
  34.     (setq dl nil)
  35.     (vlax-for item MenuPop
  36.       (setq aa item)
  37.       (if (VL-CATCH-ALL-ERROR-P
  38.             (setq item1 (VL-CATCH-ALL-APPLY 'vla-get-SubMenu (list item)))
  39.           )
  40.         (if (/= "" (setq label (vla-get-label item)))
  41.         (setq dl (cons (list (strcase label) ;_ 菜单名称
  42.                              (vl-string-trim
  43.                                "\003 "
  44.                                (strcase (vla-get-Macro item))
  45.                              ) ;_ 命令名称
  46.                        )
  47.                        dl
  48.                  )
  49.         )
  50.           )
  51.         (itemsMenuPop item1)
  52.       )
  53.     )
  54.     (setq MenuPopList
  55.            (cons
  56.              (cons (vla-get-NameNoMnemonic MenuPop) (reverse dl))
  57.              MenuPopList
  58.            )
  59.     )
  60.   )
  61.   (reverse MenuPopList)
  62. )
 楼主| 发表于 2013-9-4 09:31 | 显示全部楼层
非常感谢G版主的详细代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 03:51 , Processed in 0.439594 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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