Нас тут 6000 уже, это хорошо. Давайте стрим сделаем
Был запрос на работу с изоляцией — давайте посмотрим, как это можно сделать в Ревите с помощью Динамо и Ревит АПИ.
Снова будут муки Петона и втыкания в VS Code, но зато получится круто, если получится. Мне нужно подготовить обложку для эфира, так что пока ставьте реакты, придёте или будет в записи смотреть.
Начало минут через 10-15. Скину сюда ссылку.
❤️ — приду на онлайн, буду смотреть
🔥 — крутяк, но посмотрю в записи, щас дела
🤝 — это мне не интересно, не мой профиль
Был запрос на работу с изоляцией — давайте посмотрим, как это можно сделать в Ревите с помощью Динамо и Ревит АПИ.
Снова будут муки Петона и втыкания в VS Code, но зато получится круто, если получится. Мне нужно подготовить обложку для эфира, так что пока ставьте реакты, придёте или будет в записи смотреть.
Начало минут через 10-15. Скину сюда ссылку.
❤️ — приду на онлайн, буду смотреть
🔥 — крутяк, но посмотрю в записи, щас дела
🤝 — это мне не интересно, не мой профиль
Код из стрима, выкладываю в этот пост, чтобы вы могли скопировать в Динамо в более старых Ревитах:
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager as DM
from RevitServices.Transactions import TransactionManager as TM
from System import Guid
doc = DM.Instance.CurrentDBDocument
clr.AddReference('RevitNodes')
import Revit
def getInsulationHost(insulation): # получаем основу с изоляции
host_el_Id = insulation.HostElementId # получили айди хоста изоляции
host_el = doc.GetElement(host_el_Id) # получаем элемент по его айди
return host_el
zapas = IN[0]
param_area_fittings = IN[1]
param_area_set = IN[2]
duct_insulation = []
duct_insulation.extend(FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_DuctInsulations).WhereElementIsNotElementType().ToElements()) # получаем всю изоляцию из активного проекта
duct_ins_host = []
for di in duct_insulation:
duct_ins_host.append(getInsulationHost(di))
TM.Instance.EnsureInTransaction(doc) # Открытие транзакции
for duct_insulation_instance, host in zip(duct_insulation, duct_ins_host):
if isinstance(host, MEPCurve):
di_area = duct_insulation_instance.get_Parameter(BuiltInParameter.RBS_CURVE_SURFACE_AREA).AsDouble() * 0.3048 * 0.3048 * zapas
duct_insulation_instance.LookupParameter(param_area_set).Set(di_area)
elif host.Category.BuiltInCategory == BuiltInCategory.OST_DuctFitting:
if host.LookupParameter(param_area_fittings):
di_area_fitting = host.LookupParameter(param_area_fittings).AsDouble() * 0.3048 * 0.3048 * zapas
duct_insulation_instance.LookupParameter(param_area_set).Set(di_area_fitting)
elif host.Category.BuiltInCategory == BuiltInCategory.OST_DuctAccessory:
host_connectors = host.MEPModel.ConnectorManager.Connectors
connector_list = list(host_connectors)
if len(connector_list) == 2:
first_con_origin = connector_list[0].Origin
second_con_origin = connector_list[1].Origin
con_distance = first_con_origin.DistanceTo(second_con_origin) * 304.8
if connector_list[0].Shape == ConnectorProfileType.Rectangular:
con_height = connector_list[0].Height * 0.3048
con_width = connector_list[0].Width * 0.3048
con_perimeter = 2 * (con_height + con_width)
section_area = con_perimeter * con_distance / 1000
duct_insulation_instance.LookupParameter(param_area_set).Set(section_area)
elif connector_list[0].Shape == ConnectorProfileType.Round:
con_diameter = connector_list[0].Radius * 0.3048 * 2
con_perimeter = 3.14159 * con_diameter
section_area = con_perimeter * con_distance / 1000
duct_insulation_instance.LookupParameter(param_area_set).Set(section_area)
TM.Instance.TransactionTaskDone() # Закрытие транзакции
OUT = duct_insulation, duct_ins_host
Выкладываю скрипт в Динамо, он для Ревита 2023.
Если нужно то же самое в Ревитах помладше, то создайте новый скрипт в нужной версии Динамо, воссоздайте ноды, как в этом скрипте, и вставьте этот код в Питон скрипт.
Он должен работать с системами воздуховодов в шаблонах АДСК. С трубами работать тоже будет, но обрабатывать будет только прямые участки, для труб код нужно дополнять.
Условия работы в системе вентиляции:
1. Обрабатываются прямые и гибкие воздуховоды, фитинги воздуховодов и арматура воздуховодов.
2. Фитинги воздуховодов обрабатываются через параметр экземпляра семейства ADSK_Размер_Площадь. В нём должна внутри семейства считаться площадь детали. Скрипт просто скопирует её, также, как это делает сейчас апдейтер в шаблоне.
3. Чем код отличается, так это возможность обрабатывать канальную арматуру воздуховодов. То есть только ту арматуру, у которой две точки подключения, ни меньше, ни больше.
Скрипт берёт размер соединителя, берёт расстояние между соединителя, получаем периметр по размеру соединителя и длину между соединителями. Перемножаем — получаем упрощённую площадь арматуры.
Например, в сети стоит клапан длиной 100 мм, сечением 300х200 мм. Периметр будет 2 * (300 + 200) = 1 метр. Длина между соединителями — 0.1 м. Произведение даём нам площадь 0.1 м², её пишем в изоляцию. Само собой, что у реального изделия форма будет отличаться от просто куска воздуховода, но у тех же фильтров и клапанов, если не брать в расчёт привод и площадку под него, форма довольна близка к форме обычного воздуховода.
В итоге получаем хоть какой-то приблизительный расчёт, это лучше, чем ничего.
Также есть возможность накинуть запас, можно им тоже поиграться, чтобы подстраховать свои расчёты площади.
Кому пригодится — приятной работы. Если будут ошибки, то сорян, не повезло. Отдельное спасибо Паше Алтынникову 🫶 за напутствия в питонировании этого скрипта.
Если нужно то же самое в Ревитах помладше, то создайте новый скрипт в нужной версии Динамо, воссоздайте ноды, как в этом скрипте, и вставьте этот код в Питон скрипт.
Он должен работать с системами воздуховодов в шаблонах АДСК. С трубами работать тоже будет, но обрабатывать будет только прямые участки, для труб код нужно дополнять.
Условия работы в системе вентиляции:
1. Обрабатываются прямые и гибкие воздуховоды, фитинги воздуховодов и арматура воздуховодов.
2. Фитинги воздуховодов обрабатываются через параметр экземпляра семейства ADSK_Размер_Площадь. В нём должна внутри семейства считаться площадь детали. Скрипт просто скопирует её, также, как это делает сейчас апдейтер в шаблоне.
3. Чем код отличается, так это возможность обрабатывать канальную арматуру воздуховодов. То есть только ту арматуру, у которой две точки подключения, ни меньше, ни больше.
Скрипт берёт размер соединителя, берёт расстояние между соединителя, получаем периметр по размеру соединителя и длину между соединителями. Перемножаем — получаем упрощённую площадь арматуры.
Например, в сети стоит клапан длиной 100 мм, сечением 300х200 мм. Периметр будет 2 * (300 + 200) = 1 метр. Длина между соединителями — 0.1 м. Произведение даём нам площадь 0.1 м², её пишем в изоляцию. Само собой, что у реального изделия форма будет отличаться от просто куска воздуховода, но у тех же фильтров и клапанов, если не брать в расчёт привод и площадку под него, форма довольна близка к форме обычного воздуховода.
В итоге получаем хоть какой-то приблизительный расчёт, это лучше, чем ничего.
Также есть возможность накинуть запас, можно им тоже поиграться, чтобы подстраховать свои расчёты площади.
Кому пригодится — приятной работы. Если будут ошибки, то сорян, не повезло. Отдельное спасибо Паше Алтынникову 🫶 за напутствия в питонировании этого скрипта.
На этой неделе снова статья о разработке семейств для производителя. Так что для вас эти семейства совершенно бесплатны.
Расскажу об особенностях разработки балансировочной арматуры на примере изделий компании Ридан.
Если вы не разрабатываете семейства, то вряд ли вам это будет интересно, можете идти в конец статьи и скачивать семейства.
А если разрабатываете, то это вам пища для размышлений, как делать семейства лучше и удобнее для пользователя.
Читаем, качаем: https://muratovbim.pro/blog/razrabotka-bim-modelej-balansirovochnoj-armatury-ridan/
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Вадима Муратова
Разработка BIM-моделей балансировочной арматуры Ридан — Блог Вадима Муратова
Расскажу о своей разработке BIM-моделей балансировочной арматуры «Ридан» для систем отопления. Семейства бесплатные, сможете их скачать по ссылке в конце статьи, а я расскажу об особенностях разработки. В разработку вошли следующие модели арматуры: Особенности…
Forwarded from Revit и BIM технологии | BIM2B
#BIMdigest 096 — Вызовы
— вызовы модульного строительства на примере 4 компаний и подходов;
— переход Autodesk от файлов к облавной базе данных;
— требования к ПО для строительной отрасли будущего;
— Autodesk, проектирование и углеродный след;
— AI для архитекторов;
— 5 алгоритмов для апскейла изображений с ComfyUI;
— Revit 2025.2: что нового;
— плагин для создания отделки по помещениям;
— скрипт для работы и изоляцией воздуховодов;
— варианты CDE и правила работы с данными.
— вызовы модульного строительства на примере 4 компаний и подходов;
— переход Autodesk от файлов к облавной базе данных;
— требования к ПО для строительной отрасли будущего;
— Autodesk, проектирование и углеродный след;
— AI для архитекторов;
— 5 алгоритмов для апскейла изображений с ComfyUI;
— Revit 2025.2: что нового;
— плагин для создания отделки по помещениям;
— скрипт для работы и изоляцией воздуховодов;
— варианты CDE и правила работы с данными.
Вопрос к вам есть, ребята.
Если нарисовать букву Р и Т, то это ок, но при отключении тонких линий они превратятся в чёрное пятно.
Ещё есть вариант ввести цветовую индикацию. Например для термометра сделать кружок наполовину синий, наполовину красный. Для манометра сделать кружок черный или ещё какого-то цвета.
Или вообще не нужно ничего делать, всегда можно включить низкую детализация и по УГО разобраться. Или как?
Если нарисовать букву Р и Т, то это ок, но при отключении тонких линий они превратятся в чёрное пятно.
Ещё есть вариант ввести цветовую индикацию. Например для термометра сделать кружок наполовину синий, наполовину красный. Для манометра сделать кружок черный или ещё какого-то цвета.
Или вообще не нужно ничего делать, всегда можно включить низкую детализация и по УГО разобраться. Или как?
Кому интересна библиотека и не интересна история её появления и про мою прокрастинацию, крутите вниз, там все ссылки.
В 2020 году я выложил в блоге семейства манометров и термометров с импульсными трубками. Импульсные трубки были и у термометров, я с ИТП и ТМ не работал никогда, подобные детали не знал, пока мне кто-то об этом где-то не написал. В новой библиотеке у термометров трубок нет.
В общем, надо мне было сделать заказ со сложными семействами, там очень много параметризации, я уже долго её делал и подустал от неё. А в такие моменты я начинаю прокрастинировать. Я знаю, что надо сесть и сделать, но у меня нету эмоциональных сил на это. Так что я тяну время, пока решимость не придёт вновь.
То же самое у меня бывает, когда в разработке нужно что-то выбрать из нескольких вариантов, а я не уверен, что вот какой-то один точно лучше. И тогда я начинаю, гулять по квартире, больше отвлекаться на чаты, на всякую ерунду, лишь бы не делать то, что нужно. Потому что внутри меня ещё не выкристаллизировалось окончательное решение.
Иногда помогает сон, и на следующий день решения принимаются быстрее и проще. А иногда конкретная разработка уже так утомила, что несколько дней не хочется браться вообще. Поэтому двигаюсь мелкими рывками, пока не приду в себя.
И вот в один из таких моментов зашёл я в статью со старыми манометрами. Смотрю и думаю: а какого хрена у меня там на петлевых трубках стыки геометрии? Почему они не гладкие? Я ведь умею так делать, у меня даже видеокурс есть, как такое делать на регуляторе давления.
Непорядок!
И вместо того, чтобы делать заказ, я полез в эти семейства. Они ещё в 2016 версии, при обновлении что-то там поломалось, делал их давно, менее оптимально. Ну и некрасиво, линии стыков на трубках. Подумал, что щас за полчасика быстро перестрою и молодец.
В итоге несколько часов сидел и переделывал вообще всё, кроме самого корпуса манометров. Поправил немного, сделал их удобнее для размещения, но сами трубки реанимировать было бесполезно, переделал с нуля.
Вот так в итоге приступа прокрастинации родилась эта библиотека. Вместо получасика потратил много часов, так что теперь она — платная и лежит у меня в магазине. Если вам такое нужно — милости прошу. Если обходитесь бесплатными семействами, то тоже окей.
Расскажите, какие у вас симптомы и причины прокрастинации и как с ними боретесь?
Изучить возможности: https://muratovbim.pro/blog/revit-biblioteka-manometry_i_termometry/
Купить: https://muratovbim.pro/product/biblioteka-termometry-i-manometry-s-otbornymi-ustrojstvami/
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Вадима Муратова
Revit-библиотека: манометры и термометры — Блог Вадима Муратова
Опишу возможности платной библиотеки манометров с импульсными трубками и кранами, а также термометров для радиальной и осевой установки. Версия Ревит всех семейств — 2019. Состав библиотеки Главная особенность семейств — тут есть сборки из манометров, петлевых…
📺 ПРЕЗЕНТАЦИЯ BIM-моделей OSTENDORF
На вебинаре покажу, как работать с семействами Ostendorf. В прямом эфире замоделирую небольшую систему, соберу спецификацию, отвечу на вопросы.
Вебинар будет 01.08.2024 в 11:00 (МСК).
Для участия нужна регистрация: https://clck.ru/3C8qes
На вебинаре покажу, как работать с семействами Ostendorf. В прямом эфире замоделирую небольшую систему, соберу спецификацию, отвечу на вопросы.
Вебинар будет 01.08.2024 в 11:00 (МСК).
Для участия нужна регистрация: https://clck.ru/3C8qes