自定义菜单和工具条
我在论坛找了一个例子,添加了自己的菜单后,为什么第一次用里面的功能不出错,第二次就致命错误了呢?添加的源代码是这样的
public void AddMenu()
{
//COM方式获取AutoCAD应用程序对象
AcadApplication acadApp = (AcadApplication)Application.AcadApplication;
//为AutoCAD添加一个新的菜单,并设置标题为"MoKa插件"
AcadPopupMenu MKMenu = acadApp.MenuGroups.Item(0).Menus.Add("MyToolOne");
//声明一个AutoCAD弹出菜单项,用于获取添加的菜单项对象
AcadPopupMenuItem MKMenuItem;
//在新建的菜单中添加一个名为"横断面"的子菜单
AcadPopupMenu MKMenuItems = MKMenu.AddSubMenu(MKMenu.Count + 1, "功能1 ");
//在"横断面"子菜单下添加子菜单
MKMenuItem = MKMenuItems.AddMenuItem(MKMenuItems.Count + 1, "功能2", "NTK ");
MKMenuItem.HelpString = "功能2";//状态栏提示信息
//添加一个分隔条以区分不同类型的命令
MKMenu.AddSeparator(MKMenu.Count + 1);
//将定义的菜单显示在AutoCAD菜单栏的最后
MKMenu.InsertInMenuBar(acadApp.MenuBar.Count + 1);
}
请问是什么原因引起的?还有就是怎么用c#制作自己的工具条?
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 yxr_MJTD的微博 if (acadApp.MenuGroups.Item(0).Menus.Count == 0)
再往里面加菜单。
还有就是,最好把添加菜单的程序放到try、catch里面吧。 恩8错 回复 epwt 的帖子
添加的时候不会出错。我是说在第二次用NTK这个命令时会出错。 因为已经存在了,我认为你在添加之前应该查询一下是不是已经有了这个菜单。另外我建议是一加载程序集就加载创建菜单的函数,你只需要实现一个接口就可以了,而不是显式地使用命令 我是手工做一个菜单,安装程序时,把菜单复制到指定路径。在加载程序集时,判断一下菜单是否已加载,如果没加载,就加载它。所以只在第一次加载程序集时,才加载菜单。我觉得用COM方式加载不如CAD本身菜单加载方便和快捷。 回复 yxr_MJTD 的帖子
既然你说是第2次使用NTK这个命令时会出错,那你应该查你NTK这个命令对应代码,从你描述看应该和创建菜单没有关系,而是和NTK这个命令对应运行的代码有关 回复 gulong2001 的帖子
但是,我直接用命令是不会出问题的。 AcadApplication
为什么我这里找不到 缺少using引用是肿么了~~ //COM方式获取AutoCAD应用程序对象
AcadApplication acadApp = (AcadApplication)Application.AcadApplication;
引用 ComAutoCAD 2012 Type Library
页:
[1]
2