主界面就想做成这个样子
3w4ttrgihj3.png
目前遇到的问题是:
当CAD启动后,调用命令,上面的四个区域都可以创建成功
但当我在void IExtensionApplication.Initialize() 中调用时,②面板能够创建成功,但是 ①Ribbon面板和③快捷菜单 无法创建,因为
Autodesk.Windows.RibbonControl rc = Autodesk.Windows.ComponentManager.Ribbon; 这里rc为null值
感觉最简单的方法,就是如果CAD主界面创建成功后,会触发一个事件,然后获取这个事件就好了。不知道有没有这种事件。
如果用局部CUI的方式做界面,我找了几天的资料,网上到时有讲菜单写入CUIX的方法,就是没有找到怎么讲Ribbon面板写入CUIX文件,并且后续的快捷菜单,和工作空间也不知道怎么搞了。
求帮助啊!
附上生成Ribbon的代码
- #region 添加功能区菜单
- [CommandMethod("AddRibbon")]
- public void AddRibbon()
- {
- Autodesk.Windows.RibbonControl rc = GetRibbonControl();
- RibbonTab rt = GetRibbonTab("菜单标签", "1");
- RibbonPanel rp = GetRibbonPanel("菜单面板");
- Autodesk.Windows.RibbonButton rb = GetRibbonButton("菜单按钮", "菜单命令");
- rp.Source.Items.Add(rb);
- rt.Panels.Add(rp);
- rc.Tabs.Add(rt);
- }
- ///
- /// 获得菜单控制
- ///
- ///
- public static Autodesk.Windows.RibbonControl GetRibbonControl()
- {
- if (Autodesk.Windows.ComponentManager.Ribbon == null)
- Autodesk.Windows.ComponentManager.ItemInitialized += new EventHandler(ComponentManager_ItemInitialized);
- return Autodesk.Windows.ComponentManager.Ribbon; //Autodesk..Ribbon.RibbonServices.RibbonPaletteSet.RibbonControl; //
- }
- ///
- /// 创建菜单标签
- ///
- /// 标签名
- /// 标签ID
- ///
- public static RibbonTab GetRibbonTab(string Name, string id)
- {
- RibbonTab ribTab = new Autodesk.Windows.RibbonTab();
- ribTab.Title = Name;
- ribTab.Id = id;
- ribTab.IsActive = true;
- return ribTab;
- }
- ///
- /// 创建菜单面板
- ///
- /// 面板名
- ///
- public static RibbonPanel GetRibbonPanel(string Title)
- {
- Autodesk.Windows.RibbonPanelSource ribSourcePanel = new Autodesk.Windows.RibbonPanelSource(); // Autodesk.Windows
- ribSourcePanel.Title = Title;//now the panel
- RibbonPanel ribPanel = new RibbonPanel();
- ribPanel.Source = ribSourcePanel;
- return ribPanel;
- }
- ///
- /// 创建菜单按钮
- ///
- /// 按钮名
- /// 命令名
- ///
- public static Autodesk.Windows.RibbonButton GetRibbonButton(string btName, string cmdName)
- {
- Autodesk.Windows.RibbonButton ribButton = new Autodesk.Windows.RibbonButton();
-
- ribButton.Text = btName;//按钮名称
- ribButton.CommandParameter = "HelloWorld";//修改的这里//cmdName;执行的命令名称
- ribButton.ShowText = true;
- ribButton.CommandHandler = new AdskCommandHandler();
- return ribButton;
- }
- ///
- /// 用于激活菜单
- ///
- ///
- ///
- static void ComponentManager_ItemInitialized(object sender, RibbonItemEventArgs e)
- {
- if (Autodesk.Windows.ComponentManager.Ribbon != null)
- Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler(ComponentManager_ItemInitialized);
- }
|