Использование Revit без плагинов представить сложно, так как плагины помогают заполнять необходимые параметры, создавать отверстия, создавать необходимые элементы ( внутренняя отделка стен). Короче, экономит уйму времени.
Возможности исскусственного интелекта помогают нам быстрее писать код, поэтому в этой статье опишу, как быстро создать и добавить плагин к себе в Revit.
Инструменты для написания кода плагина
Код для плагина возможно писать с помощью Visual Studio code, Visual Studio или других IDE. Каждый выбирает то, что им нравится, я остановился на Visual Studio: понятный интерфейс, встроенная нейросеть GitHub Copilot, которая помогает дописывать код.
Язык для написания кода плагина
В большинстве случаев используется язык C# для написания кода. Из плюсов выделяют следующее:
- Высокая производительность, так как C# является компилируемым (машиночитаемым) языком
- Полный доступ к функциям .NET Framework и Revit API
- Более строгая типизация, что может облегчить отладку и обнаружение ошибок на этапе компиляции ( сборки).
Также рекомендую You-tude канал (кликабельно) для изучения языка.
Шаги для написания кода
Шаблоны для написания кода
Для облегчения взаимодействия кода с Revit используются преднастроенные шаблоны для Visual Studio.
Nice3point является готовой коллекцией шаблонов и инструментов для разработки плагинов к программе Revit. Для создания плагина этот шаблон хорошо себя зарекомендовал, однако данные шаблоны используют NuGet пакеты, которые у меня ( возможно не только ) не всегда корректно работают.
Поэтому в данной статье покажу, как создавать код вручную.
Создание плагина
1) Заходим в Visual Studio (Обязательно необходимо проверить, что у вас установлено последнее обновления в программе «Visual Studio installer») и нажимаем "Create new project".
2) В поиске вбиваем "Библиотека классов" и выбираем.
3) Называете свой проект понятно и кратко, чтобы потом самому найти. Выбирайте также расположение, которое точно найдете)
4) Доп информация: Тип приложения (Add - in type) : Application.
Далее как на скрине
5) Откроется проект, пора создавать!
Что находится внутри проекта
1) Solution explorer
Показывает, что у вас есть в проекте ( как диспетчер проекта в Revit)
2) Dependencies ( Зависимости)
Это внешние библиотеки проекта. Для работы с Revit API нам необходима библиотка Revit API, соответственно.
3) Подключение Revit API
Чтобы Revit «понял», что мы пишем именно для него, нам нужно добавить две главные библиотеки: RevitAPI.dll и RevitAPIUI.dll.
- Нажимаем правой кнопкой мыши на Dependencies (или References) → Add Reference...
- Нажимаем Browse и идем по пути установки вашего Revit (обычно это C:\Program Files\Autodesk\Revit 20xx).
- Ищем там эти два файла и добавляем их.
- Важный нюанс: в свойствах этих библиотек в Visual Studio обязательно поставьте Copy Local: False. Revit сам загрузит эти библиотеки при запуске, нам не нужно «тащить» их с собой в плагин.
4) Код для пакетного экспорта файлов (.rvt → .nwc)
Здесь мы подключим ИИ - дадим промпт, чтобы она написала код.
PS. Необходимо указывать версию Revit, а также все детали, которые вас интересуют. Чем больше деталей - тем лучше. Для разных версий Revit существует множество нюансов, о которых в одной статье не рассказать.
5) Сборка проекта (Создание .dll файла)
После того как код написан, нам нужно скомпилировать его в файл библиотеки, который Revit сможет прочитать.
- В верхней панели Visual Studio выберите конфигурацию Release (это сделает плагин быстрее и «чище», чем в режиме Debug).
- Нажмите правой кнопкой мыши на название вашего проекта в Solution Explorer и выберите Build (Собрать).
- Если всё сделано правильно, в нижней панели (Output) вы увидите заветную надпись: Build: 1 succeeded.
Где искать результат?
Зайдите в папку вашего проекта через проводник: Ваш_проект \ bin \ Release. Там появится файл с расширением .dll (например, MyFirstPlugin.dll). Это и есть «тело» вашего плагина.
6) Создание манифеста (.addin файл)
Revit не умеет искать .dll файлы сам по себе. Ему нужен «указатель» — специальный текстовый файл с расширением .addin, который скажет программе: «Вот плагин, он лежит тут, и его нужно запустить вот так».
Создайте обычный текстовый файл в Блокноте и вставьте в него этот текст:
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>Batch Export NWC</Name>
<Assembly>ПУТЬ_К_ВАШЕМУ_ФАЙЛУ_DLL</Assembly>
<AddInId>12345678-1234-1234-1234-1234567890AB</AddInId>
<FullClassName>BatchExportFilesNWC</FullClassName>
<VendorId>MyPlugin</VendorId>
<Text>Пакетный экспорт в NWC</Text>
</AddIn>
</RevitAddIns>
Что здесь важно заменить:
- Assembly: Полный путь к вашему .dll файлу из Шага 5.
- FullClassName: Точное название класса из кода (в нашем примере это BatchExportFilesNWC).
- AddInId: Это уникальный идентификатор (GUID). Его можно сгенерировать онлайн (просто вбейте в поиске "GUID generator") или в Visual Studio через Tools -> Create GUID. Он должен быть уникальным для каждого плагина.
Сохраните этот файл под любым именем, но обязательно с расширением .addin (например, ExportNWC.addin).
7) Подключение к Revit
Теперь нам нужно положить наш «указатель» в ту папку, куда Revit заглядывает при каждом запуске.
Скопируйте ваш .addin файл в одну из следующих папок (зависит от версии Revit):
- Для всех пользователей: C:\ProgramData\Autodesk\Revit\Addins\2024
- Только для вас (рекомендуется): %AppData%\Autodesk\Revit\Addins\2024 (просто вставьте этот путь в адресную строку проводника).
.dll файл может оставаться в папке проекта, так как мы указали прямой путь к нему в манифесте.
8) Запуск и тестирование
- Запустите Revit. При загрузке появится окно безопасности: "Разработчик этого внешнего приложения не определен...".
- Нажмите "Всегда загружать" (Always Load). Это стандартная процедура для самописных плагинов без цифровой подписи.
- Откройте любой проект.
- Перейдите на вкладку "Надстройки" (Add-ins) -> панель "Внешние инструменты" (External Tools).
- Там вы увидите вашу кнопку с названием, которое мы указали в поле <Text> манифеста.
Заключение
Поздравляю! Вы только что прошли путь от пустой страницы в Visual Studio до автоматизации реальной рабочей задачи.