Vibe Coding для инженера-конструктора: Как я автоматизирую рутину в Revit при помощи нейросетей

Всем привет!

В последнее время я много экспериментирую с тем, что люди нынче называют «вайб-кодингом» (vibe coding), а именно в моем случае — поиском способов автоматизировать и упростить свой рабочий процесс в области строительного проектирования. В основном эти автоматизации касаются процессов моделирования в Autodesk Revit, но, думаю, в будущем будет больше экспериментов с другим софтом (один из них, скрипт для AutoCAD, упомянут ниже).

Первое, что я написал при помощи нейросетей, — это простой скрипт на C#, который прорезает вентиляционные шахты (смоделированные семейством категории "Обобщенная модель"") в плитах. К моему удивлению, это было довольно легко — нейронка (тогда это была модель GPT-3.5) написала весь класс и предоставила пошаговое руководство по сборке решения в Visual Studio и загрузке готового скрипта в Revit 2023. После этого я по-настоящему увлекся всеми возможностями, которые нейронка может предложить для автоматизации и оптимизации моей работы.

Честно говоря, встроенные инструменты Autodesk для визуального программирования (да, Dynamo, я про тебя) часто оставляют желать лучшего. Можете проверить сами: попробуйте в Dynamo сделать скрипт, который вырезает выбранные обобщенные модели из выбранных плит. Это займёт кучу времени. Поверьте, я пробовал — и именно поэтому перешёл на C#. С ИИ написание такого же скрипта в Visual Studio заняло у меня примерно полдня, причём я начинал с нулевыми знаниями Revit API и языка C#.

Процесс написания кода, не понимая синтаксиса языка и правил программирования, довольно сложен, потому что ИИ не будет думать за вас. Несмотря на то что языки программирования и библиотеки знать действительно не нужно (я до сих пор не знаю C# и, честно говоря, не хочу его учить), вы должны понимать, как работают алгоритмы и как общаться на, своего рода, «машинном языке».

Вооружившись этой новой способностью и кучей идей, я решил взяться за одно из самых слабых мест в Revit-е — аналитическую модель. В нашей компании мы выполняем расчеты в основном в расчетном комплексе SOFISTIK. И хотя SOFISTIK предоставляет весьма полезный плагин "Model Generator" для Revit, который создает аналитическую модель из физической геометрии гораздо лучше, чем встроенные инструменты Revit (добавлю — всё равно бывают случаи, когда ручное моделирование и корректировка необходимы). Именно здесь Revit может создать серьезные проблемы.

Чтобы решить эту проблему и избежать утомительной ручной работы, я разработал несколько скриптов, которые точно пригодятся, если вы сталкивались с похожими задачами. Я их выложил в открытый доступ на github, но если вы посчитаете их полезными, буду признателен за поддержку. Каждое пожертвование вдохновляет меня больше времени посвящать созданию полезных инструментов, а не гринду в Path of Exile 2.

Ссылки на донаты приводятся в конце статьи. А пока — сами скрипты:

1. Analytical Panel Divider (Разделитель аналитических панелей)

Демонстрация работы скрипта

Ручное разделение аналитических плит и стен на более мелкие части — это медленная, подверженная ошибкам рутина. Этот скрипт автоматизирует весь процесс. Вы просто выбираете панели, которые хотите разделить, а затем выбираете "секущие" панели, которые определяют новые границы.

Инструмент делает всё остальное:

  • Автоматически вычисляет пересечения и создает новые, меньшие панели.
  • Копирует все параметры и переносит аналитические отверстия (например, двери и окна) на новые панели.
  • Превращает утомительную задачу, которая занимает целую вечность и вызывает кучу ошибок (вроде пресловутой "аналитическая модель не является плоской"), в работу, которая занимает секунды.

Скачать код и установщик можно на GitHub: https://github.com/Vovenzza/Revit-Panel_Divider

2. Analytical Member Divider (Разделитель аналитических элементов)

Тоже демонстрация работы скрипта

Аналитические элементы (балки, колонны, раскосы) в Revit не автоматически прерываются на пересечениях, а бывает случаи, когда нужно поменять модель локально, не генеря модель из физики заново. Например, может понадобиться разделить балки по пересечениям друг с другом или разделить колонны по этажам. Мой скрипт Member Divider очищает это одним щелчком мыши.

Просто выберите элементы, которые хотите разделить (балки, колонны, раскосы), а затем выберите элементы, которые их пересекают (другие элементы или даже панели).

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

Найти скрипт и установщик можно на GitHub: https://github.com/Vovenzza/Revit-Member_Divider

В качестве заключения: у меня также есть скрипт для AutoCAD, который преобразует 2D-топографическую карту в 3D-сетку. Скоро я напишу отдельный пост об этом с ссылками.

Спасибо, что прочитали о моих экспериментах с нейросетями. Надеюсь, эти инструменты окажутся для вас такими же полезными, как и для меня!

Варианты поддержки:

  • Сбербанк: 2202 2010 6240 7826
  • GitHub Sponsors (для разработчиков): https://github.com/sponsors/Vovenzza
  • Ko-fi (международный сервис, простые одноразовые донаты): https://ko-fi.com/vovenzza
  • Bitcoin (BTC): 14BodLrCrJFsLukh6df6M1EjdKRSVhgaeJ
  • USDT (TRC20/BEP20): 0x7d24169b66241ef11df7365b48241aeef38f0612
  • Telegram (TON): UQD0kz_IHwCDjvgswNNVQt7FI6VY2nS1jZrdZJa0cYkdPxmF
2
Начать дискуссию