Ribbon tab. Реализация вкладки.

Автор Тема: Ribbon tab. Реализация вкладки.  (Прочитано 428 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Здравствуйте. Не могу определиться со способом создания вкладки на ленте.


Если создавать с помощью dll, то как указать очередность загрузки? Ведь может получиться, что другая dll добавляет функционал на вкладку которой ещё нет.

Или лучше реализовать вкладку через xml, и уже обращаться к этой вкладке? Но тут дело в том, что если этот способ лучше (производительнее), то где почитать о реализации ribbon xml для inventor?

Возможно есть более лучший подход?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 491
  • Карма: 136
  • Skype: mikazakov@mail.ru
Re: Ribbon tab. Реализация вкладки.
« Ответ #1 : 25-12-2019, 08:23:48 »
то где почитать о реализации ribbon xml для inventor?
Это врят ли.
В хэлпе АПИ инвентора есть статья Customizing the Ribbon using the API.

Ведь может получиться, что другая dll добавляет функционал на вкладку которой ещё нет.
Ну значит посмотреть сначала есть ли эта нужная вкладка в Application.UserInterfaceManager.Ribbons... и.д. и если нет то создать нужную панель. В свою очередь такая проверка должна быть и в другом эддине.

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

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Re: Ribbon tab. Реализация вкладки.
« Ответ #2 : 25-12-2019, 21:08:37 »
mikazakov,

    то где почитать о реализации ribbon xml для inventor?

Это врят ли.
Это из-за того, что нет такой возможности или заранее мертвый подход?


Ну значит посмотреть сначала есть ли эта нужная вкладка
Не пойму как проверить.
Строка  "5" улетает в исключение. Скорее всего из-за того, что пытаюсь обратиться к объекту которого нет. Хотелось бы узнать как это написать правильно.
Код - C# [Выбрать]
  1. m_inventorApplication = addInSiteObject.Application;
  2.  
  3. Inventor.Ribbon RibbonZeroDoc= m_inventorApplication.UserInterfaceManager.Ribbons["ZeroDoc"];
  4.  
  5. if ((Inventor.RibbonTab)RibbonZeroDoc.RibbonTabs["InternalName"] == null) { }

P.s. Можно перебрать все Ribbons и у каждого проверить InternalName, но это слишком коряво.

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

  • Administrator
  • *****
  • Сообщений: 11344
  • Карма: 1470
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ribbon tab. Реализация вкладки.
« Ответ #3 : 26-12-2019, 12:09:49 »
P.s. Можно перебрать все Ribbons и у каждого проверить InternalName, но это слишком коряво.
Нормально. Это также эффективно.
Посмотри пример: https://spiderinnet2.typepad.com/blog/2012/06/inventor-net-find-all-ribbon-tab-names.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение OwnWay 26-12-2019, 18:52:56

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 491
  • Карма: 136
  • Skype: mikazakov@mail.ru
Re: Ribbon tab. Реализация вкладки.
« Ответ #4 : 26-12-2019, 12:17:12 »
Строка  "5" улетает в исключение. Скорее всего из-за того, что пытаюсь обратиться к объекту которого нет. Хотелось бы узнать как это написать правильно.
Так и есть, нужно либо перебрать коллекцию риббонов и попытаться найти нужное , либо заключить обращение к объекту в обработчик ошибок try-catch