Взаимодействие стандартных кнопок Revit и плагина

Автор Тема: Взаимодействие стандартных кнопок Revit и плагина  (Прочитано 2611 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн BazingaАвтор темы

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Как можно реализовать запуск своего плагина при нажатии на стандартные кнопки (Стена, Дверь, Окно и т.п.)?

До недавнего времени, считала, что такое в принципе нереально сделать (т.к. плагин запускается по команде из внешних инструментов (там команда - command), а если через application (но нельзя создать 2 одинаковые кнопки), а как оказалось можно http://sixtysecondrevit.com/2017-08-29-revit-in-place-family-warning-plugin-status/

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Не знаю зачем это нужно. Я бы за такое...

Я практически уверен, что это делается через использование события BeforeExecuted Event. Это я нашел через 2 минуты гугления =) Если поискать подольше, то скорее всего можно и информации найти побольше

Отмечено как Решение Александр Ривилис 12-02-2018, 12:12:10

Оффлайн Алексей Кузин

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Не пробовал делать подобное, но навскидку при загрузке addIns в OnStartup пробежаться по риббону и найти нужную кнопку и у неё назначить свою обработку.

           
Код - C# [Выбрать]
  1. foreach (var tab in Autodesk.Windows.ComponentManager.Ribbon.Tabs)
  2.                 if (tab.Id == "TABNAME")
  3.                 {
  4.                     foreach (var panel in tab.Panels)
  5.                         if (panel.Source?.Title == "PANELNAME")
  6.                         {
  7.                             foreach (var item in panel.Source.Items)
  8.                             {
  9.                                 if (item.Text == "BUTTONNAME")
  10.                                 {
  11.                                     var button = item as Autodesk.Windows.RibbonButton;
  12.                                     button.CommandHandler = myCommand; //тут назначаем обработку
  13.                                 }
  14.                             break;
  15.                         }
  16.                     break;
  17.                 }
  18.             return null;

Оффлайн Алексей Кузин

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Цитировать
Не знаю зачем это нужно. Я бы за такое...
Согласен

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Пекшев aka Modis, Алексей Кузин
Думаю, что Алексей ближе к истине. Я по поводу реализации, а не по поводу по какому месту нужно за это давать... :-D )
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Думаю, что Алексей ближе к истине.
Согласен)

Оффлайн BazingaАвтор темы

  • ADN Club
  • ***
  • Сообщений: 101
  • Карма: 4
Алексей Кузин, Спасибо))