Найти в Дзене

Как научиться писать крутые плагины для Revit

Оглавление

Всем привет! Я решил взять небольшую паузу по техническим статьям с кодом, мыслями и идеями для плагинов — морально готовлюсь к большому блоку статей о создании плагинов с пользовательским интерфейсом — и написать небольшое размышление о том, как расти в сфере разработки для Revit.

Краткое содержание: тут не будет простых и конкретных рецептов, что и как делать. Это большая сфера, и я могу указать лишь некоторые направления для развития.

Исходные данные

Итак, если вас заинтересовала тема данной статьи, то скорее всего вы являетесь кем-то из списка:

  • проектировщик
  • BIM-координатор
  • студент в строительной сфере
  • другой сотрудник/руководитель строительной сферы

Если вы хотите просто "войти в IT и зарабатывать 300К в секунду", то я не советую эту сферу, в виду её узкой направленности. Вам потребуется примерно столько же усилий, как и для того, чтобы стать, например, веб-разработчиком, но вы всё равно будете уступать специалисту с профильным образованием и большим опытом работы в Revit. Количество вакансий на рынке при этом вас не обрадует.

В тоже время, если вы BIM-координатор, и вы научитесь писать плагины, то вас будут рады видеть в любой строительной и проектной компании, и вы будете выгодно отличаться перед другими кандидатами. Проектировщик, умеющий писать плагины, может резко увеличить свою производительность (например, если у вас похожие проекты и вы много раз делаете одно и тоже). Студент-инженер в строительной сфере может тоже поднять свою ценность для будущих работодателей, изучив Revit API и C#, ну или можно просто применить это в своём дипломе и удивить комиссию (знаю тех, у кого это получилось).

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

Проблемы

Но есть и минусы. Представим ситуацию: вы работаете в офисе проектировщиком по 8 часов в день, по часу на дорогу туда-обратно, а ещё семья, дети, увлечения, желание жить помимо работы и отдыхать, и вот уже находить, допустим, по 2 часа в день или 8 часов в неделю на регулярное осознанное изучение программирования довольно сложно. А если делать это не регулярно, то ваш навык будет расти очень медленно. Нужно будет находить и мотивацию, и время на изучение.

Что же делать?

Ещё раз оговорюсь: список не исчерпывающий, и его пункты не являются панацеей. Кому-то может помочь одно, кому-то — другое. Простого рецепта нет, я стараюсь лишь отразить общие принципы и пути достижения цели.

  • Целеполагание

Решите для себя, зачем вам изучать Revit API, и чего конкретно и к какому сроку вы хотите достичь. Например: "я, архитектор, хочу научиться писать плагины под Revit, чтобы в течение года стать BIM-координатором АР, и иметь преимущества перед теми коллегами, кто имеет больший опыт работы BIM-координатором, но не пишет код" — вполне себе хорошая цель, имеющая срок выполнения, который будет вас подстегивать, а "почитаю блог, потому что друг сказал, что Revit API прикольная тема и за ним будущее, вдруг чему научусь" — не очень, потому что через месяц вам предложат выгодную подработку, и у вас не останется времени на обучение, потому что оно для вас не в приоритете.

  • Регулярность

Это один из самых важных принципов в любом деле. Например, я еженедельно пишу как минимум одну статью в блог, чтобы блог постепенно рос и развивался, и в любой момент читатели знали, что можно зайти мой блог и увидеть новый интересный контент. А если "сегодня творческий порыв" — вот вам 4 статьи за день, а потом пауза на 2 месяца — как-то не очень. Определите, что, допустим, будете учиться 8 часов в неделю: 2 раза в будни по 2 часа и 1 раз в выходные 4, и соблюдайте это расписание.

  • Решение практических задач

В обучении программированию теория важна, но гораздо важнее практика решения конкретных задач. С самостоятельным изучением Revit API тут загвоздка: где взять задачу, и к чему её потом прикрутить? И тут вам поможет ваш профессиональный опыт. Вспомните, какие у вас были часто повторяющиеся однообразные действия, и попытайтесь написать плагин, который сделает это за вас. Например:

  • Перевести все оси из 2D в 3D и обратно
  • Выделить все арматурные стержни, выбрав армирование по площади
  • Нарисовать пол, зная контур помещения
  • Записать комбинированное или изменённое значение в общий параметр
  • Перенести значение общего параметра проекта из родительского семейства во вложенное (или из трубы в изоляцию)

Решать такие задачи гораздо интереснее, чем абстрактные "Создадим марку для помещения и перенесём её в угол" (если вы не архитектор).

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

  • Порядок изучения

Вы можете попробовать начать с Dynamo. Это среда визуального программирования, которая позволяет довольно быстро начать делать крутые вещи. Хороший гайд по Dynamo есть в блоге Вадима Муратова.

Тут важно учитывать такую вещь: Dynamo позволяет вам быстро добиться значительных результатов, но в какой-то момент останавливает ваше развитие и не дает двигаться дальше: нужно переходить на C#. Важно не пропустить этот момент и сделать переход как можно быстрее. Например, начав переписывать свои скрипты с Dynamo на C#.

Полезные ресурсы

metanit.ru — самый полезный ресурс по C#

stackoverflow — там можно найти ответы на вопросы по C# (обычно он выскакивает первой-второй ссылкой в гугле при поиске)

блог Джереми Тэммика — это очень крутой специалист по Revit API, и он описал в своём блоге множество интересных вопросов с примерами

форумы Dynamo и Revit API

LinkedIn (там иногда публикуются очень интересные статьи про Revit)

Google — не знаете, как решить задачу? Напишите вопрос в гугл и добавьте в конце Revit API. Не нашли ответ? Напишите на английском. Самый важный скилл для программиста — умение находить информацию. (да-да, английский тоже надо прокачивать, хотя бы на уровне чтения документации в оригинале)

ChatGPT. Иногда там можно получить ответ на вопрос или готовый код (но не всегда правильный). Я использовал его для переписывания кода с C# на Python, а так же для получения ответов по технологии WPF. Воспользоваться не всегда легко, но возможно. Тут сценарий такой: не нашли ответ в гугле? Спросите у ChatGPT (лучше на английском).

Github. Там можно найти интересные примеры кода и готовые решения. А так же удобно обмениваться кодом с коллегами

Ну и мой блог, разумеется :)

Также есть несколько полезных телеграм-чатов на русском языке, где вы можете задать вопрос, и, возможно, получить ответ (может быть, и я отвечу). Таких чатов довольно много, можете написать мне в комментарии в телеграм-канале, если вам нужно будет их найти (или поделиться своими чатами — я могу знать не все), вам отвечу я или мои коллеги.

Подведем итог

Чтобы научиться создавать крутые плагины для Revit, определите для себя, зачем вам это и что конкретно вы хотите достичь. Регулярно изучайте эту тему и решайте как можно больше практических задач. Научитесь искать информацию и получать ответы на вопросы из разных источников. И рано или поздно вы поймете, что вы научились делать крутые плагины. :)

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