Как создать AddInCommandBinding

Автор Тема: Как создать AddInCommandBinding  (Прочитано 1662 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 70
  • Карма: 3
Как создать AddInCommandBinding
« : 11-07-2022, 15:06:22 »
Добрый день, пытаюсь создать AddInCommandBinding, но свойство RevitCommandId.CanHaveBinding - false, это вообще не возможно или я что то не так делаю?

1. загружаю все нужные сборки и сборки с плагинами
2. в каждой сборке ищу IExternalCommand, создаю и запускаю его OnStartup, каждая сборка плагина сама создает вкладку, кнопку и тд.
3. дальше кодом ниже ищу свои вкладки, получаю кнопки и их ID, вида "CustomCtrl_%CustomCtrl_%вкладка%панель%команда"
4. создаю RevitCOmmandId, а свойство CanHaveBinding = false, и при создании AddInCommandBinding получаю ошибку "The Revit command id cannot be assigned a command binding.
Parameter name: revitCommandId"

Код - C# [Выбрать]
  1. var tabs = ComponentManager.Ribbon.Tabs.Where(x => x.Name?.ToUpper().Contains("mytabname")==true).ToList();
  2. foreach (RibbonTab tab in tabs)
  3. {
  4.     foreach (Autodesk.Windows.RibbonPanel panel in tab.Panels)
  5.        {
  6.         foreach(Autodesk.Windows.RibbonItem item in panel.Source.Items)
  7.        {
  8.            ids.Add(item.Id);
  9.       }
  10.    }  
  11. }
  12.  
  13. var revitCommandIds = ids.Select(x=>RevitCommandId.LookupCommandId(x)).Where(x=>x!=null).ToList();
  14. var addInCommandBindings = revitCommandIds.Select(x => app.CreateAddInCommandBinding(x)).ToList();
  15.