明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3545|回复: 6

[讨论] 看了zml84大师的“生成并加载菜单文件及工具条”

[复制链接]
发表于 2014-6-16 21:36 | 显示全部楼层 |阅读模式
本帖最后由 杜阳 于 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 [DCL转换LSPA002] ^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   [_Toolbar(\"工具条01\", _Floating, _Hide, 10, 340, 1)]"
                 "ID_ZCT011   [_Button(\"轴测图直线\", \"RCDATA_16_OSNEND\", \"RCDATA_16_OSNEND\")]^C^Cline"
                 "ID_ZCT012   [_Button(\"轴测图标注\", \"RCDATA_16_DIMOBL\", \"RCDATA_16_DIMOBL\")]^C^Cdim"
                 "ID_ZCT013   [_Button(\"轴测图文字\", \"RCDATA_16_TEXEDI\", \"RCDATA_16_TEXEDI\")]^C^Ctext"
                 "ID_ZCT014   [_Button(\"轴测图更改\", \"RCDATA_16_DIMOVE\", \"RCDATA_16_DIMOVE\")]^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")        ; 显示工具栏
)



"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-6-16 21:37 | 显示全部楼层
自己抢个沙发    用了zml84大师的这个   我消除不了   就重装了cad才消除的这个加载项   
发表于 2014-6-16 22:10 | 显示全部楼层
这个是写入菜单文件,而G版和秋枫的批量打印采用的动态加载,方式不一样。
写入菜单文件就等于存盘保存,而动态加载是内存加载,临时文件,没有存盘。。
具体差异可以对比G版 langjs 秋枫批量打印 等原码。。。。
发表于 2014-6-16 22:17 | 显示全部楼层
杜阳 发表于 2014-6-16 21:37
自己抢个沙发    用了zml84大师的这个   我消除不了   就重装了cad才消除的这个加载项

基本功不行!参阅命令 menuload
 楼主| 发表于 2014-6-17 13:31 | 显示全部楼层
Gu_xl 发表于 2014-6-16 22:17
基本功不行!参阅命令 menuload

就是的   基本功还不到位   请超级版主多多指教
发表于 2024-3-1 14:10 | 显示全部楼层
为什么工具条上的图片都不对啊
发表于 2024-3-1 14:12 | 显示全部楼层
显示的都是混乱的   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-22 03:55 , Processed in 0.196112 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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