creator cover RuBIM.tech
RuBIM.tech

RuBIM.tech 

Автоматизация Revit и нетолько.

21subscribers

8posts

goals1
0 of 100 paid subscribers
Как только наберется более 100 подписчиков, я пойму что эта тематика интересна и появится стимул публиковать больше статей.

About

ЦИФРОВОЙ КРЕМАТОРИЙ РУТИНЫ

Ты здесь, потому что твой мозг еще подает признаки жизни, а пальцы уже стерты о мышку. Поздравляю, ты нашел выход из цифрового гетто.
Этот блог — не просто уроки по Python и Revit. Это твоя путевка в мир, где код работает, а ты отдыхаешь. Мы не ограничиваемся стенами Автодеска. Мы автоматизируем всё, до чего дотянутся наши промпты: от проектирования инженерных систем до бизнес-процессов, которые сжирают твое время.

🌀 ЧТО ТЫ ЗДЕСЬ НАЙДЕШЬ:

  • Vibe Coding (Вайб-кодинг): Философия нового времени. Я научу тебя запрягать ИИ (Cursor, Claude, GPT) так, чтобы они выплевывали готовые плагины на C# и скрипты на Python, пока ты лениво попиваешь кофе.
  • Revit на стероидах: Забудь про рутину. Автотрассировка, мгновенные расчеты теплопотерь, гидравлика и аэродинамика — мы заставим этот софт страдать вместо тебя.
  • Автоматизация всего: Если задачу можно описать алгоритмом — она должна быть автоматизирована. Мы будем кодить инструменты для бизнеса, жизни и доминирования над реальностью.
  • Архитектура без боли: Я покажу, как проектировать приложения, не зная технологии обжига кирпича. Тебе нужен результат, и мы его получим.

💰 ПОЧЕМУ ТЕБЕ НУЖНО ПОДПИСАТЬСЯ?

Рынок скоро выплюнет тех, кто работает по старинке. Ты либо становишься «прорабом» для ИИ и архитектором систем, либо идешь чертить тушью на ватмане.
Твои донаты и подписки — это топливо для моих нейронных сетей. За это ты получаешь:
✅ Эксклюзивные материалы и исходники, которых нет в открытом доступе.
✅ Доступ в закрытый «Клуб анонимных автоматизаторов».
✅ Иммунитет от деградации и плюс 100 к харизме на любой планерке.
Почему интерфейсы в Revit выглядят как привет из 90-х, и как мы это исправим
Level required:
Читатель

Знакомство с Revit API, Методы получения элементов. часть 2

Ранее мы познакомились с конструктором класса FilteredElementCollector, подробно останавливаться на нём не будет, это тема отдельной статьи, а рассмотрим следующий вариант, когда пользователь выбрал элементы и нам надо с ними уже провзаимодействовать.
Для это нам понадобится обратится к классу Selection к его методу GetElementIds
Selection - это класс представляющий собой объект, который позволяет взаимодействовать с выбранными элементами в пользовательском интерфейсе Revit. Он предоставляет информацию о том, какие элементы выбраны пользователем, и позволяет выполнять различные операции с этими выбранными элементами.
GetElementIds() - метод для получения ElementId выбранных элементов в виде списка.
Класс находится в пространстве имен Autodesk.Revit.UI, то необходимо вначале обратиться к ActiveUIDocument, а после к Selection 
строчка кода для получения списка ElementId будет выглядеть следующим образом:
Но так лучше не писать, во первых это долго читать, во вторых если еще раз ниже по коду придется обращается к ActiveUIDocument, то и писать тоже долго.
Так гораздо лучше. Что мы тут видим? А видим то что имя uidoc ссылается на объект ActiveUIDocument, можно также сказать что переменная uidoc содержит в себе объект ActiveUIDocument.
"=" - это оператор присвоения, то есть имени(переменой)  uidoc присвоено значение в виде объекта ActiveUIDocument, заметьте что a=5, это не означает что переменная с именем "а" равно значению пяти, а означает то, что через имя "а" можно получить объект с типом данных int имеющее значение пять, проще говоря а это объект типа целое число значение которого 5
Имя - это идентификатор объекта, модуля, класса, функции, переменной, ссылки
Для нубов кратко: все объекты программы хранятся в оперативной памяти

Знакомство с Revit API, Методы получения элементов. часть 1

