15
53
2
初露锋芒
使用道具 举报
13
36
72
2726
9
社区元老
///////////////////////////////////////////////////////////////////////////////////////////////// //http://www.bimcad.org 数字建筑 //深入浅出AutoCAD二次开发(李冠亿) ///////////////////////////////////////////////////////////////////////////////////////////////// using System; using Autodesk.Windows; using Autodesk.AutoCAD.Runtime; [assembly: CommandClass(typeof(Sample.CH6_3_5))] namespace Sample { class CH6_3_5 { [CommandMethod("AddRibbon")] public void AddRibbon() { RibbonControl rc = RibbonControl(); RibbonTab rt = RibbonTab("菜单标签", "1"); RibbonPanel rp = RibbonPanel("菜单面板"); RibbonButton rb = RibbonButton("菜单按钮", "菜单命令"); rp.Source.Items.Add(rb); rt.Panels.Add(rp); rc.Tabs.Add(rt); } /// /// 获得菜单控制 /// /// public static RibbonControl RibbonControl() { if (Autodesk.Windows.ComponentManager.Ribbon == null) Autodesk.Windows.ComponentManager.ItemInitialized += new EventHandler(ComponentManager_ItemInitialized); return ComponentManager.Ribbon; //Autodesk.AutoCAD.Ribbon.RibbonServices.RibbonPaletteSet.RibbonControl; // } /// /// 创建菜单标签 /// /// 标签名 /// 标签ID /// public static RibbonTab RibbonTab(string Name, string id) { RibbonTab ribTab = new Autodesk.Windows.RibbonTab(); ribTab.Title = Name; ribTab.Id = id; ribTab.IsActive = true; return ribTab; } /// /// 创建菜单面板 /// /// 面板名 /// public static RibbonPanel RibbonPanel(string Title) { RibbonPanelSource ribSourcePanel = new RibbonPanelSource(); // Autodesk.Windows ribSourcePanel.Title = Title;//now the panel RibbonPanel ribPanel = new RibbonPanel(); ribPanel.Source = ribSourcePanel; return ribPanel; } /// /// 创建菜单按钮 /// /// 按钮名 /// 命令名 /// public static RibbonButton RibbonButton(string btName, string cmdName) { RibbonButton ribButton = new RibbonButton(); ribButton.Text = btName; ribButton.CommandParameter = 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); } /// /// 执行按钮的命令 /// public class AdskCommandHandler : System.Windows.Input.ICommand { /// /// 是否可执行(接口) /// /// 命令名 /// public bool CanExecute(object parameter) { return true; } /// /// 改变可执行状态 /// public event EventHandler CanExecuteChanged; /// /// 执行命令 /// /// 命令的名字 public void Execute(object parameter) { //is from a Ribbon Button? RibbonButton ribBtn = parameter as RibbonButton; if (ribBtn != null) Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.SendStringToExecute((String)ribBtn.CommandParameter, true, false, true); //is from s Ribbon Textbox? RibbonTextBox ribTxt = parameter as RibbonTextBox; if (ribTxt != null)