明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3536|回复: 6

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

[复制链接]
发表于 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 "" (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 | 显示全部楼层

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

 楼主| 发表于 2002-5-26 23:03:00 | 显示全部楼层

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

不知是否真的?
因为屏幕菜单的加载没有象顶行菜单一样可以选择。只是显示与不显示的关系。
发表于 2002-5-27 14:24:00 | 显示全部楼层

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

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

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

发表于 2018-3-20 13:38:10 | 显示全部楼层
下載學習...感謝....
发表于 2018-3-22 07:59:26 | 显示全部楼层
有没有实例啊,可以弄一个我们看看呢?谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 14:44 , Processed in 0.205867 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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