Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Kazikin от 23-03-2017, 14:11:20

Название: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Kazikin от 23-03-2017, 14:11:20
Добрый день!

Сейчас я дублирую панель к себе на ленту примерно так:
Код - 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. И как выйти из ситуации, когда пользователем была отключена вкладка?
Название: Re: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Дмитрий Загорулькин от 23-03-2017, 14:29:32
1. Есть ли правильное решение получения ID элемента?
Да вроде как и такое решение сойдет. Разве что можно с помощью LINQ попробовать упростить.
2. И как выйти из ситуации, когда пользователем была отключена вкладка?
Если программно формировать ленту - наверное, никак.
Альтернатива - создавать свой файл CUIX со всеми нужными панелями (своими и стандартными).
Название: Re: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Kazikin от 24-03-2017, 08:03:23
Если программно формировать ленту - наверное, никак.

А есть ли возможность управлять вкладками на Риббоне? Ну то есть если вкладка выключена, то временно её включить и выдрать оттуда нужную кнопку.
Название: Re: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Александр Ривилис от 24-03-2017, 12:23:27
А есть ли возможность управлять вкладками на Риббоне? Ну то есть если вкладка выключена, то временно её включить и выдрать оттуда нужную кнопку.
Теми вкладками, которые идут из CUIX можно управлять только на уровне CUIX и потом его загружать. Но это вряд ли приемлемое решение. Поэтому прислушайся к словам Дмитрия о том, чтобы создать свой собственный CUIX и грузить его в AutoCAD.
Название: Re: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Kazikin от 25-03-2017, 05:45:05
Чем плохо следующее решение?

Код - 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;
Название: Re: Добавление на свою вкладку стандартных элементов Autocad
Отправлено: Александр Ривилис от 25-03-2017, 14:33:09
Плохо тем, что ты не можешь быть на 100% уверен в том, что эта стандартная панель вообще будет присутствовать в Ленте.