Шаблоны проектов Visual Studio 2015 для Revit add-ins.

Автор Тема: Шаблоны проектов Visual Studio 2015 для Revit add-ins.  (Прочитано 55123 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Проект RevitAddInTemplateSet создан с целью предоставления набора шаблонов VS2015 для создания надстроек (add-ins) Revit 2017.

Состав проекта RevitAddInTemplateSet:

    Revit 2017 External Application (C# Project Template)
    Revit 2017 External DBApplication (C# Project Template)
    Revit 2017 External Command (C# Item Template)
    Revit 2017 External Command Availability (C# Item Template)
    Revit 2017 Updater (C# Item Template)

Я создал несколько последовательных видео уроков (с английскими комментариями), демонстрирующих примеры использования шаблонов RevitAddInTemplateSet. Эти уроки я разместил на своём новом канале:

    #001. Download and install the templates.
    #002. Create new project.
    #003. Add new command.
    #004. Link the command with the command availability.
    #005. Add ribbon tabs and panels.
    #006. Template resources using.
    #007. Multilanguage add-ins creating.

В блоге: https://revit-addins.blogspot.ru/2017/02/revit-visual-studio.html
« Последнее редактирование: 15-02-2017, 11:03:44 от Андрей Бушман »

Оффлайн Максим Маркевич

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Я делал тынц-тынц-тынц по квартире, когда понял, как же это упрощает все. :)
Андрей, огромное спасибо!! Это нереально удобно!
Вот теперь уж точно надо быть совсем лентяем, чтоб не писать плагины под Revit. ;)

Предлагаю закрепить тему.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Предлагаю закрепить тему.
Сделано!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Максим Маркевич

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Сегодня руки добрались насладиться данными шаблонами. :)
Заметил несколько нюансов.
1. После создания Revit 2017 External Application для того, чтобы "применился" NuGet-пакет (в соответствии с инструкцией) необходимо выполнить перестроение нашего решения (Solution -> Rebuild).
Так вот почему-то автоматически загружается версия старая NuGet-пакета, потом все это дело обновляется и никаких проблем, но мало ли.. поэтому прикрепляю пояснение:


2. Я, например, захотел сделать 2 тестовых проекта, то есть получить 2 вкладки в Revit. Мои действия:
Создаю 1й проект RevitAddin1.
Захожу в целевую папку:

далее сюда:

Все замечательно. После этого запускаю Revit - там тоже все хорошо.
Затем я создаю 2й проект RevitAddin2.
Выполняю его сборку, ну и захожу в целевую папку глянуть на всякий:

У меня не появилось ожидаемых файлов - RevitAddin2.addin и папки RevitAddin2 - а вместо этого в папку RevitAddin1 залилась RevitAddin2.dll (хотя в манифесте RevitAddin1.addin остался путь на RevitAddin1).
Соответственно, при запуске Revit я получаю:

что, в принципе, логично.

Далее, я подумал, что дело в дефолтных названиях и решил создать 3е решение/проект с каким-то пользовательским именем RevitUserTest.
Как и ожидалось, все работает замечательно:


Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Если переименовываешь проект, то необходимо не забывать вносить соответствующие правки в addin-файл, а так же, при необходимости, и в настройках проекта (имя проекта, имя пространства имён, используемого по умолчанию).

Я внёс некоторые исправления в настройки csproj-файлов, а так же добавил шаблон элементов "Revit 2017 Updater".

Оффлайн Максим Маркевич

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 29
  • Skype: evthisrel
Если переименовываешь проект, то необходимо не забывать вносить соответствующие правки в addin-файл, а так же, при необходимости, и в настройках проекта (имя проекта, имя пространства имён, используемого по умолчанию).
Спасибо за совет и за коммит). Нюанс №2 из моего поста полностью устранен, подтверждаю.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
с нугетом нужно будет повозиться, поразбираться. Пару раз я у себя так же наблюдал подобное. Т.е. получается, что какое-то нестабильное поведение. Возможно я накосячил в шаблоне по этой части.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
с нугетом нужно будет повозиться, поразбираться. Пару раз я у себя так же наблюдал подобное. Т.е. получается, что какое-то нестабильное поведение. Возможно я накосячил в шаблоне по этой части.
Причина обозначенной проблемы выявлена и устранена.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
А развитие и выпуск под новые версии Ревита данных шаблонов и нугет пакетов планируется?

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
NuGet-пакеты под Revit 2018.1 опубликованы. Шаблоны проектов и элементов для Revit 2018.1 сделаны, но пока не опубликованы. Они не опубликованы, поскольку я обнаружил, что Visual Studio 2017 работает несколько иначе, чем Visual Studio 2015... Когда я создавал версии шаблонов под VS2015, то предположил, что более ранние и более поздние версии IDE будут хранить информацию о template-каталогах IDE идентично тому, как это делает VS 2015. На тот момент у меня не было VS 2017.

VS 2015 хранит эту информацию в реестре (помимо конфиг-файла пользовательских настроек), чем и пользовался мой конфигуратор для того, чтобы понимать, куда закидывать генерируемые им zip-файлы шаблонов. Однако VS2017 нужную мне информацию в реестре не хранит...

Извлекать эту инфу из конфиг-файла пользовательских настроек, используемого VS мне оказалось проблематично, т.к. там хранятся не полные пути, но пути с использованием некоторых внутренних системных переменных IDE. Мне не удалось найти надёжный способ определения значения этих переменных, поэтому я полагался именно на реестр, в котором VS2015 эти же значения хранила в распакованном виде. Дополнительно возникала проблема определения того, какой именно конфигурационный файл пользовательских настроек использует IDE в данный момент времени.

Т.о. сейчас требуется переделать конфигуратор, чтобы он мог нормально работать с VS2017 и корректно закидывал zip-файлы в правильные каталоги. Планирую завтра решить проблему. Тестировать могу только для VS2017 и Revit2018.1, поскольку других версий под рукой нет.

Скорее всего я пойду по пути наименьшего сопротивления: вернусь к той реализации, которая была в начальных версиях конфигуратора и которая показана в первом видео: т.е. не вычислять целевые каталоги, а читать их из своего конфигурационного файла, полагаясь на то, что программист предварительно отредактировал эти записи соответствующим образом.

Если у кого-то есть конструктивные предложения по решению обозначенных мною выше проблем - то такие предложения приветствуются.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Для тех, кому интересно: в процессе генерации шаблонов, в реестр я когда-то полез в виду проблемы, обозначавшейся мною здесь. Однако приведённое там обходное решение (использовать реестр) не работает для VS2017.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78

Оффлайн Andant

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26

Оффлайн Olga

  • ADN OPEN
  • Сообщений: 24
  • Карма: 0
Доброго времени суток!  Существуют ли такие  шаблоны для  Revit2019, Revit 2020.  Если нет, то где нужно внести изменения чтобы   воспринималась папка "AppData\Roaming\Autodesk\Revit\Addins\2019"

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Если нет, то где нужно внести изменения чтобы   воспринималась папка "AppData\Roaming\Autodesk\Revit\Addins\2019"
Нужно везде заменить $AppYear$ с 2018 на 2019. Ну и возникает вопрос с версией .NET Framework. Думаю, что её нужно везде заменить на 4.7
« Последнее редактирование: 06-06-2019, 15:27:01 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение