如何在Revit中向上下文功能区添加按钮

时间:2017-03-15 20:05:23

标签: c# ribbon revit-api revit

我想为某些上下文功能区添加按钮......具体来说:

Modify | Multi-SelectModify | PipesModify | SprinklersModify | Pipe AccessoriesModify | Pipe FittingsModify | Mechanical EquipmentModify | Generic Models 并将按钮放在我的创作的面板中。我怎么能做到这一点?

我试过了:

if (pTab.Id == "Modify | Pipes")
{
    foreach (var pPanel in pTab.Panels)
    {
        if (pPanel.Source.Id == "Edit") //Also tried edit_shr
        {// Add button.
            pIcon = Properties.Resources.AS_Revit_UI_hydraulicParameters_icon.GetHbitmap();
            var pBtn = new Autodesk.Windows.RibbonButton()
            {
                Name = "Hydraulic Parameters",
                Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(pIcon, IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(32, 32)),
                Id = "id_hydParam",
                AllowInStatusBar = true,
                AllowInToolBar = true,
                GroupLocation = Autodesk.Private.Windows.RibbonItemGroupLocation.Middle,
                MinHeight = 0,
                MinWidth = 0,
                Height = 32,
                Width = 32,
                IsEnabled = true,
                IsVisible = true,
                IsCheckable = true,
                ShowImage = true,
                ShowText = true,
                Orientation = System.Windows.Controls.Orientation.Vertical,
                Text = "Hydraulic Parameters",
                Size = Autodesk.Windows.RibbonItemSize.Large,
                ResizeStyle = Autodesk.Windows.RibbonItemResizeStyles.HideText
            };

            pPanel.Source.Items.Add(pBtn);
            //Add event handler for button push
        }
    }
}

不幸的是,这不起作用。我确信这是可能的 - 我只是不知道如何。我觉得这是一个不知道Revit发布的标签名称的问题 - 就像Modify | Pipes真的像modify_pipes或类似的东西。 上面的代码是我试图将我的按钮放在Revit面板中...有没有办法用我自己的按钮添加我自己的面板?像这样的东西:

enter image description here

这是理想的情况。我对其他任何解决方案都非常满意,例如在现有面板上添加按钮。任何帮助都是很好的帮助!谢谢!

1 个答案:

答案 0 :(得分:2)

这确实可以通过以下方式实现:

  • 在任意位置以正常方式创建功能区面板按钮,位于其中一个默认位置。
  • 使用.NET Automation API将按钮移动到其他位置。

如果目标位置是上下文选项卡,则每次打开选项卡时都可能需要重新定位按钮。

此过程由The Building Coder记录:

http://thebuildingcoder.typepad.com/blog/2014/07/moving-an-external-command-button-within-the-ribbon.html

这不建议用于生产用途,我听说过这种方法可能会导致崩溃和文件损坏,所以要小心!

请注意Disclaimer