1、使用注册表进行插件dll的自动加载时Autodesk.Windows.ComponentManager.Ribbon == null需要延迟一下再调用面板的创建代码
2、注册事件
Autodesk.Windows.ComponentManager.ItemInitialized
public void AddRibbon()
{
if (Autodesk.Windows.ComponentManager.Ribbon == null)
{
Autodesk.Windows.ComponentManager.ItemInitialized += new EventHandler<RibbonItemEventArgs>(ComponentManager_ItemInitialized);
}
}
3、在事件中进行创建面板
private void ComponentManager_ItemInitialized(object sender, RibbonItemEventArgs e)
{
if (Autodesk.Windows.ComponentManager.Ribbon != null)
{
//在CAD初始化完成后创建面板
RibbonControl rc = Autodesk.Windows.ComponentManager.Ribbon;
RibbonTab rt = RibbonTab("tabName", "1");
RibbonPanel rp = RibbonPanel("name");
RibbonButton rb = RibbonButton("", "");
rp.Source.Items.Add(rb);
rt.Panels.Add(rp);
rc.Tabs.Add(rt);
rt.IsActive = false;
Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler<RibbonItemEventArgs>(ComponentManager_ItemInitialized);
}
}