Добавление на свою вкладку стандартных элементов Autocad

Автор Тема: Добавление на свою вкладку стандартных элементов Autocad  (Прочитано 6076 раз)

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

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Добрый день!

Сейчас я дублирую панель к себе на ленту примерно так:
Код - C# [Выбрать]
  1. RibbonPanel LayerClone = new RibbonPanel();
  2.    foreach (RibbonTab ht in ComponentManager.Ribbon.Tabs)
  3.       if (ht.Id == "ACAD.ID_TabHome")
  4.          foreach (RibbonPanel lp in ht.Panels)
  5.             if (lp.UID == "ID_PanelLayers")
  6.                LayerClone = lp;

И появилось два вопроса по сабжу:
1. Есть ли правильное решение получения ID элемента?
2. И как выйти из ситуации, когда пользователем была отключена вкладка?

Отмечено как Решение Александр Ривилис 24-03-2017, 12:06:34

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
1. Есть ли правильное решение получения ID элемента?
Да вроде как и такое решение сойдет. Разве что можно с помощью LINQ попробовать упростить.
2. И как выйти из ситуации, когда пользователем была отключена вкладка?
Если программно формировать ленту - наверное, никак.
Альтернатива - создавать свой файл CUIX со всеми нужными панелями (своими и стандартными).

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Если программно формировать ленту - наверное, никак.

А есть ли возможность управлять вкладками на Риббоне? Ну то есть если вкладка выключена, то временно её включить и выдрать оттуда нужную кнопку.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
А есть ли возможность управлять вкладками на Риббоне? Ну то есть если вкладка выключена, то временно её включить и выдрать оттуда нужную кнопку.
Теми вкладками, которые идут из CUIX можно управлять только на уровне CUIX и потом его загружать. Но это вряд ли приемлемое решение. Поэтому прислушайся к словам Дмитрия о том, чтобы создать свой собственный CUIX и грузить его в AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Чем плохо следующее решение?

Код - C# [Выбрать]
  1. RibbonTab ActTab = ComponentManager.Ribbon.ActiveTab;
  2. foreach (RibbonTab ht in ComponentManager.Ribbon.Tabs)
  3. {
  4.    if (ht.Id == "ACAD.ID_TabHome")
  5.    {
  6.       bool key = false;
  7.       if (!ht.IsVisible)
  8.       {
  9.          ht.IsVisible = true;
  10.          key = true;
  11.       }
  12.       ht.IsActive = true;
  13.       foreach (RibbonPanel lp in ht.Panels)
  14.          if (lp.UID == "ID_PanelLayers")
  15.             LayerClone = lp;
  16.       if (key)
  17.       {
  18.          ht.IsActive = false;
  19.          ht.IsVisible = false;
  20.       }
  21.    }
  22. }
  23. ComponentManager.Ribbon.ActiveTab = ActTab;

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Плохо тем, что ты не можешь быть на 100% уверен в том, что эта стандартная панель вообще будет присутствовать в Ленте.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение