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

ADN Club => Inventor API => Тема начата: OwnWay от 24-12-2019, 20:07:29

Название: Ribbon tab. Реализация вкладки.
Отправлено: OwnWay от 24-12-2019, 20:07:29
Здравствуйте. Не могу определиться со способом создания вкладки на ленте.


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

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

Возможно есть более лучший подход?
Название: Re: Ribbon tab. Реализация вкладки.
Отправлено: mikazakov от 25-12-2019, 08:23:48
то где почитать о реализации ribbon xml для inventor?
Это врят ли.
В хэлпе АПИ инвентора есть статья Customizing the Ribbon using the API.

Ведь может получиться, что другая dll добавляет функционал на вкладку которой ещё нет.
Ну значит посмотреть сначала есть ли эта нужная вкладка в Application.UserInterfaceManager.Ribbons... и.д. и если нет то создать нужную панель. В свою очередь такая проверка должна быть и в другом эддине.
Название: Re: Ribbon tab. Реализация вкладки.
Отправлено: OwnWay от 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, но это слишком коряво.
Название: Re: Ribbon tab. Реализация вкладки.
Отправлено: Александр Ривилис от 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
Название: Re: Ribbon tab. Реализация вкладки.
Отправлено: mikazakov от 26-12-2019, 12:17:12
Строка  "5" улетает в исключение. Скорее всего из-за того, что пытаюсь обратиться к объекту которого нет. Хотелось бы узнать как это написать правильно.
Так и есть, нужно либо перебрать коллекцию риббонов и попытаться найти нужное , либо заключить обращение к объекту в обработчик ошибок try-catch