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

ADN Club => Revit API => Тема начата: Алексей (IdeaSoft) от 01-09-2018, 18:17:35

Название: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 18:17:35
Создал плагин он успешно подключился в Revit 2019
А как мне запустить его.
Что нужно сделать кнопку с панелью
Или "косолька" есть в Revite что делать дальше?
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 18:19:20
Есть интерфейсе Revit есть вкладка "Надстройки" может там искать?
Если так то как сделать чтобы кнопочка появилась?

Название: Re: Мой первый плагин
Отправлено: Александр Пекшев aka Modis от 01-09-2018, 19:29:25
После того, как вы создаете свой плагин, реализовав в нем IExtrenalCommand, нужно создать файл манифеста (.addin), в котором прописать всю нужную инфу.
После этого появится пункт в выпадающем списке "Внешние инструменты" на вкладке "Надстройки"
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:34:30
Ура! У  меня все получилось появилась панелька со строкой "моя команда!"
Во внешних инструментах
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:36:56
Вот содержимое файла AddIn

Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <RevitAddIns>
  4.  
  5.   <AddIn Type="Command">
  6.  
  7.     <Name>MY COMMAND</Name>
  8.  
  9.     <Assembly>C:\WORK\PRODUCTS\my_app\myplagin.dll</Assembly>
  10.  
  11.     <ClientId>ECCB03C4-B3C3-4C39-868E-5D65D9CE20BA</ClientId>
  12.  
  13.     <FullClassName>моя_команда</FullClassName>
  14.  
  15.     <VendorDescription>ideasoft, idea-soft.ru</VendorDescription>
  16.  
  17.     <VendorId>IDSF</VendorId>
  18.  
  19.     <VisibilityMode>AlwaysVisible</VisibilityMode>
  20.  
  21.   </AddIn>
  22.  
  23. </RevitAddIns>
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:44:15
Ревит требует обязательного наличия тегов

    <ClientId>ECCB03C4-B3C3-4C39-868E-5D65D9CE20BA</ClientId>
    <VendorId>IDSF</VendorId>

Что обычно пишут в VendorId и ClientId?

Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:46:49
А вот шаблон кода для "моя_команда"

Код - C# [Выбрать]
  1. using Autodesk.Revit.ApplicationServices;
  2. using Autodesk.Revit.Attributes;
  3. using Autodesk.Revit.Creation;
  4. using Autodesk.Revit.DB;
  5. using Autodesk.Revit.DB.Architecture;
  6. using Autodesk.Revit.UI.Selection;
  7. using Autodesk.Revit.UI;
  8. using Autodesk.Revit.Exceptions;
  9.  
  10. [TransactionAttribute(TransactionMode.Manual)]
  11. [RegenerationAttribute(RegenerationOption.Manual)]
  12. class моя_команда : IExternalCommand
  13. {
  14.     public Result Execute(ExternalCommandData data,
  15.                           ref string str,
  16.                           ElementSet elem)
  17.     {
  18.         return Result.Succeeded;
  19.     }
  20. }
Название: Re: Мой первый плагин
Отправлено: Александр Пекшев aka Modis от 01-09-2018, 19:46:55
VendorId - информация о разработчике плагина. Что хотите, то и пишите
ClientId - уникальный идентификатор плагина, представленный Guid. ВСЕГДА генерируйте новый Guid для нового плагина и НИКОГДА не копируйте из примеров. Благо, онлайн-генераторов полно
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:49:29
А может ВижуалCтудия где-то в проекте решения генерит его это GUID?
Название: Re: Мой первый плагин
Отправлено: Александр Пекшев aka Modis от 01-09-2018, 19:51:18
А может ВижуалCтудия где-то в проекте решения генерит его это GUID?
Генерит. В свойствах проекта на вкладке "Сведения о сборке". Но в addin-файл она вам сама ничего не скопирует
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:51:37
Вот что я нашел в файле AssemblyInfo.cs моего решения.

// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("5aac25b7-f7a7-461d-ade2-32ded2babb72")]

Может все время отсюда просто брать его и все?
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:52:18
Но в addin-файл она вам сама ничего не скопирует
Это да буду руками копировать ГУИД
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 01-09-2018, 19:56:17
Мне еще не очень нравится то что строка в
интерфейсе по умолчанию соотв. имении моего класса

Возможно настроить так, чтобы строка в интерфейсе Revit
не соотв имени класса? Написать что-то свое в интерфейс Revit
Название: Re: Мой первый плагин
Отправлено: Александр Пекшев aka Modis от 01-09-2018, 20:00:50
Мне еще не очень нравится то что строка в
интерфейсе по умолчанию соотв. имении моего класса

Возможно настроить так, чтобы строка в интерфейсе Revit
не соотв имени класса? Написать что-то свое в интерфейс Revit

Несколько раз перечитал, прежде чем понял о чем речь. Не путайте понятия - интерфейс - это тип в языке программирования

В файле манифеста есть элемент Assembly - в значении которого указывается полный путь (т.е. все пространства имен тоже) до класса (включая и сам класс), который реализует интерфейс IExternalCommand. Всегда так и никак иначе

И в коде по русски писать нужно только в комментариях. Но никак не называть классы кириллицей!
Название: Re: Мой первый плагин
Отправлено: Алексей (IdeaSoft) от 21-09-2018, 14:15:48
Помогите, уже забыл.
А в какую папку нужно файл addin для Revit 2019?
Название: Re: Мой первый плагин
Отправлено: Александр Ривилис от 21-09-2018, 16:24:36
Помогите, уже забыл.
А в какую папку нужно файл addin для Revit 2019?
C:\ProgramData\Autodesk\Revit\Addins\[Version]или C:\ProgramData\Autodesk\ApplicationPluginsили C:\Program Files\Autodesk\Revit [Version]\AddIns
[Version] в данном случае 2019