乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 140|回复: 8

读取和删除菜单

[复制链接]

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-11 17:03:59 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

64

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2006-12-11 17:31:11 | 显示全部楼层
您可以直接在代码中构建菜单。从{ACAD_DIR}\Sample\VBA\VBAIDEMenu\检查custom_menu.dvb。
回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-11 17:50:08 | 显示全部楼层
只要知道2007处理菜单的方式非常不同。
适用于2004年的代码不适用于2007年,2007年的菜单很困难。
回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 08:16:35 | 显示全部楼层
哦,太好了......我应该编写一个适用于所有用户的程序,但现在我发现这是不可能的......
回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 08:43:06 | 显示全部楼层
不是不可能,只是有很多乐趣。那你想做什么,也许我们能帮上忙
回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 10:02:03 | 显示全部楼层
我知道用Lisp代码回答VBA主题很有趣,但再次强调,knowlendge是Knolenge,不应该隐藏()。
我找到了一种轻松加载和删除菜单的方法:
首先,我将filedia系统变量设置为0,以便通过代码操作AutoCAD。
使用MENULOAD命令加载我想要的菜单,然后使用MENULOAD删除它
我恢复了filedia值,仅此而已<嗯,没有……原因是我还没有在菜单行中插入菜单下拉列表。有人知道我如何用代码做到这一点吗?
回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 10:19:05 | 显示全部楼层

  1. Sub Example_InsertInMenuBar()
  2.     ' This example creates a new menu called TestMenu and inserts a menu item
  3.     ' into it. The menu is then displayed on the menu bar.
  4.     ' To remove the menu after execution of this macro, use the Customize Menu
  5.     ' option from the Tools menu.
  6.    
  7.     Dim currMenuGroup As acadMenuGroup
  8.     Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
  9.    
  10.     ' Create the new menu
  11.     Dim newMenu As AcadPopupMenu
  12.     Set newMenu = currMenuGroup.Menus.Add("TestMenu")
  13.    
  14.     ' Add a menu item to the new menu
  15.     Dim newMenuItem As AcadPopupMenuItem
  16.     Dim openMacro As String
  17.     ' Assign the macro string the VB equivalent of "ESC ESC _open "
  18.     openMacro = Chr(3) & Chr(3) & Chr(95) & "open" & Chr(32)
  19.    
  20.     Set newMenuItem = newMenu.AddMenuItem(newMenu.count + 1, "Open", openMacro)
  21.    
  22.     ' Display the menu on the menu bar
  23.     newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.count + 1)
  24.    
  25. End Sub
  26.   

回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 10:20:44 | 显示全部楼层
和删除
  1. Sub Example_RemoveFromMenuBar()
  2.     ' This example creates a new menu called TestMenu and inserts a menu item
  3.     ' into it. The menu is then displayed on the menu bar, and then
  4.     ' removed from the menu bar.
  5.    
  6.     Dim currMenuGroup As acadMenuGroup
  7.     Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
  8.    
  9.     ' Create the new menu
  10.     Dim newMenu As AcadPopupMenu
  11.     Set newMenu = currMenuGroup.Menus.Add("TestMenu")
  12.    
  13.     ' Add a menu item to the new menu
  14.     Dim newMenuItem As AcadPopupMenuItem
  15.     Dim openMacro As String
  16.     ' Assign the macro string the VB equivalent of "ESC ESC _open "
  17.     openMacro = Chr(3) & Chr(3) & Chr(95) & "open" & Chr(32)
  18.    
  19.     Set newMenuItem = newMenu.AddMenuItem(newMenu.count + 1, "Open", openMacro)
  20.    
  21.     ' Display the menu on the menu bar
  22.     newMenu.InsertInMenuBar (ThisDrawing.Application.MenuBar.count + 1)
  23.     GoSub QUERYMENU
  24.    
  25.     ' Remove the menu from the menu bar
  26.     newMenu.RemoveFromMenuBar
  27.     GoSub QUERYMENU
  28.     Exit Sub
  29.    
  30. QUERYMENU:
  31.     If newMenu.OnMenuBar Then
  32.         MsgBox "The menu called " & newMenu.name & " is on the menu bar."
  33.     Else
  34.         MsgBox "The menu called " & newMenu.name & " is not on the menu bar."
  35.     End If
  36.     Return
  37.         
  38. End Sub

回复

使用道具 举报

23

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2006-12-12 14:32:51 | 显示全部楼层
是的,我知道我知道...今天下午在贝鲁的时候,我在VBA的帮助下展示了这个。但是我发现了一个更简单的方法!使用AutoLISP!就是这里:
( menucmd "P12=+MyMenuGroup。MyMenuName" )
将从指定的菜单组(MyMenugroup)加载指定的菜单(MyMenuName),该菜单组应已使用MENLOAD命令加载。在上面的示例中,菜单被添加到菜单行上的位置12之前。
因此,只需3行代码,就可以加载、指定选项和卸载菜单!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 05:35 , Processed in 1.649838 second(s), 81 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表