Для того чтобы начать взаимодействовать с элементами модели, нужно определится как именно нужно получить элементы. Попросить пользователя выбрать определенные элементы или пользователь сам должен в начале их выбрать, или вовсе не спрашивать пользователя получив нужные элементы.
Начнём с последнего варианта, получим сразу нужные элементы, для этого обратимся к классу FilteredElementCollector и увидим что у этого класса имеется конструктор.
А что такое этот FilteredElementCollector?
А это класс в API Autodesk Revit, который используется для выполнения запросов и фильтрации элементов в проекте Revit. Он позволяет выбирать элементы на основе различных критериев.
А что это такое Конструктор класса?
А это специальный метод в объектно-ориентированном программировании, который вызывается при создании нового объекта (экземпляра) класса. Конструктор класса определяет начальное состояние объекта и инициализирует его атрибуты (поля) значениями, переданными в момент создания объекта.
Когда разобрались что это вообще такое давайте посмотрим на конструкторы. Посмотрим на первых два и поймём в чем они отличаются
collector = FilteredElementCollector(Document) с этим всё понятно он требует для создания всего лишь документ и в этой статье как раз в примере этот коллектором и рассматривался.
А что такое документ?
Document - это класс представляющий собой центральный объект, который предоставляет доступ к данным и функциональности проекта Revit.
Ключевых аспекты класса Document:
1. Доступ к элементам: С помощью объекта Document вы можете выбирать, создавать, изменять и удалять элементы в текущем проекте. Вы можете выполнять поиск элементов по различным критериям, фильтровать их и выполнять разнообразные операции с элементами.

Знакомство с Revit API и взаимодействие с ним через Python

Одной из его мощных функциональных возможностей Revit является его API (Application Programming Interface), который позволяет разработчикам создавать собственные плагины и скрипты для автоматизации задач и улучшения рабочего процесса в Revit. В этой статье мы рассмотрим, как начать работать с Revit API и взаимодействовать с ним, используя Python.
Что такое Revit API?
API Revit - это набор функций и классов, предоставляемых Autodesk для взаимодействия с Revit. Он позволяет получить доступ к данным модели Revi не только изменять и создавать элементы, но и многое другое. API позволяет автоматизировать широкий спектр задач, таких как создание чертежей, расчеты, анализ и управление элементами модели.
Как взаимодействовать?
Для того что бы получить возможность писать свои сценарии взаимодействия с Revit можно использовать следующие инструменты: pyRevit, RevitPythonShell, Dynamo. Для написания кода я использую VS Code, но можно использовать и другие инструменты, например PyCharm.
А как оно в Dynamo?
Для начало набросаем простой скрипт используя так называемое визуальное  программирование, который перенесет во всех трубах проекта значение параметра "Тип системы" в параметр "Комментарии".
Этот сценарий на нодах довольно простой, до тех пор, пока не понадобится внести изменения в несколько категорий.
Поскольку в Dynamo не селён, и какие нужно сделать хитросплетения из нод я не в курсе, то поступил бы так:
Создание плагина на pyRevit. ч-3
Продолжим реализацию класса BreakMEPCurve реализуем разделение Труб и Воздуховодов на сегменты заданной длины.
Level required:
Читатель

Создание плагина на pyRevit. ч-2

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

Создание плагина на pyRevit. ч-1

Давайте напишем наш первый инструмент для Revit. Создадим вкладку на панели инструментов, панель и первую кнопку.
В качестве примера попробуем реализовать разделение MEP
элементов на сегменты заданной длины, таких как, Трубы, Воздуховоды, Кабельные лотки и Короба. Но для начало ограничимся трубами и воздуховодами. 
Для того чтобы приступить к реализации этого проекта нужно в
начале создать следующею структуру папок/файлов:
 далее создадим следующие файлы bundle.yaml
Subscription levels4

Читатель

$7.5 per month
Считаешь что контент полезен, подпишись и поддержи автора и сможешь читать больше статей.

Продвинутый читатель

$22.4 per month
С этим уровнем подписки уже можно будет:
1. читать полный цикл статей про разработку инструментов.
2. читать ещё неопубликованные статьи для других подписчиков
3. доступ к исходному код из статей.
4. сможете вступить в закрытый телеграмм чат.
+ chat

Нетерпеливый читатель

$45 per month
С этим уровнем вы раньше всех сможете читать ещё неопубликованные статьи для других подписчиков, а также будет доступен исходный код из статей.
...
+ chat

Пытливый читатель

$75 per month
С этим уровнем сможете вступить в закрытый телеграмм чат.
+ chat
Go up