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

19/06/2015

Обновление утилиты для создания кнопок на ленте

В прошлом году я писал об утилите, с помощью которое процесс создания кнопок на ленте для вызова команд гораздо упрощается.

Сегодня я добавил в нее несколько полезных дополнений.

Изменения в проекте Visual Studio

Новый проект обновлен для работы в Visual Studio 2013. Хотя должен по-прежнему открываться и в Visual Studio 2010.

Также проект был настроен для сборки под Revit 2013. И для работы с более поздними версиями приходилось менять пути к сборкам Revit и, в случае Revit 2015, еще и Target Framework. Для одновременного тестирования и сборки под разные версии Revit приходилось делать много изменений.

В новой версии проекта созданы различные конфигурации – отдельно для 2014 и для 2015 версии.

 

Теперь, для того чтобы собрать проект для различных версий, достаточно просто сменить конфигурацию. При этом будет изменен путь к файлам Revit API и Target Framework.

Примечание. Для данной возможности файлы проекта были отредактированы вручную. При смене конфигурации на Debug 2015 Visual Studio в свойствах проекта все равно будет показывать Target Framework .NET Framework 4.0, хотя фактически он 4.5. Не обращайте на это внимание. Все отлично работает.

 

Так как у вас могут быть установлены различные модификации Revit (Architecture, MEP), а также в различные папки, то есть вероятность, что путь к Revit API сборкам у вас будет иным. Поэтому, перед тем как открывать solution, нужно вручную отредактировать файлы проектов VCRevitRibbonUtil\VCRevitRibbonUtil.csproj и  VCRevitRibbonUtilSample\VCRevitRibbonUtilSample.csproj в любом имеющемся текстовом редакторе. В самом верху будут следующие строки:

Код - XML: [Выделить]
  1.   <PropertyGroup Condition=" '$(Configuration)' == 'Debug 2014' OR '$(Configuration)' == 'Release 2014' ">
  2.     <PathToRevit>d:\Program Files\Autodesk\Revit MEP 2014\</PathToRevit>
  3.   </PropertyGroup>
  4.   <PropertyGroup Condition=" '$(Configuration)' == 'Debug 2015' OR '$(Configuration)' == 'Release 2015' ">
  5.     <PathToRevit>c:\Program Files\Autodesk\Revit 2015\</PathToRevit>
  6.   </PropertyGroup>

Замените пути к Revit 2014 и к Revit 2015 если они отличаются от заданных. После этого проект готов к запуску.

Добавление раскрывающейся кнопки

В новой версии добавлена возможность создавать раскрывающиеся кнопки. Примеры в Revit можно увидеть, например, на вкладке Архитектура.

 

Теперь данный вид кнопок можно создавать и с помощью утилиты.

Код для создания:

Код - C#: [Выделить]
  1.             Ribbon ribbon = new Ribbon(a);
  2.  
  3.             ribbon.Tab("MyTab")
  4.                 .Panel("Panel1")
  5.                 // Создаем раскрывающуюся кнопку
  6.                 .CreatePullDownButton("ADN-CIS_PullDownButton", "ADN-CIS",
  7.                     pdb =>
  8.                     {
  9.                         // Добавляем изображения на основную кнопку
  10.                         pdb.SetLargeImage(Resources._1348119708_face_monkey_32)
  11.                             .SetSmallImage(Resources._1348119708_face_monkey_16);
  12.  
  13.                         // и создаем кнопки, которые будут отображаться при раскрытии                       
  14.                         pdb.CreateButton<Command3>("btn3_1", "Button3",
  15.                             btn => btn
  16.                                 .SetSmallImage(Resources._1348119594_preferences_system_16)
  17.                                 .SetLargeImage(Resources._1348119585_preferences_system_32))
  18.                             .CreateButton<Command4>("btn4_1", "Button4",
  19.                                 btn => btn
  20.                                     .SetSmallImage(Resources._1348119621_internet_web_browser_16)
  21.                                     .SetLargeImage(Resources._1348119621_internet_web_browser_16))
  22.                             .CreateButton<Command1>("btn1_1", "Button1",
  23.                                 btn => btn
  24.                                     .SetSmallImage(Resources._1348119553_face_smile_big_16)
  25.                                     .SetLargeImage(Resources._1348119568_face_smile_big_32))
  26.                         ;
  27.                     })

И результат:

 

Добавление контекстной справки при нажатии F1

Еще одним обновлением стала возможность добавить контекстной справки. В стандартном Revit API используется метод SetContextualHelp. В утилиту необходимо было добавить лишь возможность добраться до этого метода из моих классов с кнопками. Метод добавлен с таким же названием.

Метод можно применить для любой кнопки

Код - C#: [Выделить]
  1.                 // Создаем раскрывающуюся кнопку
  2.                 .CreatePullDownButton("ADN-CIS_PullDownButton", "ADN-CIS",
  3.                     pdb =>
  4.                     {
  5.                         pdb.SetLargeImage(Resources._1348119708_face_monkey_32)
  6.                             .SetSmallImage(Resources._1348119708_face_monkey_16);                                        
  7.                         pdb.CreateButton<Command1>("btn1_1", "Button1",
  8.                                 btn => btn
  9.                                     .SetSmallImage(Resources._1348119553_face_smile_big_16)
  10.                                     .SetLargeImage(Resources._1348119568_face_smile_big_32)
  11.                                     // задаем контекстную справку для кнопки в раскрывающемся меню
  12.                                     .SetContextualHelp(ContextualHelpType.Url, "http://adn-cis.org"))
  13.                         // задаем контекстную справку для основной раскрывающейся кнопки
  14.                         .SetHelpUrl("http://adn-cis.org/forum");
  15.                     })

Для более простого добавления ссылки, в качестве контекстной справки, был добавлен еще один метод – SetHelpUrl.

После того, как контекстная справка была задана, в интерфейсе необходимо навести курсор мыши на кнопку и нажать F1.

Скачать

Исходники утилиты, как и прежде можно скачать на GitHub.

Для тех, кто не желает возиться в исходниках или разбираться с Git, готовые сборки можно скачать по ссылкам.

Автор: Виктор Чекалин

Обсуждение: http://adn-cis.org/forum/index.php?topic=2803

Опубликовано 19.06.2015
Отредактировано 19.06.2015 в 14:15:39