public override Result Execute(ExternalCommandData data, ref string message, Autodesk.Revit.DB.ElementSet elements) { var result = Result.Failed; string rhinoTab = Addin.RhinoVersionInfo?.ProductName ?? "Rhinoceros"; if (RhinoCommand.Availability.Available) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { return(Rhinoceros.RunCommandAbout()); } using (var modal = new Rhinoceros.ModalScope()) result = modal.Run(false, true); // If no windows are visible we show the Ribbon tab if (result == Result.Cancelled) { result = data.Application.ActivateRibbonTab(rhinoTab) ? Result.Succeeded : Result.Failed; } return(result); } result = Addin.CheckSetup(); if (result != Result.Succeeded) { return(result); } result = Revit.OnStartup(Revit.ApplicationUI); if (RhinoCommand.Availability.Available = result == Result.Succeeded) { // Update Rhino button Tooltip Button.ToolTip = $"Restores previously visible Rhino windows on top of Revit window"; Button.LongDescription = $"Use CTRL key to open a Rhino model"; // Register UI on Revit data.Application.CreateRibbonTab(rhinoTab); var RhinocerosPanel = data.Application.CreateRibbonPanel(rhinoTab, "Rhinoceros"); HelpCommand.CreateUI(RhinocerosPanel); RhinocerosPanel.AddSeparator(); CommandRhino.CreateUI(RhinocerosPanel); CommandPython.CreateUI(RhinocerosPanel); var GrasshopperPanel = data.Application.CreateRibbonPanel(rhinoTab, "Grasshopper"); CommandGrasshopper.CreateUI(GrasshopperPanel); CommandGrasshopperPlayer.CreateUI(GrasshopperPanel); CommandGrasshopperPreview.CreateUI(GrasshopperPanel); CommandGrasshopperRecompute.CreateUI(GrasshopperPanel); CommandGrasshopperBake.CreateUI(GrasshopperPanel); var SamplesPanel = data.Application.CreateRibbonPanel(rhinoTab, "Samples"); Samples.Sample1.CreateUI(SamplesPanel); Samples.Sample4.CreateUI(SamplesPanel); Samples.Sample6.CreateUI(SamplesPanel); Samples.Sample8.CreateUI(SamplesPanel); } if (result == Result.Succeeded) { // Activate Rhinoceros Tab result = data.Application.ActivateRibbonTab(rhinoTab) ? Result.Succeeded : Result.Failed; } else { // No more loads in this session Button.Enabled = false; Button.ToolTip = "Failed to load."; } return(result); }