马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
说明:
在cad中有时会加载多个菜单,除了“menu”命令调入的主菜单外,其余的是用“menuload”命令调入的。如bonus、用户自定菜单等,通常下拉菜单只显示主菜单的内容。
如果要把下拉菜单切换到另一个菜单文件,又不改变已经加载的菜单,需要先“menu”加载主菜单,再“menuload”逐个加载其他菜单,比较麻烦。
这个工具的功能是直接置顶指定菜单,同时保留已经加载的其它菜单。
用法:
($$_menuload menuname)
menuname: 要置顶的菜单文件名,如果当前还没有加载也没关系。

- [FONT=courier new]
- ;;;得到目前加载的菜单名
- ;;; v1.0 - 2004.4.3
- (defun $$_menu_group_file (/ lst menus each aco)
- (vl-load-com)
- (setq menus (vla-get-menugroups (vlax-get-acad-object)))
- (vlax-for each menus
- (setq
- lst (cons (cons (vla-get-name each) (vla-get-menufilename each))
- lst
- )
- )
- )
- (vlax-release-object menus)
- (reverse lst)
- )
- ;;菜单加载
- ;; v0.9- 2004.2.21 以点对表接受菜单组信息,大小写不敏感
- (defun $$_menuload (menuname / lst1 x menufullname)
- (setvar "cmdecho" 0)
- (princ "\n菜单加载程序 v1.0 ")
- (setq lst1 ($$_menu_group_file))
- (gc)
- (cond
- ((and (setq menufullname
- (cdr
- (assoc
- (strcase menuname)
- (mapcar
- '(lambda (x) (cons (strcase (car x)) (cdr x)))
- lst1
- )
- )
- )
- )
- (/= menufullname "")
- )
- (vl-cmdf "menu" menufullname)
- )
- ((or (findfile (strcat menuname ".mnu"))
- (findfile (strcat menuname ".mnc"))
- )
- (vl-cmdf "menu" menuname)
- )
- (1 (princ (strcat "\n菜单 " menuname " 没有找到. ")))
- )
- (foreach x lst1
- (or (menugroup (car x))
- (not (cdr x))
- (vl-cmdf "menuload" (cdr x))
- )
- )
- (princ)
- )
- [/FONT]
|