/// <summary> /// Adds the push button. /// </summary> /// <param name="pnl"></param> /// <param name="pbd"></param> /// <param name="pbds"></param> /// <returns></returns> public static void AddPushButton(this RibbonPanel pnl, PulldownButtonData pbd, List <PushButtonData> pbds) { if (!(pnl.AddItem(pbd) is PulldownButton pdbtn)) { return; } pdbtn.ToolTip = pbd.ToolTip; pdbtn.LongDescription = pbd.LongDescription; pdbtn.LargeImage = pbd.LargeImage; foreach (var pbdl in pbds) { var btn = pdbtn.AddPushButton(pbdl); if (btn == null) { continue; } btn.ToolTip = pbdl.ToolTip; btn.LongDescription = pbdl.LongDescription; btn.LargeImage = pbdl.LargeImage; } }
public override RibbonItemData GetItemData() { PulldownButtonData pulldownButtonData = new PulldownButtonData(_name, _text); if (_largeImage != null) { pulldownButtonData.LargeImage = _largeImage; } if (_smallImage != null) { pulldownButtonData.Image = _smallImage; } if (_toolTipsImage != null) { pulldownButtonData.ToolTipImage = _toolTipsImage; } if (!string.IsNullOrWhiteSpace(_toolTips)) { pulldownButtonData.ToolTip = _toolTips; } if (!string.IsNullOrWhiteSpace(_description)) { pulldownButtonData.LongDescription = _description; } if (_contextualHelp != null) { pulldownButtonData.SetContextualHelp(_contextualHelp); } return(pulldownButtonData); }
public SharedParametersMain(UIControlledApplication uIControlledApplication) { string thisAssemblyPath = Assembly.GetExecutingAssembly().Location; RibbonPanel sharedParametersPanel = RibbonPanelSetting.ribbonPanel(uIControlledApplication, "Shared Parameters"); PulldownButtonData loadParameterData = new PulldownButtonData("LoadParameters", "Load Parameters"); RibbonItem loadParameterItem = sharedParametersPanel.AddItem(loadParameterData); PulldownButton loadOptionButton = loadParameterItem as PulldownButton; // Icon made by Smartline from www.flaticon.com loadOptionButton.ToolTip = "To add multiple shared parameters to multiple categories within a project or family."; loadOptionButton.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png"); // Load to project PushButtonData loadToProjectPushButtonData = new PushButtonData("LoadToProject", "Load to project", thisAssemblyPath, "RevitHandyTools.SharedParameters.LoadToProjectCommand"); loadToProjectPushButtonData.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png"); loadToProjectPushButtonData.ToolTip = String.Format( "{0}{1}", "Add multiple shared parameters to multiple categories within a project.\n", "This feature is only available in a project for project template"); loadToProjectPushButtonData.AvailabilityClassName = "RevitHandyTools.AvailableInProjectDocument"; // Load to family PushButtonData loadToFamilyPushButtonData = new PushButtonData("LoadToFamily", "Load to family", thisAssemblyPath, "RevitHandyTools.SharedParameters.LoadToFamilyCommand"); loadToFamilyPushButtonData.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png"); loadToFamilyPushButtonData.ToolTip = String.Format( "{0}{1}", "Add multiple shared parameters to multiple categories within a family.\n", "This feature is only available in a family"); loadToFamilyPushButtonData.AvailabilityClassName = "RevitHandyTools.AvailableInFamilyDocument"; // Add buttons loadOptionButton.AddPushButton(loadToProjectPushButtonData); loadOptionButton.AddSeparator(); loadOptionButton.AddPushButton(loadToFamilyPushButtonData); }
internal override ButtonData Finish() { PulldownButtonData pulldownButtonData = new PulldownButtonData(_name, _text); if (_largeImage != null) { pulldownButtonData.LargeImage = _largeImage; } if (_smallImage != null) { pulldownButtonData.Image = _smallImage; } if (_description != null) { pulldownButtonData.LongDescription = _description; } if (_contextualHelp != null) { pulldownButtonData.SetContextualHelp(_contextualHelp); } //pulldownButtonData. //_panel.Source.AddItem(pushButtonData); return(pulldownButtonData); }
public Result OnStartup(UIControlledApplication uic_app) { // get existing SOM Ribbon Tab var panels = uic_app.GetRibbonPanels("SOM Tools"); if (null == panels) { uic_app.CreateRibbonTab("SOM Tools"); } // get or create panel RibbonPanel panel = panels.Where(x => x.Name == "SOM-NY").FirstOrDefault(); if (null == panel) { panel = uic_app.CreateRibbonPanel("SOM Tools", "SOM NY"); } // pull down button PulldownButtonData pdBtnData = new PulldownButtonData("SOMNY_Utils", "UTILITIES"); RibbonItem ribbonItem = panel.AddItem(pdBtnData); PulldownButton pdBtn = ribbonItem as PulldownButton; // get assembly string ExecutingAssemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location; string ExecutingAssemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; string ExecutingAssemblyDirectory = Path.GetDirectoryName(ExecutingAssemblyPath); // add items pdBtn.AddPushButton(new PushButtonData("RenumberAreasByPickSeq", "Re-Number Areas By Pick Order", Path.Combine(ExecutingAssemblyDirectory, "RenumberAreasByPickSeq.dll"), "RenumberAreasByPickSeq.Cmd_PickAreasBySeq")); return(Result.Succeeded); }
private void AddMenu(UIControlledApplication app) { //菜单栏 RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup"); PulldownButtonData data = new PulldownButtonData("Options", "Revit Lookup"); RibbonItem item = rvtRibbonPanel.AddItem(data); //下拉框 PulldownButton optionsBtn = item as PulldownButton; // Add Icons to main RevitLookup Menu optionsBtn.Image = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png"); optionsBtn.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png"); //去掉HelloWorld的命令 //optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld")); optionsBtn.AddPushButton(new PushButtonData("查看数据库...", "查看数据库...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb")); optionsBtn.AddPushButton(new PushButtonData("查看当前选择...", "查看当前选择...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")); optionsBtn.AddPushButton(new PushButtonData("查看活动视图...", "查看活动视图...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView")); optionsBtn.AddPushButton(new PushButtonData("查看应用...", "查看应用...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp")); optionsBtn.AddPushButton(new PushButtonData("按ID查看...", "按ID查看...", ExecutingAssemblyPath, "RevitLookup.CmdSearchBy")); //optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell")); var pushbutton = rvtRibbonPanel.AddItem(new PushButtonData("快速查看", "快速查看", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")) as PushButton; pushbutton.Image = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png"); pushbutton.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png"); var pushbuttonSearch = rvtRibbonPanel.AddItem(new PushButtonData("按ID查看", "按ID查看", ExecutingAssemblyPath, "RevitLookup.CmdSearchBy")) as PushButton; pushbuttonSearch.Image = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png"); pushbuttonSearch.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png"); }
internal override RibbonItemData Finish() { var pulldownButtonData = new PulldownButtonData(Name, Text); if (LargeImage != null) { pulldownButtonData.LargeImage = LargeImage; } if (SmallImage != null) { pulldownButtonData.Image = SmallImage; } if (Description != null) { pulldownButtonData.LongDescription = Description; } if (ContextualHelp != null) { pulldownButtonData.SetContextualHelp(ContextualHelp); } return(pulldownButtonData); }
private void CreateRibbonPanel(UIControlledApplication application) { string resourceDir = CommonUtils.Utils.GetResourceDir(); string buttonIcons32 = Path.Combine(resourceDir, CommonUtils.DefineUtils.ICONS_32_DIR); string buttonIcons16 = Path.Combine(resourceDir, CommonUtils.DefineUtils.ICONS_16_DIR); // Create a custom ribbon tab application.CreateRibbonTab(Define.RevitToolRibbonTab); #region About string assembly = @"C:\ProgramData\Autodesk\Revit\Addins\2019\OpeningCombiler" + @"\OpeningTools.dll"; // Add Combine ribbon panel RibbonPanel combineRibbonPanel = application.CreateRibbonPanel(Define.RevitToolRibbonTab, Define.CombinePanel); assembly = @"C:\ProgramData\Autodesk\Revit\Addins\2019\OpeningCombiler" + @"\CommonOpeningTools.dll"; // create pull down button for Combine opening PulldownButtonData combineDownButton = new PulldownButtonData("Combine Opening", "Combine \nOpening"); PulldownButton groupCombine = combineRibbonPanel.AddItem(combineDownButton) as PulldownButton; combineDownButton.LargeImage = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening32x32.png"), UriKind.Absolute)); combineDownButton.Image = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening16X16.png"), UriKind.Absolute)); groupCombine.LargeImage = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening32x32.png"), UriKind.Absolute)); groupCombine.Image = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening16X16.png"), UriKind.Absolute)); // add button for synchronize PushButtonData synchronoursButtonData = new PushButtonData("Synchronous", "Synchronous", assembly, "CommonTools.OpeningClient.Synchronize.Commandata"); PushButton synchronoursBtn = groupCombine.AddPushButton(synchronoursButtonData) as PushButton; synchronoursBtn.LargeImage = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening_Synchronous32x32.png"), UriKind.Absolute)); synchronoursBtn.Image = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening_Synchronous16x16.png"), UriKind.Absolute)); synchronoursBtn.ToolTip = "Synchronous"; #endregion About }
/// <summary> /// Add ribbon panel /// </summary> /// <param name="a"></param> private void AddRibbonPanel(UIControlledApplication a) { Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = a.CreateRibbonPanel("Archilizer FEI"); PulldownButtonData data = new PulldownButtonData("Options", "Family Editor" + Environment.NewLine + "Interface"); BitmapSource img32 = new BitmapImage (new Uri (@largeIcon)); BitmapSource img16 = new BitmapImage (new Uri (@smallIcon)); //RibbonItem item = rvtRibbonPanel.AddItem(data); //PushButton optionsBtn = item as PushButton; //ContextualHelp ch = new ContextualHelp(ContextualHelpType.Url, "file:///C:/Users/adicted/AppData/Roaming/Autodesk/Revit/Addins/2015/Family Editor Interface _ AutoCAD _ Autodesk App Store.html"); ContextualHelp ch = new ContextualHelp(ContextualHelpType.Url, @helpFile); PushButton familyEI = rvtRibbonPanel.AddItem(new PushButtonData("Family Editor", "Family Editor" + Environment.NewLine + "Interface", path, "FamilyEditorInterface.Command")) as PushButton; familyEI.Image = img16; familyEI.LargeImage = img32; familyEI.ToolTip = Message; familyEI.SetContextualHelp(ch); //optionsBtn.AddPushButton(new PushButtonData("Automatic Dimensions", "AutoDim", path, // "AutomaticDimensions.AutoDim")); //optionsBtn.AddPushButton(new PushButtonData("CAD|BIM", "CAD|BIM", path, // "BimpowAddIn.BimToCad")); }
/// <summary> /// Pulldown button for "Command Data", "DB Element" and "Element Filtering" /// </summary> public void AddPulldownButton(RibbonPanel panel) { // Create three push buttons for pulldown button drop down // #1 PushButtonData pushButtonData1 = new PushButtonData("PulldownCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData"); pushButtonData1.LargeImage = NewBitmapImage("Basics.ico"); // #2 PushButtonData pushButtonData2 = new PushButtonData("PulldownDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement"); pushButtonData2.LargeImage = NewBitmapImage("Basics.ico"); // #3 PushButtonData pushButtonData3 = new PushButtonData("PulldownElementFiltering", "Filtering", _introLabPath, _introLabName + ".ElementFiltering"); pushButtonData3.LargeImage = NewBitmapImage("Basics.ico"); // Make a pulldown button now PulldownButtonData pulldownBtnData = new PulldownButtonData("PulldownButton", "Pulldown"); PulldownButton pulldownBtn = panel.AddItem(pulldownBtnData) as PulldownButton; pulldownBtn.AddPushButton(pushButtonData1); pulldownBtn.AddPushButton(pushButtonData2); pulldownBtn.AddPushButton(pushButtonData3); }
public Result OnStartup(UIControlledApplication a) { m_MyFormClearInstance = null; m_MyFormLineStyles = null; m_MyFormLinePatterns = null; // no dialog needed yet; the command will bring it thisApp = this; // static access to this application instance string fullPath = System.Reflection.Assembly.GetExecutingAssembly().Location; string folderPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string myRibbon = "AECOM"; a.CreateRibbonTab(myRibbon); RibbonPanel panelA = a.CreateRibbonPanel(myRibbon, "AECOM Tools"); //Pull Down Button PulldownButtonData pullDownData = new PulldownButtonData("General Tools", "General Tools"); pullDownData.Image = new BitmapImage(new Uri(Path.Combine(folderPath, "tools_16.png"), UriKind.Absolute)); pullDownData.LargeImage = new BitmapImage(new Uri(Path.Combine(folderPath, "tools_32.png"), UriKind.Absolute)); PulldownButton pullDownButton = panelA.AddItem(pullDownData) as PulldownButton; PushButton btnClearInstancesPullDown = pullDownButton.AddPushButton(new PushButtonData("ClearDWG", "Clear imported DWG", fullPath, "GeneralTools.CommandClearInstances")); PushButton btnDeleteLineStyles = pullDownButton.AddPushButton(new PushButtonData("Line Styles", "Line Styles Descr", fullPath, "GeneralTools.CommandLineStyles")); PushButton btnRenameLineStylesPullDown = pullDownButton.AddPushButton(new PushButtonData("Line Patterns", "Rename Line Styles", fullPath, "GeneralTools.CommandLinePatterns")); return(Result.Succeeded); }
public static bool CreateUI(ScriptPkg pkg, RibbonHandler ribbon) { // -------------------------------------------------------------------- // FIND SCRIPTS // -------------------------------------------------------------------- var items = pkg.FindLinkedItems(); // -------------------------------------------------------------------- // CREATE ASSEMBLY // -------------------------------------------------------------------- // generate assembly containing script command types var lsa = new LinkedScriptAssembly(); // create types for all the scripts in the structure ProcessLinkedScripts(items, (script) => { script.ScriptCommandType = lsa.MakeScriptCommandType(script); }); // save and load the created assembly lsa.SaveAndLoad(); // -------------------------------------------------------------------- // CREATE UI // -------------------------------------------------------------------- RibbonPanel panel; try { panel = ribbon.CreateAddinPanel(pkg.Name); } catch { return(false); } // Currently only supporting two levels in the UI: // 1) Pushbuttons on panel for every LinkedScript at the root level // 2) Pulldowns containing pushbuttons for all the LinkedScripts recursively found under their directory // Lets make the pulldowns first so they are first on the panel items.OfType <LinkedItemGroup>().ToList().ForEach((group) => { var pullDownData = new PulldownButtonData(group.Name, group.Name) { Image = ImageBuilder.LoadRibbonButtonImage("Ribbon.Grasshopper.GhFolder.png", true), LargeImage = ImageBuilder.LoadRibbonButtonImage("Ribbon.Grasshopper.GhFolder.png"), ToolTip = group.Tooltip, }; if (panel.AddItem(pullDownData) is PulldownButton pulldown) { ProcessLinkedScripts(group.Items, (script) => { AddPullDownButton(pulldown, script, lsa); }); } }); // now make pushbuttons items.OfType <LinkedScript>().ToList().ForEach((script) => { AddPanelButton(panel, script, lsa); }); return(true); }
/// <summary> /// 创建下拉按钮 /// </summary> /// <param name="panel"></param> /// <param name="splitname"></param> /// <param name="plugins"></param> /// <returns></returns> private static PulldownButtonData CreatePullButton(RibbonPanel panel, string splitname, List <IFangCommand> plugins) { PulldownButtonData pulldown = new PulldownButtonData(splitname, splitname); pulldown.Image = plugins[0].ImageURI; pulldown.LargeImage = plugins[0].ImageURI; return(pulldown); }
private void AddMenu(UIControlledApplication app) { RibbonPanel ribbonPanel = app.CreateRibbonPanel("Revit Family Utilities"); PulldownButtonData data = new PulldownButtonData("Options", "Revit Family Utilities"); RibbonItem item = ribbonPanel.AddItem(data); PulldownButton opt = item as PulldownButton; opt.AddPushButton(new PushButtonData("File Upgrade", "File Upgrade", ExecutingAssemblyPath, "FamilyUtilities.FileUpgrade")); opt.AddPushButton(new PushButtonData("Parameter Manager", "Parameter Manager", ExecutingAssemblyPath, "FamilyUtilities.ParameterManager")); }
/// <summary> /// Stacked Buttons - combination of: push button, dropdown button, combo box and text box. /// (no radio button group, split buttons). /// Here we define 6 buttons, make grouping of 1, 3, 2 items, and stack them in three layer: /// (1) simple push button with "Hello World" /// (2) pull down with 3 items: "Command Data", "DB Element" and "Element Filtering". /// (3) pull down with 2 items: "Element Modification" and "Model Creation" /// </summary> public void AddStackedButtons_Complex(RibbonPanel panel) { // Create six push buttons to group for pull down and stack up // #0 PushButtonData pushButtonData0 = new PushButtonData("StackComplexHelloWorld", "Hello World", _introLabPath, _introLabName + ".HelloWorld"); pushButtonData0.Image = NewBitmapImage("Basics.ico"); // #1 PushButtonData pushButtonData1 = new PushButtonData("StackComplexCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData"); pushButtonData1.Image = NewBitmapImage("Basics.ico"); // #2 PushButtonData pushButtonData2 = new PushButtonData("StackComplexDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement"); // #3 PushButtonData pushButtonData3 = new PushButtonData("StackComplexElementFiltering", "Filtering", _introLabPath, _introLabName + ".ElementFiltering"); // #4 PushButtonData pushButtonData4 = new PushButtonData("StackComplexElementModification", "Modify", _introLabPath, _introLabName + ".ElementModification"); // #5 PushButtonData pushButtonData5 = new PushButtonData("StackComplexModelCreation", "Create", _introLabPath, _introLabName + ".ModelCreation"); // Make two sets of pull down PulldownButtonData pulldownBtnData1 = new PulldownButtonData("StackComplePulldownButton1", "DB Basics"); PulldownButtonData pulldownBtnData2 = new PulldownButtonData("StackComplePulldownButton2", "Modeling"); // Create three item stack. IList <RibbonItem> stackedItems = panel.AddStackedItems(pushButtonData0, pulldownBtnData1, pulldownBtnData2); PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton; PulldownButton pulldownBtn3 = stackedItems[2] as PulldownButton; pulldownBtn2.Image = NewBitmapImage("Basics.ico"); pulldownBtn3.Image = NewBitmapImage("House.ico"); // Add each sub items PushButton button1 = pulldownBtn2.AddPushButton(pushButtonData1); PushButton button2 = pulldownBtn2.AddPushButton(pushButtonData2); PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3); PushButton button4 = pulldownBtn3.AddPushButton(pushButtonData4); PushButton button5 = pulldownBtn3.AddPushButton(pushButtonData5); // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. button1.Image = NewBitmapImage("Basics.ico"); button2.Image = NewBitmapImage("Basics.ico"); button3.Image = NewBitmapImage("Basics.ico"); button4.Image = NewBitmapImage("Basics.ico"); button5.Image = NewBitmapImage("Basics.ico"); }
private void AddMenu(UIControlledApplication app) { // get the ribbon tab try { app.CreateRibbonTab(RIBBON_TAB); } catch (Exception) { } // tab already exists // get or create panel RibbonPanel panel = null; List <RibbonPanel> panels = app.GetRibbonPanels(RIBBON_TAB); foreach (RibbonPanel pnl in panels) { if (pnl.Name == RIBBON_PANEL) { panel = pnl; break; } } // couldn find the panel if (panel == null) { panel = app.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL); } PulldownButtonData data = new PulldownButtonData("Options", RIBBON_PANEL); RibbonItem item = panel.AddItem(data); PulldownButton optionsBtn = item as PulldownButton; // get the image for the button Image img = Properties.Resources.location32x32; ImageSource imgSrc = GetImageSources(img); // create button data PushButtonData btnData = new PushButtonData( "CursorCoord", "Cursor" + "\n" + "Coordinates", ExecutingAssemblyPath, "Coord.Revit.RibbonButton.Command") { ToolTip = "Click to save the cursor coordinates", LongDescription = "This button makes you save the coordinates of the cursor while you hover over the screen.", Image = imgSrc, LargeImage = imgSrc }; // add the button to the ribbon PushButton button = panel.AddItem(btnData) as PushButton; button.Enabled = true; }
static void AddRibbonPanel(UIControlledApplication application) { // Create a custom ribbon panel String tabName = "Archilizer"; String version = "1.0.1"; try { application.CreateRibbonTab(tabName); } catch (Exception) { } RibbonPanel ribbonPanel = application.CreateRibbonPanel(tabName, "Purge +"); // Get dll assembly path string thisAssemblyPath = Assembly.GetExecutingAssembly().Location; PushButtonData delBackupsBtn = CreatePushButton("Delete Backups", "1. Delete Backups", thisAssemblyPath, "Archilizer_Purge.CommandDeleteBackups", "Deletes those pesky .00??.rvt files.", "purge.png", "purge_small.png"); PushButtonData dwgBtn = CreatePushButton("Imported DWG Files", "2. Imported DWG Files", thisAssemblyPath, "Archilizer_Purge.PurgeImportedDWG", "Purges imported (but not linked) DWG files in the current project.", "purge.png", "purge_small.png"); PushButtonData dwgLinesBtn = CreatePushButton("DWG Line Patterns", "3. DWG Line Patterns", thisAssemblyPath, "Archilizer_Purge.PurgeImportedLinePatterns", "Purges line patterns brought by imported DWG files.", "purge.png", "purge_small.png"); PushButtonData viewsBtn = CreatePushButton("Views not on Sheets", "4. Views not on Sheets", thisAssemblyPath, "Archilizer_Purge.CommandViewsNotOnSheets", "Purges Views not placed on Sheets. Use at your own risk!", "purge.png", "purge_small.png"); PushButtonData vtemplateBtn = CreatePushButton("Unused View Templates", "5. Unused View Templates", thisAssemblyPath, "Archilizer_Purge.PurgeUnusedTemplates", "Purges Unused View Templates.", "purge.png", "purge_small.png"); PushButtonData filtersBtn = CreatePushButton("Unused Filters", "6. Unused Filters", thisAssemblyPath, "Archilizer_Purge.PurgeFilters", "Purges Unused Filters (Filters that have never been assigned to a View or a View Template).", "purge.png", "purge_small.png"); PulldownButtonData pd1 = new PulldownButtonData("purgeButton", "Purge"); pd1.ToolTip = String.Format("v{0}", version); BitmapImage pdImage = new BitmapImage(new Uri(String.Format("pack://application:,,,/Archilizer_Purge;component/Resources/{0}", "purge.png"))); pd1.LargeImage = pdImage; pd1.Image = pdImage; PulldownButton pd = ribbonPanel.AddItem(pd1) as PulldownButton; pd.AddPushButton(delBackupsBtn); pd.AddPushButton(dwgBtn); pd.AddPushButton(dwgLinesBtn); pd.AddPushButton(viewsBtn); pd.AddPushButton(vtemplateBtn); pd.AddPushButton(filtersBtn); }
public override void BuildPanelButtons() { PushButtonMaker buttonMaker = new PushButtonMaker(new Info()); buttonMaker.BuildPushButtonData(); PushButtonData buttonData = buttonMaker.GetPushButtonData(); PushButton button = Panel.AddItem(buttonData) as PushButton; #region Visual PulldownButtonData visualPulldownButtonData = new PulldownButtonData("Visual", "Visual"); visualPulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/visibility.png"); PulldownButton visualPulldownButton = Panel.AddItem(visualPulldownButtonData) as PulldownButton; #endregion PulldownButtonData selectionPulldownButtonData = new PulldownButtonData("Selection", "Selection"); selectionPulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/hands-and-gestures.png"); PulldownButton selectionPulldownButton = Panel.AddItem(selectionPulldownButtonData) as PulldownButton; #region Parameters PulldownButtonData parametersPulldownButtonData = new PulldownButtonData("Parameters", "Parameters"); parametersPulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/controls.png"); PulldownButton parametersPulldownButton = Panel.AddItem(parametersPulldownButtonData) as PulldownButton; buttonMaker = new PushButtonMaker(new ShowParameterEditor()); buttonMaker.BuildPushButtonData(); buttonData = buttonMaker.GetPushButtonData(); button = parametersPulldownButton.AddPushButton(buttonData) as PushButton; #endregion PulldownButtonData viewsPulldownButtonData = new PulldownButtonData("Views", "Views"); viewsPulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/crop.png"); PulldownButton viewsPulldownButton = Panel.AddItem(viewsPulldownButtonData) as PulldownButton; PulldownButtonData worksharingPulldownButtonData = new PulldownButtonData("Worksharing", "Worksharing"); worksharingPulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/network.png"); PulldownButton worksharingPulldownButton = Panel.AddItem(worksharingPulldownButtonData) as PulldownButton; PulldownButtonData analyzePulldownButtonData = new PulldownButtonData("Analyze", "Analyze"); analyzePulldownButtonData.LargeImage = AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/analytics.png"); PulldownButton analyzePulldownButton = Panel.AddItem(analyzePulldownButtonData) as PulldownButton; }
/// <summary> /// Add buttons for the commands we define in this labs. /// Here we stack three push buttons and repeat it as we get more. /// </summary> public void AddUILabsCommandButtons(RibbonPanel panel) { // Get the location of this dll. string assembly = GetType().Assembly.Location; // Create three push buttons to stack up // #1 PushButtonData pushButtonData1 = new PushButtonData("UILabsSelection", "Pick Sampler", assembly, _uiLabName + ".UISelection"); pushButtonData1.Image = NewBitmapImage("basics.ico"); // #2 PushButtonData pushButtonData2 = new PushButtonData("UILabsCreateHouse", "Create House Pick", assembly, _uiLabName + ".UICreateHouse"); pushButtonData2.Image = NewBitmapImage("House.ico"); // #3 PushButtonData pushButtonData3 = new PushButtonData("UILabsTaskDialog", "Dialog Sampler", assembly, _uiLabName + ".UITaskDialog"); pushButtonData3.Image = NewBitmapImage("basics.ico"); // #4 PushButtonData pushButtonData4 = new PushButtonData("UILabsCreateHouseDialog", "Create House Dialog", assembly, _uiLabName + ".UICreateHouseDialog"); pushButtonData4.Image = NewBitmapImage("House.ico"); // #5 // Make three sets of pull down PulldownButtonData pulldownBtnData1 = new PulldownButtonData("UILabsPulldownButton1", "Selection"); PulldownButtonData pulldownBtnData2 = new PulldownButtonData("UILabsPulldownButton2", "Task Dialog"); // Create three item stack. IList <RibbonItem> stackedItems = panel.AddStackedItems(pulldownBtnData1, pulldownBtnData2); PulldownButton pulldownBtn1 = stackedItems[0] as PulldownButton; PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton; pulldownBtn1.Image = NewBitmapImage("Basics.ico"); pulldownBtn2.Image = NewBitmapImage("Basics.ico"); // Add each sub items PushButton button1 = pulldownBtn1.AddPushButton(pushButtonData1); PushButton button2 = pulldownBtn1.AddPushButton(pushButtonData2); PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3); PushButton button4 = pulldownBtn2.AddPushButton(pushButtonData4); // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. button1.Image = NewBitmapImage("Basics.ico"); button2.Image = NewBitmapImage("Basics.ico"); button3.Image = NewBitmapImage("Basics.ico"); button4.Image = NewBitmapImage("Basics.ico"); }
public void PullDown(RibbonPanel panel) { //creates a Push button for the get selection command PushButtonData bgetselect = new PushButtonData("getselec", "Get Selection", assemblyloca, "Application.getSelection"); //creates a Push button for the get Collection command PushButtonData bgetCollect = new PushButtonData("getcoll", "Get Collection", assemblyloca, "Application.getCollection"); //creates a pull down menu PulldownButtonData pdb1 = new PulldownButtonData("WallsSelection","Wall Selector"); //assigns the pulldown menu to our panel PulldownButton pdb = panel.AddItem(pdb1) as PulldownButton; //adds the buttons above to the pulldown menu pdb.AddPushButton(bgetselect); pdb.AddPushButton(bgetCollect); }
//进行各种按钮的属性设置 public void AddButtonIteam(ref RibbonPanel ribbon, string buttonType, string tabName, string buttonText, string assemblyName, string className, string largeImageuri, string toolTip, string longDescription) { switch (buttonType) { case "PushButton": PushButtonData pbd = new PushButtonData(tabName, buttonText, assemblyName, className); //tabName可用可不用? SetPushButtonAttribute(ref ribbon, pbd, largeImageuri, toolTip, longDescription); break; case "PulldownButton": PulldownButtonData pdbd = new PulldownButtonData("柱", "柱"); SetPulldownButtonAttribute(ref ribbon, assemblyName, className, pdbd, largeImageuri, toolTip, longDescription); break; case "SplitButton": SplitButtonData sbd = new SplitButtonData("板", "板"); //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription); break; case "ComboBox": ComboBoxData cbd = new ComboBoxData(""); //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription); break; case "RadioButtonGroup": RadioButtonGroupData rbgd = new RadioButtonGroupData(""); //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription); break; case "ToggleButton": ToggleButtonData tbd = new ToggleButtonData("", ""); //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription); break; case "TextBox": TextBoxData textbd = new TextBoxData(""); //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription); break; default: break; } }
public void PullDown(RibbonPanel panel) { //creates a Push button for the get selection command PushButtonData bgetselect = new PushButtonData("getselec", "Get Selection", assemblyloca, "Application.getSelection"); //creates a Push button for the get Collection command PushButtonData bgetCollect = new PushButtonData("getcoll", "Get Collection", assemblyloca, "Application.getCollection"); //creates a pull down menu PulldownButtonData pdb1 = new PulldownButtonData("WallsSelection", "Wall Selector"); //assigns the pulldown menu to our panel PulldownButton pdb = panel.AddItem(pdb1) as PulldownButton; //adds the buttons above to the pulldown menu pdb.AddPushButton(bgetselect); pdb.AddPushButton(bgetCollect); }
private void AddMenu(UIControlledApplication app) { Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup"); PulldownButtonData data = new PulldownButtonData("Options", "Revit Lookup"); RibbonItem item = rvtRibbonPanel.AddItem(data); PulldownButton optionsBtn = item as PulldownButton; optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld")); optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb")); optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")); optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp")); optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell")); optionsBtn.AddPushButton(new PushButtonData("Events...", "Events...", ExecutingAssemblyPath, "RevitLookup.CmdEvents")); }
private void AddMenu(UIControlledApplication app) { Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup"); PulldownButtonData data = new PulldownButtonData("Options", "Revit Lookup"); RibbonItem item = rvtRibbonPanel.AddItem(data); PulldownButton optionsBtn = item as PulldownButton; optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld")); optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb")); optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")); optionsBtn.AddPushButton(new PushButtonData("Snoop Active View...", "Snoop Active View...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView")); optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp")); optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell")); optionsBtn.AddPushButton(new PushButtonData("Events...", "Events...", ExecutingAssemblyPath, "RevitLookup.CmdEvents")); }
private void CreateVisibilitySwitcherCommandsOnRibbonAsSlideOut() { _ribbonPanel.AddSlideOut(); PulldownButtonData pdbd = new PulldownButtonData("VisibiitySwitcher", "VisibiitySwitcher"); PulldownButton pulldownButton = _ribbonPanel.AddItem(pdbd) as PulldownButton; foreach (var commandSetting in _settingsInterpreter.VisibilitySwitcherCommandSettings) { PushButtonData dynamicCommandPushButton = CreateVisibilitySwitcherPushButtonDataFromSetting(commandSetting); dynamicCommandPushButton.ToolTip = commandSetting.VisibilityNameRegex; pulldownButton.AddPushButton(dynamicCommandPushButton); } }
public Result OnStartup(UIControlledApplication application) { application.CreateRibbonTab("UCD场地工具"); RibbonPanel panel1 = application.CreateRibbonPanel("UCD场地工具", "欢迎页"); PushButtonData pbd = new PushButtonData("UCD场地工具", "欢迎使用", @"D:\Studay\CSharp\Work\Revit\HelloRevit\bin\Debug\HelloRevit.dll", "HelloRevit.Class1"); PushButton pb = panel1.AddItem(pbd) as PushButton; RibbonPanel panel2 = application.CreateRibbonPanel("UCD场地工具", "工具"); SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具"); SplitButton sb = panel2.AddItem(splitData) as SplitButton; PushButtonData spd = new PushButtonData("UCD场地工具", "创建", @"D:\Studay\CSharp\Work\Revit\Create2\bin\Debug\Create2.dll", "Create2.CreateBox") { LargeImage = new BitmapImage(new Uri(@"D:\Studay\CSharp\Work\Revit\Ribbon1\img\sign_road.png")) }; sb.AddPushButton(spd); panel2.AddSeparator(); PulldownButtonData pdbd = new PulldownButtonData("UCD场地工具", "检查"); PushButtonData pushbtn = new PushButtonData("UCD场地工具", "碰撞检查", @"D:\Studay\CSharp\Work\Revit\Collision\bin\Debug\Collision.dll", "Collision.Class1"); PulldownButton btn = panel2.AddItem(pushbtn) as PulldownButton; btn.LongDescription = "检查当前物体是否碰撞"; btn.AddPushButton(pushbtn); RibbonPanel panel3 = application.CreateRibbonPanel("UCD场地工具", "文件"); ComboBoxData cbd = new ComboBoxData("选项"); ComboBox cBox = panel3.AddItem(cbd) as ComboBox; if (cBox != null) { cBox.ItemText = "选择操作"; cBox.ToolTip = "请选择想要进行的操作"; cBox.LongDescription = "选择一直接关闭,选择二关闭并修改"; ComboBoxMemberData cbmd = new ComboBoxMemberData("A", "关闭"); ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改"); cbmd.GroupName = "编辑操作"; cBox.AddItem(cbmd); cBox.AddItem(cbmd2); } cBox.CurrentChanged += Change; cBox.CurrentChanged += Closed; return(Result.Succeeded); }
public Result OnStartup(UIControlledApplication application) { try { RibbonPanel ribbonPanel = application.CreateRibbonPanel("Tools"); string thisAssemblyPath = Assembly.GetExecutingAssembly().Location; //Pulldownbutton PulldownButtonData group1Data = new PulldownButtonData("pullDownButton1", "Room number"); PulldownButton group1 = ribbonPanel.AddItem(group1Data) as PulldownButton; //Button (Change selected rooms number) PushButtonData pushButtonData1 = new PushButtonData("pushButtonData1", "Changes room number", thisAssemblyPath, "FinalniZadatak._1.zadatak.ChangeRoomNumber"); string uri1 = "pack://application:,,,/FinalniZadatak;component/Resources/changeRoomNum.png"; string tooltip1 = "Changes number of selected rooms from list of all rooms in model"; SetPushDownButton(group1, pushButtonData1, tooltip1, uri1); // Button ( Change all rooms numbers in model) PushButtonData pushButtonData2 = new PushButtonData("pushButtonData2", "Changes rooms numbers", thisAssemblyPath, "FinalniZadatak._1.zadatak.AutoChangeRoomsNumbers"); string uri2 = "pack://application:,,,/FinalniZadatak;component/Resources/changeRoomsNums.png"; string tooltip2 = "Changes numbers of all rooms in model automatically"; SetPushDownButton(group1, pushButtonData2, tooltip2, uri2); group1.LargeImage = new BitmapImage(new Uri(uri1)); //Button (List of furniture) PushButtonData pushButtonData3 = new PushButtonData("pushButtonData3", "Furniture", thisAssemblyPath, "FinalniZadatak._2.zadatak.Furniture"); string uri3 = "pack://application:,,,/FinalniZadatak;component/Resources/furnitureList.png"; string tooltip3 = "Show all parameters of furniture in active view sorted by type"; SetPushButton(ribbonPanel, pushButtonData3, tooltip3, uri3); //Button (Change element parameter) PushButtonData pushButtonData4 = new PushButtonData("pushButtonData4", "Parameters", thisAssemblyPath, "FinalniZadatak._3.zadatak.ChangeElParam"); string uri4 = "pack://application:,,,/FinalniZadatak;component/Resources/changeElemParam.png"; string tooltip4 = "Allows user to select one element from model and change element parameter with string storage type and if parameter is not read-only."; tooltip4 += "This command will change same parameter to all elements in model with same type as selected element"; SetPushButton(ribbonPanel, pushButtonData4, tooltip4, uri4); } catch (Exception ex) { TaskDialog.Show("Excepton", ex.Message); } return(Result.Succeeded); }
/// <summary> /// Creates a pulldown button. /// </summary> /// <param name="pnl"></param> /// <param name="pbd"></param> /// <param name="pbds"></param> /// <returns></returns> public static PulldownButton AddPushButton(this RibbonPanel pnl, PulldownButtonData pbd, IEnumerable <PushButtonData> pbds) { if (pnl is null) { throw new ArgumentNullException(nameof(pnl)); } if (pbd is null) { throw new ArgumentNullException(nameof(pbd)); } if (pbds is null) { throw new ArgumentNullException(nameof(pbds)); } if (!(pnl.AddItem(pbd) is PulldownButton result)) { throw new InvalidCastException(); } result.ToolTip = pbd.ToolTip; result.LongDescription = pbd.LongDescription; result.LargeImage = pbd.LargeImage; foreach (var pbdl in pbds) { var btn = result.AddPushButton(pbdl); if (btn is null) { continue; } btn.ToolTip = pbdl.ToolTip; btn.LongDescription = pbdl.LongDescription; btn.LargeImage = pbdl.LargeImage; } return(result); }
public PulldownButtonData add_items(List <string> infor_addin) //name_in_UI | name_image | tooltip { PulldownButtonData pull_down = null; try { // add a pull-down button to the panel pull_down = new PulldownButtonData(infor_addin[0], infor_addin[0]); Uri imageSourseGetQuantity = new Uri(pathImage + infor_addin[1]); pull_down.LargeImage = new BitmapImage(imageSourseGetQuantity); pull_down.ToolTip = infor_addin[2]; } catch (Exception) { } return(pull_down); }
/// <summary> /// Add samples of categories not in default categories /// </summary> private void AddCustomizedPulldownMenus() { int iCount = m_customizedMenus.Count; // Sort sample items in every category by display name SortSampleItemsInOneCategory(m_customizedMenus); int i = 0; while (iCount >= 3) { string name = m_customizedMenus.Keys[i++]; PulldownButtonData data1 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data2 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data3 = new PulldownButtonData(name, name); IList <RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2, data3); AddSamplesToStackedButtons(buttons); iCount -= 3; } if (iCount == 2) { string name = m_customizedMenus.Keys[i++]; PulldownButtonData data1 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data2 = new PulldownButtonData(name, name); IList <RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2); AddSamplesToStackedButtons(buttons); } else if (iCount == 1) { string name = m_customizedMenus.Keys[i]; PulldownButtonData pulldownButtonData = new PulldownButtonData(name, name); PulldownButton button = m_panelRvtSamples.AddItem(pulldownButtonData) as PulldownButton; List <SampleItem> sampleItems = m_customizedMenus.Values[m_customizedMenus.IndexOfKey(button.Name)]; foreach (SampleItem item in sampleItems) { AddSampleToPulldownMenu(button, item); } } }
private void AddMenu(UIControlledApplication app) { RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup"); PulldownButtonData data = new PulldownButtonData("Options", "Revit Lookup"); RibbonItem item = rvtRibbonPanel.AddItem(data); PulldownButton optionsBtn = item as PulldownButton; // Add Icons to main RevitLookup Menu optionsBtn.Image = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png"); optionsBtn.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png"); optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld")); optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb")); optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")); optionsBtn.AddPushButton(new PushButtonData("Snoop Active View...", "Snoop Active View...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView")); optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp")); optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell")); }
private void AddRibbonPanel(UIControlledApplication app) { RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("STF Exporter: v" + Assembly.GetExecutingAssembly().GetName().Version); PulldownButtonData data = new PulldownButtonData("Options", "STF Export"); RibbonItem pb_item = rvtRibbonPanel.AddItem(data); PulldownButton optionsBtn = pb_item as PulldownButton; optionsBtn.AddPushButton(new PushButtonData("STF Export CP1251", "Export with CP1251 charsets", assyPath, "STFExporter.CmdExportAsCP1251")); optionsBtn.AddPushButton(new PushButtonData("STF Export UTF8", "Export with UTF8 charsets", assyPath, "STFExporter.CmdExportAsUTF8")); optionsBtn.AddPushButton(new PushButtonData("About..", "About dialog", assyPath, "STFExporter.AboutDlg")); optionsBtn.LargeImage = NewBitmapImage("stfexport.png"); optionsBtn.ToolTip = "Export Revit Spaces to STF file"; optionsBtn.LongDescription = "Exports Spaces in Revit model to STF file for use in application such as DIALux"; //ContextualHe/lp contextHelp = new ContextualHelp(ContextualHelpType.ChmFile, dir + "/Resources/STFExporter Help.htm"); ContextualHelp contextHelp = new ContextualHelp(ContextualHelpType.Url, "https://github.com/kmorin/STF-Exporter"); pb_item.SetContextualHelp(contextHelp); }
public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application) { RibbonPanel rvtRibbonPanel = application.CreateRibbonPanel("CadFaster, Inc."); PulldownButtonData data = new PulldownButtonData("Options", "CadFaster, Inc."); RibbonItem item = rvtRibbonPanel.AddItem(data); PulldownButton optionsBtn = item as PulldownButton; optionsBtn.AddPushButton(new PushButtonData("ExeWrite", "ExeWrite", @"C:\CadFaster\Revit\CF_RevitBridge.dll", "ExeWriter.CF_RevitBridge")); //PushButton pushButton = ribbonPanel.AddPushButton("ExeWrite", "ExeWrite", //@"G:\Projects\reload_addin\RevitPlugin\Bridge\bin\Debug\Bridge.dll", "rev.Bridge"); Uri uriImageMain = new Uri(@"C:\CadFaster\Revit\Images\Company.gif"); BitmapImage largeImageMain = new BitmapImage(uriImageMain); optionsBtn.LargeImage = largeImageMain; return(Autodesk.Revit.UI.Result.Succeeded); }
/// <summary> /// Add buttons for the commands we define in this labs. /// Here we stack three push buttons and repeat it as we get more. /// </summary> public void AddUILabsCommandButtons(RibbonPanel panel) { // Get the location of this dll. string assembly = GetType().Assembly.Location; // Create three push buttons to stack up // #1 PushButtonData pushButtonData1 = new PushButtonData("UILabsSelection", "Pick Sampler", assembly, _uiLabName + ".UISelection"); pushButtonData1.Image = NewBitmapImage("basics.ico"); // #2 PushButtonData pushButtonData2 = new PushButtonData("UILabsCreateHouse", "Create House Pick", assembly, _uiLabName + ".UICreateHouse"); pushButtonData2.Image = NewBitmapImage("House.ico"); // #3 PushButtonData pushButtonData3 = new PushButtonData("UILabsTaskDialog", "Dialog Sampler", assembly, _uiLabName + ".UITaskDialog"); pushButtonData3.Image = NewBitmapImage("basics.ico"); // #4 PushButtonData pushButtonData4 = new PushButtonData("UILabsCreateHouseDialog", "Create House Dialog", assembly, _uiLabName + ".UICreateHouseDialog"); pushButtonData4.Image = NewBitmapImage("House.ico"); // #5 // Make three sets of pull down PulldownButtonData pulldownBtnData1 = new PulldownButtonData("UILabsPulldownButton1", "Selection"); PulldownButtonData pulldownBtnData2 = new PulldownButtonData("UILabsPulldownButton2", "Task Dialog"); // Create three item stack. IList<RibbonItem> stackedItems = panel.AddStackedItems(pulldownBtnData1, pulldownBtnData2); PulldownButton pulldownBtn1 = stackedItems[0] as PulldownButton; PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton; pulldownBtn1.Image = NewBitmapImage("Basics.ico"); pulldownBtn2.Image = NewBitmapImage("Basics.ico"); // Add each sub items PushButton button1 = pulldownBtn1.AddPushButton(pushButtonData1); PushButton button2 = pulldownBtn1.AddPushButton(pushButtonData2); PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3); PushButton button4 = pulldownBtn2.AddPushButton(pushButtonData4); // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. button1.Image = NewBitmapImage("Basics.ico"); button2.Image = NewBitmapImage("Basics.ico"); button3.Image = NewBitmapImage("Basics.ico"); button4.Image = NewBitmapImage("Basics.ico"); }
/// <summary> /// Add samples of categories not in default categories /// </summary> private void AddCustomizedPulldownMenus() { int iCount = m_customizedMenus.Count; // Sort sample items in every category by display name SortSampleItemsInOneCategory(m_customizedMenus); int i = 0; while (iCount >= 3) { string name = m_customizedMenus.Keys[i++]; PulldownButtonData data1 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data2 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data3 = new PulldownButtonData(name, name); IList<RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2, data3); AddSamplesToStackedButtons(buttons); iCount -= 3; } if (iCount == 2) { string name = m_customizedMenus.Keys[i++]; PulldownButtonData data1 = new PulldownButtonData(name, name); name = m_customizedMenus.Keys[i++]; PulldownButtonData data2 = new PulldownButtonData(name, name); IList<RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2); AddSamplesToStackedButtons(buttons); } else if (iCount == 1) { string name = m_customizedMenus.Keys[i]; PulldownButtonData pulldownButtonData = new PulldownButtonData(name, name); PulldownButton button = m_panelRvtSamples.AddItem(pulldownButtonData) as PulldownButton; List<SampleItem> sampleItems = m_customizedMenus.Values[m_customizedMenus.IndexOfKey(button.Name)]; foreach (SampleItem item in sampleItems) { AddSampleToPulldownMenu(button, item); } } }
/// <summary> /// Implement this method to implement the external application which should be called when /// Revit starts before a file or default template is actually loaded. /// </summary> /// <param name="application">An object that is passed to the external application /// which contains the controlled application.</param> /// <returns>Return the status of the external application. /// A result of Succeeded means that the external application successfully started. /// Cancelled can be used to signify that the user cancelled the external operation at /// some point. /// If false is returned then Revit should inform the user that the external application /// failed to load and the release the internal reference.</returns> public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application) { m_application = application; Autodesk.Revit.UI.Result rc = Autodesk.Revit.UI.Result.Failed; try { // Check whether the file contains samples' list exists // If not, return failure string filename = m_fileNameStem; if (!GetFilepath(ref filename)) { ErrorMsg(m_fileNameStem + " not found."); return rc; } // Read all lines from the file string[] lines = ReadAllLinesWithInclude(filename); // Remove comments lines = RemoveComments(lines); // Add default pulldown menus of samples to Revit m_panelRvtSamples = application.CreateRibbonPanel("RvtSamples"); int i = 0; List<PulldownButtonData> pdData = new List<PulldownButtonData>(3); foreach(string category in Enum.GetNames(typeof(DefaultPulldownMenus))) { if((i + 1) % 3 == 1) { pdData.Clear(); } // // Prepare PulldownButtonData for add stacked buttons operation // string displayName = GetDisplayNameByEnumName(category); List<SampleItem> sampleItems = new List<SampleItem>(); m_defaultMenus.Add(category, sampleItems); PulldownButtonData data = new PulldownButtonData(displayName, displayName); pdData.Add(data); // // Add stacked buttons to RvtSamples panel and set their display names and images // if ((i + 1) % 3 == 0) { IList<RibbonItem> addedButtons = m_panelRvtSamples.AddStackedItems(pdData[0], pdData[1], pdData[2]); foreach (RibbonItem item in addedButtons) { String name = item.ItemText; string enumName = GetEnumNameByDisplayName(name); PulldownButton button = item as PulldownButton; button.Image = new BitmapImage( new Uri(Path.Combine(s_assemblyDirectory, "Icons\\" + enumName + ".ico"), UriKind.Absolute)); button.ToolTip = Properties.Resource.ResourceManager.GetString(enumName); m_pulldownButtons.Add(name, button); } } i++; } // // Add sample items to the pulldown buttons // int n = lines.GetLength(0); int k = 0; while (k < n) { AddSample(lines, n, ref k); } AddSamplesToDefaultPulldownMenus(); AddCustomizedPulldownMenus(); rc = Autodesk.Revit.UI.Result.Succeeded; } catch (Exception e) { ErrorMsg(e.Message); } return rc; }
/// <summary> /// Create a ribbon panel for the MEP sample application. /// We present a column of three buttons: Electrical, HVAC and About. /// The first two include subitems, the third does not. /// </summary> static void AddRibbonPanel( UIControlledApplication a) { const int nElectricalCommands = 3; const string m = "AdnRme.Cmd"; // namespace and command prefix string path = Assembly.GetExecutingAssembly().Location; string[] text = new string[] { "Electrical Connectors", "Electrical System Browser", //"Electrical Hierarchy", //"Electrical Hierarchy 2", "Unhosted elements", "Assign flow to terminals", "Change size", "Populate CFM per SF on spaces", "Reset demo", "About..." }; string[] classNameStem = new string[] { "ElectricalConnectors", "ElectricalSystemBrowser", //"ElectricalHierarchy", //"ElectricalHierarchy2", "UnhostedElements", "AssignFlowToTerminals", "ChangeSize", "PopulateCfmPerSf", "ResetDemo", "About" }; int n = classNameStem.Length; Debug.Assert( text.Length == n, "expected equal number of text and class name entries" ); // Create three stacked buttons for the HVAC, // electrical and about commands, respectively: RibbonPanel panel = a.CreateRibbonPanel( "MEP Sample" ); PulldownButtonData d1 = new PulldownButtonData( "Electrical", "Electrical" ); d1.ToolTip = "Electrical Commands"; PulldownButtonData d2 = new PulldownButtonData( "Hvac", "HVAC" ); d2.ToolTip = "HVAC Commands"; n = n - 1; PushButtonData d3 = new PushButtonData( classNameStem[n], text[n], path, m + classNameStem[n] ); d3.ToolTip = "About the HVAC and Electrical MEP Sample."; IList<RibbonItem> ribbonItems = panel.AddStackedItems( d1, d2, d3 ); // Add subitems to the HVAC and // electrical pulldown buttons: PulldownButton pulldown; PushButton pb; int i, j; for( i = 0; i < n; ++i ) { j = i < nElectricalCommands ? 0 : 1; pulldown = ribbonItems[j] as PulldownButton; PushButtonData pbd = new PushButtonData( text[i], text[i], path, m + classNameStem[i] ); pb = pulldown.AddPushButton( pbd ); pb.ToolTip = text[i]; } }
/// <summary> /// Stacked Buttons - combination of: push button, dropdown button, combo box and text box. /// (no radio button group, split buttons). /// Here we define 6 buttons, make grouping of 1, 3, 2 items, and stack them in three layer: /// (1) simple push button with "Hello World" /// (2) pull down with 3 items: "Command Data", "DB Element" and "Element Filtering". /// (3) pull down with 2 items: "Element Modification" and "Model Creation" /// </summary> public void AddStackedButtons_Complex(RibbonPanel panel) { // Create six push buttons to group for pull down and stack up // #0 PushButtonData pushButtonData0 = new PushButtonData("StackComplexHelloWorld", "Hello World", _introLabPath, _introLabName + ".HelloWorld"); pushButtonData0.Image = NewBitmapImage("Basics.ico"); // #1 PushButtonData pushButtonData1 = new PushButtonData("StackComplexCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData"); pushButtonData1.Image = NewBitmapImage("Basics.ico"); // #2 PushButtonData pushButtonData2 = new PushButtonData("StackComplexDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement"); // #3 PushButtonData pushButtonData3 = new PushButtonData("StackComplexElementFiltering", "Filtering", _introLabPath, _introLabName + ".ElementFiltering"); // #4 PushButtonData pushButtonData4 = new PushButtonData("StackComplexElementModification", "Modify", _introLabPath, _introLabName + ".ElementModification"); // #5 PushButtonData pushButtonData5 = new PushButtonData("StackComplexModelCreation", "Create", _introLabPath, _introLabName + ".ModelCreation"); // Make two sets of pull down PulldownButtonData pulldownBtnData1 = new PulldownButtonData("StackComplePulldownButton1", "DB Basics"); PulldownButtonData pulldownBtnData2 = new PulldownButtonData("StackComplePulldownButton2", "Modeling"); // Create three item stack. IList<RibbonItem> stackedItems = panel.AddStackedItems(pushButtonData0, pulldownBtnData1, pulldownBtnData2); PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton; PulldownButton pulldownBtn3 = stackedItems[2] as PulldownButton; pulldownBtn2.Image = NewBitmapImage("Basics.ico"); pulldownBtn3.Image = NewBitmapImage("House.ico"); // Add each sub items PushButton button1 = pulldownBtn2.AddPushButton(pushButtonData1); PushButton button2 = pulldownBtn2.AddPushButton(pushButtonData2); PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3); PushButton button4 = pulldownBtn3.AddPushButton(pushButtonData4); PushButton button5 = pulldownBtn3.AddPushButton(pushButtonData5); // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. button1.Image = NewBitmapImage("Basics.ico"); button2.Image = NewBitmapImage("Basics.ico"); button3.Image = NewBitmapImage("Basics.ico"); button4.Image = NewBitmapImage("Basics.ico"); button5.Image = NewBitmapImage("Basics.ico"); }
/// <summary> /// This method is used to create RibbonSample panel, and add wall related command buttons to it: /// 1. contains a SplitButton for user to create Non-Structural or Structural Wall; /// 2. contains a StackedBotton which is consisted with one PushButton and two Comboboxes, /// PushButon is used to reset all the RibbonItem, Comboboxes are use to select Level and WallShape /// 3. contains a RadioButtonGroup for user to select WallType. /// 4. Adds a Slide-Out Panel to existing panel with following functionalities: /// 5. a text box is added to set mark for new wall, mark is a instance parameter for wall, /// Eg: if user set text as "wall", then Mark for each new wall will be "wall1", "wall2", "wall3".... /// 6. a StackedButton which consisted of a PushButton (delete all the walls) and a PulldownButton (move all the walls in X or Y direction) /// </summary> /// <param name="application">An object that is passed to the external application /// which contains the controlled application.</param> private void CreateRibbonSamplePanel(UIControlledApplication application) { // create a Ribbon panel which contains three stackable buttons and one single push button. string firstPanelName = "Ribbon Sample"; RibbonPanel ribbonSamplePanel = application.CreateRibbonPanel(firstPanelName); #region Create a SplitButton for user to create Non-Structural or Structural Wall SplitButtonData splitButtonData = new SplitButtonData("NewWallSplit", "Create Wall"); SplitButton splitButton = ribbonSamplePanel.AddItem(splitButtonData) as SplitButton; PushButton pushButton = splitButton.AddPushButton(new PushButtonData("WallPush", "Wall", AddInPath, "Revit.SDK.Samples.Ribbon.CS.CreateWall")); pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall.png"), UriKind.Absolute)); pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall-S.png"), UriKind.Absolute)); pushButton.ToolTip = "Creates a partition wall in the building model."; pushButton.ToolTipImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWallTooltip.bmp"), UriKind.Absolute)); pushButton = splitButton.AddPushButton(new PushButtonData("StrWallPush", "Structure Wall", AddInPath, "Revit.SDK.Samples.Ribbon.CS.CreateStructureWall")); pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall.png"), UriKind.Absolute)); pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall-S.png"), UriKind.Absolute)); #endregion ribbonSamplePanel.AddSeparator(); #region Add a StackedButton which is consisted of one PushButton and two Comboboxes PushButtonData pushButtonData = new PushButtonData("Reset", "Reset", AddInPath, "Revit.SDK.Samples.Ribbon.CS.ResetSetting"); ComboBoxData comboBoxDataLevel = new ComboBoxData("LevelsSelector"); ComboBoxData comboBoxDataShape = new ComboBoxData("WallShapeComboBox"); IList<RibbonItem> ribbonItemsStacked = ribbonSamplePanel.AddStackedItems(pushButtonData, comboBoxDataLevel, comboBoxDataShape); ((PushButton)(ribbonItemsStacked[0])).Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Reset.png"), UriKind.Absolute)); //Add options to WallShapeComboBox Autodesk.Revit.UI.ComboBox comboboxWallShape = (Autodesk.Revit.UI.ComboBox)(ribbonItemsStacked[2]); ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData("RectangleWall", "RectangleWall"); ComboBoxMember comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData); comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "RectangleWall.png"), UriKind.Absolute)); comboBoxMemberData = new ComboBoxMemberData("CircleWall", "CircleWall"); comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData); comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CircleWall.png"), UriKind.Absolute)); comboBoxMemberData = new ComboBoxMemberData("TriangleWall", "TriangleWall"); comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData); comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "TriangleWall.png"), UriKind.Absolute)); comboBoxMemberData = new ComboBoxMemberData("SquareWall", "SquareWall"); comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData); comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "SquareWall.png"), UriKind.Absolute)); #endregion ribbonSamplePanel.AddSeparator(); #region Add a RadioButtonGroup for user to select WallType RadioButtonGroupData radioButtonGroupData = new RadioButtonGroupData("WallTypeSelector"); RadioButtonGroup radioButtonGroup = (RadioButtonGroup)(ribbonSamplePanel.AddItem(radioButtonGroupData)); ToggleButton toggleButton = radioButtonGroup.AddItem(new ToggleButtonData("Generic8", "Generic - 8\"", AddInPath, "Revit.SDK.Samples.Ribbon.CS.Dummy")); toggleButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Generic8.png"), UriKind.Absolute)); toggleButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Generic8-S.png"), UriKind.Absolute)); toggleButton = radioButtonGroup.AddItem(new ToggleButtonData("ExteriorBrick", "Exterior - Brick", AddInPath, "Revit.SDK.Samples.Ribbon.CS.Dummy")); toggleButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "ExteriorBrick.png"), UriKind.Absolute)); toggleButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "ExteriorBrick-S.png"), UriKind.Absolute)); #endregion //slide-out panel: ribbonSamplePanel.AddSlideOut(); #region add a Text box to set the mark for new wall TextBoxData testBoxData = new TextBoxData("WallMark"); Autodesk.Revit.UI.TextBox textBox = (Autodesk.Revit.UI.TextBox)(ribbonSamplePanel.AddItem(testBoxData)); textBox.Value = "new wall"; //default wall mark textBox.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "WallMark.png"), UriKind.Absolute)); textBox.ToolTip = "Set the mark for new wall"; textBox.ShowImageAsButton = true; textBox.EnterPressed += new EventHandler<Autodesk.Revit.UI.Events.TextBoxEnterPressedEventArgs>(SetTextBoxValue); #endregion ribbonSamplePanel.AddSeparator(); #region Create a StackedButton which consisted of a PushButton (delete all the walls) and a PulldownButton (move all the walls in X or Y direction) PushButtonData deleteWallsButtonData = new PushButtonData("deleteWalls", "Delete Walls", AddInPath, "Revit.SDK.Samples.Ribbon.CS.DeleteWalls"); deleteWallsButtonData.ToolTip = "Delete all the walls created by the Create Wall tool."; deleteWallsButtonData.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "DeleteWalls.png"), UriKind.Absolute)); PulldownButtonData moveWallsButtonData = new PulldownButtonData("moveWalls", "Move Walls"); moveWallsButtonData.ToolTip = "Move all the walls in X or Y direction"; moveWallsButtonData.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWalls.png"), UriKind.Absolute)); // create stackable buttons IList<RibbonItem> ribbonItems = ribbonSamplePanel.AddStackedItems(deleteWallsButtonData, moveWallsButtonData); // add two push buttons as sub-items of the moveWalls PulldownButton. PulldownButton moveWallItem = ribbonItems[1] as PulldownButton; PushButton moveX = moveWallItem.AddPushButton(new PushButtonData("XDirection", "X Direction", AddInPath, "Revit.SDK.Samples.Ribbon.CS.XMoveWalls")); moveX.ToolTip = "move all walls 10 feet in X direction."; moveX.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWallsXLarge.png"), UriKind.Absolute)); PushButton moveY = moveWallItem.AddPushButton(new PushButtonData("YDirection", "Y Direction", AddInPath, "Revit.SDK.Samples.Ribbon.CS.YMoveWalls")); moveY.ToolTip = "move all walls 10 feet in Y direction."; moveY.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWallsYLarge.png"), UriKind.Absolute)); #endregion ribbonSamplePanel.AddSeparator(); application.ControlledApplication.DocumentCreated += new EventHandler<Autodesk.Revit.DB.Events.DocumentCreatedEventArgs>(DocumentCreated); }