看了zml84大师的“生成并加载菜单文件及工具条”
本帖最后由 杜阳 于 2014-6-16 21:39 编辑看了zml84大师写的生成并加载菜单文件及文具条的代码,用了很好,就是个模板,不能进行修改。再就是加载了不能消除了掉了。自己根据他的模板改了几个命令并将自己的函数加进去,命令可以执行,菜单项却毫无变化。学习了G版大师的那个,也挺好的。我最近查资料 学习这方面的所以盼望各位大师级人物给出更多见解。让菜单及工具这方面更美化,更实用。谢谢。一下是zml84大师的代码希望给予zml84老师最高的敬意
(vl-load-com)
;;;=================================================================*
;;;功能:尝试获取菜单对象 *
;;;参数:无 *
;;;返回:若成功,返回对象;否则,返回nil。 *
;;; (fun-20140211-GetMyMenu"制图工具")
(defun FUN-20140211-GETMYMENU (STR / MENUGROUPS MENUS I TMPMENU MYMENU)
;;检查菜单在当前菜单组中是否已经存在
(setq MENUGROUPS (vla-get-menugroups (vlax-get-acad-object)))
(setq MYMENU NIL
J 0
)
(repeat (vla-get-count MENUGROUPS)
(setq MENUS (vla-get-menus (vla-item MENUGROUPS J))
I 0
)
(repeat (vla-get-count MENUS)
(setq TMPMENU (vla-item MENUS I))
;;(alert (vla-get-name TMPMENU))
(if (= (vla-get-name TMPMENU) STR)
(setq MYMENU TMPMENU)
)
(setq I (1+ I))
)
(setq J (1+ J))
)
;;返回
MYMENU
)
;;;=================================================================*
;;; 生成并加载菜单文件
(defun make-MNUfile (/ FILE LST X)
;;0、文件放置位置选择
(if (or (setq FILENAME (findfile "acad.mnu"))
(setq FILENAME (findfile "acad.cui"))
(setq FILENAME (findfile "acad.exe"))
(setq FILENAME "c:\\")
)
(setq
FILENAME (strcat (vl-filename-directory FILENAME)
"\\制图工具tool.mnu"
)
)
)
;;1、生成菜单文件
(setq FILE (open FILENAME "W"))
(foreach X
'("***MENUGROUP=制图工具G"
;; 菜单
"\n\n***POP1"
"\nID_Mycad [制图工具]"
"[--]"
"ID_MyCom [->环境建立hjjl]"
"ID_MyCom [新建图层A001] ^C^C^P_A001"
"ID_MyCom ^C^C^P_A002"
"ID_MyCom [图名线A003] ^C^C^P_A003"
"ID_MyCom [获取文件名A004] ^C^C^P_A004"
"ID_MyCom [剖切线A005] ^C^C^P_A005"
"ID_MyCom [双向阵列对象A006] ^C^C^P_A006"
"ID_MyCom [折断线A007] ^C^C^P_A007"
"ID_MyCom [布局粘贴图元A008] ^C^C^P_A008"
"ID_MyCom [加载交通标线A009] ^C^C^P_A009"
"ID_MyCom [布局删除图元A010] ^C^C^P_A010"
"ID_MyCom [修改随层颜色A011] ^C^C^P_A011"
"ID_MyCom [智能中心线A012] ^C^C^P_A012"
"ID_MyCom [<-删除重复图元A013] ^C^C^P_A013"
"[--]"
"ID_MyCom [->文字工具wzgj]"
"ID_MyCom [修改文字B001] ^C^C^P_B001"
"ID_MyCom [文字加注释线B002] ^C^C^P_B002"
"ID_MyCom [<-文字加前后缀B003] ^C^C^P_B003"
"[--]"
"ID_MyCom [卸载树形菜单] ^C^C^P_qq"
"ID_MyCom [卸载工具条] ^C^C^P_ee"
;; 工具条
"\n\n***TOOLBARS\n**TEMPTOOLBAR"
"ID_ZCT001 "
"ID_ZCT011 ^C^Cline"
"ID_ZCT012 ^C^Cdim"
"ID_ZCT013 ^C^Ctext"
"ID_ZCT014 ^C^Cch"
)
(princ (strcat X "\n") FILE) ; 将定义工具栏内容写入mnu文件
)
(close FILE) ;_ 关闭mnu文件
;;2、 加载菜单
(command "menuload" FILENAME)
(princ)
)
;;;=================================================================*
;;;功能:显示树形菜单、工具条 *
(defun C:RR ()
;;0、判断是否需要加在
(or(menugroup "制图工具G") ;_判断是否已加载菜单
( make-MNUfile );_生成并加载菜单文件
)
;;1、显示树形菜单
;;****zml84 修改于 2014-02-11
(and
(setq MENUGROUPS (vla-get-menugroups (vlax-get-acad-object))
MENUS (vla-get-menus (vla-item MENUGROUPS 0))
MYMENU (FUN-20140211-GETMYMENU "制图工具")
)
(= (vla-get-onmenubar MYMENU) :vlax-false)
(vla-insertinmenubar MYMENU 99)
)
;;2、显示工具条
(command "TOOLBAR" "工具条01" "S") ; 显示工具栏
)
自己抢个沙发 用了zml84大师的这个 我消除不了 就重装了cad才消除的这个加载项 这个是写入菜单文件,而G版和秋枫的批量打印采用的动态加载,方式不一样。
写入菜单文件就等于存盘保存,而动态加载是内存加载,临时文件,没有存盘。。
具体差异可以对比G版 langjs 秋枫批量打印 等原码。。。。 杜阳 发表于 2014-6-16 21:37 static/image/common/back.gif
自己抢个沙发 用了zml84大师的这个 我消除不了 就重装了cad才消除的这个加载项
基本功不行!参阅命令 menuload Gu_xl 发表于 2014-6-16 22:17 static/image/common/back.gif
基本功不行!参阅命令 menuload
就是的 基本功还不到位 请超级版主多多指教 为什么工具条上的图片都不对啊 显示的都是混乱的
页:
[1]