明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8017|回复: 11

求助,期待高人献身讲解CAD中如何添加自定义菜单

  [复制链接]
发表于 2008-10-30 23:06:00 | 显示全部楼层 |阅读模式

我想在cad菜单栏上新增一个下拉菜单,就像文件,编辑,视图一样

我用vba编了一个界面可以实现一些计算绘图等功能,就想在下拉菜单中可以把他调出来

请高手详细指点下~

网上查了下menu, menuload命令,要加载xx.mun,但是如何编辑mnu文件呢

高手能不能举个例子,做一个mnu文件,让下拉菜单下可以实现一个什么最简单的功能

发表于 2008-11-2 14:32:00 | 显示全部楼层

新建TXT文件,输入以下内容:

***MENUGROUP=工具
***POP1

           
         [我的二次开发]
         [1]^C^C_1
         [--]
         [2]^C^C_2
         [--]
         [->3]
           [A]^C^C_A
           [--]
           [<-B]^C^C_B



        保存退出,更改后缀TXT为MNU即可.
        打开CAD,输入MENULOAD,把这个文件加载进去,这样,一个简单的菜单文件就构成了.其中^C^C_后面跟的是快捷命令

发表于 2008-11-5 09:28:00 | 显示全部楼层
"献身"?怕怕!!
发表于 2008-11-14 21:39:00 | 显示全部楼层
aicr317发表于2008-11-2 14:32:00新建TXT文件,输入以下内容:***MENUGROUP=工具***POP1                             

我也这样做过了,怎么就是不行呢??

发表于 2008-11-16 13:50:00 | 显示全部楼层

直接用文本编辑软件对MNU文件进行编辑就可以了

发表于 2008-11-18 00:27:00 | 显示全部楼层

慢慢看吧,我也好久没做了!这是我机子上的源码。

Sub AcadStartup()


    ' 该示例创建一个名为TestMenu 的新菜单,并在其中插入一个菜单项。
    ' 然后将菜单显示在菜单栏中。
    ' 在执行完该宏后如果需要将该菜单删除,可从【工具】菜单的【自定义菜单】项中删除。
   
   

    Dim currMenuGroup As AcadMenuGroup
    Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
   
   
   
   
    ' 创建新菜单
    Dim newMenu As AcadPopupMenu

    Set newMenu = currMenuGroup.Menus.Add("功能")
   
   
    ' 添加一个菜单项到新的菜单中
   
    Dim newMenuItem1, newmenuitem2, newmenuitem3, newmenuitem4 As AcadPopupMenuItem
   
     Dim newMenuItem5, newmenuitem6 As AcadPopupMenuItem
    
    Dim openMacro1, openmacro2, openmacro3, openmacro4 As String
   
    Dim openMacro5, openmacro6, openmacro7 As String
   
    ' 指定宏字符串,该字符串相当于VB中的 "ESC ESC _open "
   
    openMacro1 = Chr(3) & Chr(3) & Chr(95) & "-vbarun xlstocad" & Chr(32)
   
    Set newMenuItem1 = newMenu.AddMenuItem(newMenu.Count + 1, "从EXCEL导至CAD", openMacro1)
   

  
  
    openmacro2 = Chr(3) & Chr(3) & Chr(95) & "-vbarun cadtoxls" & Chr(32)
   
    Set newmenuitem2 = newMenu.AddMenuItem(newMenu.Count + 2, "从CAD导至EXCEL", openmacro2)
   
   
    openmacro3 = Chr(3) & Chr(3) & Chr(95) & "-vbarun shanchul" & Chr(32)
   
    Set newmenuitem3 = newMenu.AddMenuItem(newMenu.Count + 3, "删除文字", openmacro3)
   
    openmacro4 = Chr(3) & Chr(3) & Chr(95) & "-vbarun lcwdmdhgs" & Chr(32)
   
    Set newmenuitem4 = newMenu.AddMenuItem(newMenu.Count + 4, "另存为独门独户改水", openmacro4)
   
    openMacro5 = Chr(3) & Chr(3) & Chr(95) & "-vbarun lcwxz" & Chr(32)
   
    Set newMenuItem5 = newMenu.AddMenuItem(newMenu.Count + 5, "另存为新装", openMacro5)
   
   
    openmacro6 = Chr(3) & Chr(3) & Chr(95) & "-vbarun lcwzzlgs" & Chr(32)
   
    Set newmenuitem6 = newMenu.AddMenuItem(newMenu.Count + 6, "另存为公寓住宅楼改水", openmacro6)
   
    openmacro7 = Chr(3) & Chr(3) & Chr(95) & "-vbarun lcwgsgc" & Chr(32)
   
    Set newmenuitem7 = newMenu.AddMenuItem(newMenu.Count + 7, "另存为公司工程", openmacro7)
   
   
    ' 显示菜单到菜单栏中


      newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.Count + 1)
   
   
   
End Sub

发表于 2008-11-23 04:19:00 | 显示全部楼层
直接做成按钮不就行了,何必搞菜单
 楼主| 发表于 2008-12-6 23:50:00 | 显示全部楼层

非常感谢aicr317

我要的就是像这样的文件

不过现在我还有一点不清楚,  我有个文件 e:\text.dvb,这个文件中有一个模块叫做mk1,模块mk1中有个 sub abc()

现在我想在点“2”时可以调用abc这个代码应该怎么写?

我是这么写的:

***MENUGROUP=工具
***POP1
          
         [我的二次开发]
         [1]^C^C_1
         [--]
         [2]^C^C_vbarun E:\test.dvb!mk1.abc
         [--]
         [->3]
           [A]^C^C_A
           [--]
           ^C^C_c

但是不能实现,不知道为什么,应该这么写“vbarun E:\test.dvb!mk1.abc”吗?

该怎么写?希望还能指教一下

 楼主| 发表于 2008-12-7 00:10:00 | 显示全部楼层

感谢yefeiwolaile

非常感谢yefeiwolaile,你的代码可以添加菜单,但是我还想问一下

如何给这些菜单赋予他们的职责呢,还有重要的一点能不能让这个菜单随CAD自动加载?

发表于 2008-12-7 22:05:00 | 显示全部楼层
night1001发表于2008-12-7 0:10:00非常感谢yefeiwolaile,你的代码可以添加菜单,但是我还想问一下如何给这些菜单赋予他们的职责呢,还有重要的一点能不能让这个菜单随CAD自动加载?

完全可以随CAD一起启动,你不能运行的原因是,你没有设定好你VBA中的模块和宏的名称,你把VBA发上来,我帮你改好菜单文件!

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

本版积分规则

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

GMT+8, 2025-5-4 04:23 , Processed in 0.184105 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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