epwt 发表于 2013-8-7 17:05:00

打开cad如何自动加载ribbon菜单

写了一个自定义ribbon菜单和一个自定义栏,
我想在打开cad的时候就可以自动加载工具栏和ribbon菜单。
我将自定义工具栏和自定义ribbon菜单的方法写在继承自
Autodesk..Runtime.IExtensionApplication类的Initialize()方法中。
写了一个lisp文件放在cad启动目录中,让他启动时自动加载这个dll。
但是只能加载工具栏,ribbon菜单却无法加载。
看了一下cad的命令,是在启动cad时加载_ribbon命令的。
所以猜想是因为cad本身的ribbon命令还没执行完毕,
RibbonControl对象还为空,所以没办法加载自定义的ribbon菜单。
我想如果我知道cad命令已经加载完了,再控制我的dll自动加载是否就可以了呢?
如果可以,我该如何获得cad启动后自身命令的加载状态?
还望大家指点。
谢谢!

chmenf087 发表于 2013-8-7 20:29:00

可否挂个命令事件 commandend 之后再加载你的

epwt 发表于 2013-8-8 10:33:00


有道理!但是Commanded之后的接口是哪个呢?

chmenf087 发表于 2013-8-9 21:40:00

document.CommandEnded在这个事件之后行不?

epwt 发表于 2013-8-9 22:21:00

多谢chmenf087 !
是在Initialize里委托ComponentManager.ItemInitialized,在此判断Ribbon是否存在,接着创建Ribbon
感谢晓东的回答。
public void Initialize()
{
      Autodesk.Windows.ComponentManager.ItemInitialized += new EventHandler(ComponentManager_ItemInitialized);
}
void ComponentManager_ItemInitialized(object sender, RibbonItemEventArgs e)
{
if (Autodesk.Windows.ComponentManager.Ribbon != null)
{
      createRibbon();
   Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler(ComponentManager_ItemInitialized);
}
}
public static void createRibbon()
{
   //add ribbon here..
}
public void Terminate()
{
}

白糖 发表于 2013-10-14 01:44:00


请教下,在CAD2007环境已实现注册表自动加载,如何实现自动启动命令?

epwt 发表于 2013-10-15 14:58:00


直接在注册的时候把命令添加添加进注册表。

白糖 发表于 2013-10-15 23:59:00


请问具体怎么添加命令注册信息?

舒天01 发表于 2015-5-5 17:24:00


代码差不多 ,就是不知道怎么在注册的时候把命令添加进注册表,看到了能否回复下呀

silent_joe 发表于 2015-12-14 16:19:00


大神,能否把这段代码共享出来,我是新手,很需要。
自己试了很久都不能正常加载工具条。
页: [1]
查看完整版本: 打开cad如何自动加载ribbon菜单