Как добавить кнопку на контекстную ленту в Revit

Я хочу добавить кнопки на определенные контекстные ленты...  В частности:

Modify | Multi-Select, Modify | Pipes, Modify | Sprinklers, Modify | Pipe Accessories, Modify | Pipe Fittings, Modify | Mechanical Equipment и Modify | 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...  Есть ли способ добавить свою собственную панель с собственными кнопками? Что-то вроде этого:

введите здесь описание изображения

Это идеальная ситуация. Меня более чем устраивают любые другие решения, такие как добавление кнопок на существующие панели. Любая помощь - хорошая помощь! Спасибо!!


person Uchiha Itachi    schedule 15.03.2017    source источник


Ответы (1)


Это действительно может быть достигнуто следующим образом:

  • Создайте кнопку панели ленты обычным способом, где угодно, в одном из мест по умолчанию.
  • Переместите кнопку в другое место с помощью API автоматизации .NET.

Если вашим целевым местоположением является контекстная вкладка, вам, возможно, придется перемещать кнопку каждый раз, когда вкладка открывается.

Этот процесс задокументирован The Building Coder:

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

Это не рекомендуется для производственного использования, и я слышал сообщения о том, что такой подход может привести к сбоям и повреждению файлов, так что будьте осторожны!

Обратите внимание на Отказ от ответственности!

person Jeremy Tammik    schedule 16.03.2017
comment
Что ж, если это так, то мы этого не делаем... Спасибо, Джереми!! Вы, как обычно, огромная помощь. - person Uchiha Itachi; 16.03.2017
comment
Знаете ли вы, как добавить пользовательскую панель на вкладку Modify? Мы уже добавили к нему кнопки, но было бы красиво и стильно целую панель... - person Uchiha Itachi; 16.03.2017
comment
я думаю, применимо то же самое: создайте панель как обычно с помощью Revit API, а затем переместите ее в нужное место с помощью .NET Automation. - person Jeremy Tammik; 17.03.2017
comment
@JeremyTammik Итак, можем ли мы не скрывать кнопки на разных вкладках модификации? - person SCramphorn; 23.04.2019
comment
API Revit позволяет включать и отключать кнопки с помощью класса доступности команды. Я не верю, что это поддерживает скрытие их. Возможно, вы сможете реализовать это с помощью функциональности библиотеки .NET Automation. - person Jeremy Tammik; 24.04.2019
comment
Вот способ добавить пользовательскую кнопку на вкладку "Изменить". Тем не менее, тщательно протестируйте его и разверните с большой осторожностью, поскольку ходят слухи, что этот подход может привести к нестабильности и сбою Revit! - person Jeremy Tammik; 24.04.2019