【问题标题】:How to add a button to a contextual ribbon in Revit如何在 Revit 中将按钮添加到上下文功能区
【发布时间】:2017-03-15 20:05:23
【问题描述】:

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

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 面板中......有没有办法用我自己的按钮添加我自己的面板?像这样的东西:

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

【问题讨论】:

    标签: c# ribbon revit-api revit


    【解决方案1】:

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

    • 在您喜欢的任何位置,在默认位置之一,以正常方式创建功能区面板按钮。
    • 使用 .NET 自动化 API 将按钮移动到其他位置。

    如果您的目标位置是上下文选项卡,您可能必须在每次打开选项卡时重新定位按钮。

    The Building Coder 记录了此过程:

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

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

    请注意Disclaimer

    【讨论】:

    • 好吧,如果是这样的话,那我们就不做了……谢谢杰里米!像往常一样,你是一个巨大的帮助。
    • 您知道将自定义面板添加到Modify 选项卡的方法吗?我们已经为它添加了按钮,但是整个面板会很漂亮和优雅......
    • 我认为同样适用:使用 Revit API 正常创建面板,然后使用 .NET 自动化将其移动到所需位置。
    • @JeremyTammik 那么,我们可以不隐藏不同修改选项卡上的按钮吗?
    • Revit API 使您能够使用命令可用性类启用和禁用按钮。我不相信它支持隐藏它们。您可以使用 .NET 自动化库功能来实现它。
    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    相关资源
    最近更新 更多