mccad 发表于 2002-5-26 11:19:00

自动加载自定义的菜单方法

以下代码可自动添加辅助工具所在的目录并自动加载辅助工具菜单:

;;;   MC-LOAD.LSP
;;;   Copyright (C) 1997 - 2002 by 明经通道 http://www.mjtd.com
;;    以下为加载明经制图辅助工具
(defun add_path ( dir / a b c)
(if (and dir
         (setq c (getenv "ACAD"))               
      );and
      (progn
       ;看看DIR目录是否在AutoCAD的支持目录中
       (setq a (strcase c)
             b (strcase dir)
       );setq
       (if (not (equal ";" (substr a 1 1)))
         (setq a (strcat ";" a));在 a 前面加上一个";"
       );if
       (if (not (equal ";" (substr a (strlen a) 1)))
         (setq a (strcat a ";")
               c (strcat c ";");在后面加上一个";"
         );setq
       );if
       (if (not (wcmatch a (strcat "*;" b ";*"))) ;查看“DIR”是否在支持路径中?
         (progn
            (setq c (strcat c dir));没有时则添加
            (setenv "ACAD" c);设置到支持路径的环境变量中
         );progn
         (setq c nil)
       );if   
      );progn then
      (setq c nil)
);if
c
);defun add_path

(defun acc()
(setvar "cmdecho" 0)
(if (not(menugroup "MCCAD"))
    (if(findfile "mccad.mnu")
      (progn
      (setvar "filedia" 0)
      (command "menuload" "mccad")
      (setvar "filedia" 1)
      )
      (progn
      (setq a (findfile "acad.exe"))               ; 建立指向辅助工具的标准路径
      (setq          a (substr a 1 (- (strlen a) 8))
            bonus_path (strcat a "mccad")         
      );setq
      (findfile bonus_path)                        ; 查看辅助工具目录是否存在
      (add_path bonus_path)                        ; 将路径添加到支持路径中
      (if (findfile "mccad.mnu")
          (progn
            (setvar "filedia" 0)
            (command "menuload" "mccad")
            (setvar "filedia" 1)
          )
      )
      )
    )
)
(if(findfile "mccad.lsp")   ;如果有辅助工具配套程序,则同时加载
    (load "mccad")
)
(setvar "cmdecho" 1)
(princ)
)
(acc)
(princ)


以下代码可自动显示辅助工具菜单于菜单栏中:

(defun mc-init-placemenu (/ CNT)
(setq CNT 1)
(while (< CNT 24)
    (if (menucmd (strcat "P" (itoa CNT) ".1=?"))
      (setq CNT (1+ CNT))
      (progn
      (if (> CNT 2)
          (setq CNT (- CNT 2))
          (setq CNT 2)
      )
      (menucmd (strcat "p" (itoa CNT) "=+mccad.pop1"))
      (setq CNT 25)
      )
    )
)
)

河伯 发表于 2002-5-26 13:37:00

如何判断当前屏幕菜单使用的是那个菜单组定义的屏幕菜单?

mccad 发表于 2002-5-26 23:03:00

以前好象看过书说只能是主菜单的屏幕菜单才可以显示出来

不知是否真的?
因为屏幕菜单的加载没有象顶行菜单一样可以选择。只是显示与不显示的关系。

e2002 发表于 2002-5-27 14:24:00

屏幕菜单可以显示非罪菜单中定义的ScreenMenu,不过...

屏幕菜单可以显示非主菜单中定义的ScreenMenu,不过现在似乎没有办法判断当前显示的ScreenMenu是来自于哪个MenuGroup的,如果xd论坛上的关于AutoCAD XP的消息属实的话,未来因该可以对ScreenMenu有更多的操作可能。

mccad 发表于 2002-5-27 15:54:00

我不喜欢XP两个字母,为什么一定要跟风

bluefcc1 发表于 2018-3-20 13:38:10

下載學習...感謝....

半夜星星 发表于 2018-3-22 07:59:26

有没有实例啊,可以弄一个我们看看呢?谢谢啦
页: [1]
查看完整版本: 自动加载自定义的菜单方法