using System; using System.Reflection; using System.Windows.Media.Imaging; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.Windows; using acApp = Autodesk.AutoCAD.ApplicationServices.Application; namespace MyRibbonButton { public class Commands { BitmapImage getBitmap(string fileName) { BitmapImage bmp = new BitmapImage(); // BitmapImage.UriSource must be in a BeginInit/EndInit block. bmp.BeginInit(); bmp.UriSource = new Uri(string.Format("pack://application:,,,/{0};component/{1}", Assembly.GetExecutingAssembly().GetName().Name, fileName)); bmp.EndInit(); return bmp; } [CommandMethod("MyRibbonButton")] public void MyRibbonButton() { Autodesk.Windows.RibbonControl ribbonControl = Autodesk.Windows.ComponentManager.Ribbon; // create Ribbon tab RibbonTab Tab = new RibbonTab(); Tab.Title = "Oak RibbonTab"; Tab.Id = "OAKRIBBON_TAB_ID"; ribbonControl.Tabs.Add(Tab); // create Ribbon panel Autodesk.Windows.RibbonPanelSource srcPanel = new RibbonPanelSource(); srcPanel.Title = "Panel_Oak"; RibbonPanel Panel = new RibbonPanel(); Panel.Source = srcPanel; Tab.Panels.Add(Panel); // create the buttons listed in the split button Autodesk.Windows.RibbonButton button1 = new RibbonButton(); button1.Text = "Button1"; button1.ShowText = true; button1.ShowImage = true; button1.LargeImage = getBitmap("a_large.png"); button1.Image = getBitmap("a_small.png"); button1.CommandHandler = new MyCmdHandler(); Autodesk.Windows.RibbonButton button2 = new RibbonButton(); button2.Text = "Button2"; button2.ShowText = true; button2.ShowImage = true; button2.LargeImage = getBitmap("b_large.png"); button2.Image = getBitmap("b_small.png"); button2.CommandHandler = new MyCmdHandler(); button2.Size = RibbonItemSize.Large; button2.Orientation = System.Windows.Controls.Orientation.Vertical; srcPanel.Items.Add(button1); srcPanel.Items.Add(button2); Tab.IsActive = true; } public class MyCmdHandler : System.Windows.Input.ICommand { public bool CanExecute(object parameter) { return true; } public event EventHandler CanExecuteChanged; public void Execute(object parameter) { Document doc = acApp.DocumentManager.MdiActiveDocument; if (parameter is RibbonButton) { RibbonButton button = parameter as RibbonButton; doc.Editor.WriteMessage("\nRibbonButton Executed: " + button.Text + "\n"); } } } } }