Блог Муратова про Revit MEP
7.52K subscribers
1.59K photos
95 videos
17 files
1.71K links
Вадим @Vadim_Rafi — раньше ОВэшник, теперь BIM-менеджер и препод. Блог про Ревит — muratovbim.pro

Чат для вопросов: @revitask

— Создаю семейства для Ревита.
— Обучаю моделировать разделы ОВ, ВК, ТМ.

Не размещаю рекламу.
加入频道
Код из стрима, выкладываю в этот пост, чтобы вы могли скопировать в Динамо в более старых Ревитах:

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 м², её пишем в изоляцию. Само собой, что у реального изделия форма будет отличаться от просто куска воздуховода, но у тех же фильтров и клапанов, если не брать в расчёт привод и площадку под него, форма довольна близка к форме обычного воздуховода.

В итоге получаем хоть какой-то приблизительный расчёт, это лучше, чем ничего.

Также есть возможность накинуть запас, можно им тоже поиграться, чтобы подстраховать свои расчёты площади.

Кому пригодится — приятной работы. Если будут ошибки, то сорян, не повезло. Отдельное спасибо Паше Алтынникову 🫶 за напутствия в питонировании этого скрипта.
Привет. Спишь?
🙂 Привет, ревитчики!

На этой неделе снова статья о разработке семейств для производителя. Так что для вас эти семейства совершенно бесплатны.

Расскажу об особенностях разработки балансировочной арматуры на примере изделий компании Ридан.

Если вы не разрабатываете семейства, то вряд ли вам это будет интересно, можете идти в конец статьи и скачивать семейства.

А если разрабатываете, то это вам пища для размышлений, как делать семейства лучше и удобнее для пользователя.

Читаем, качаем: https://muratovbim.pro/blog/razrabotka-bim-modelej-balansirovochnoj-armatury-ridan/
Please open Telegram to view this post
VIEW IN TELEGRAM
#BIMdigest 096 — Вызовы
— вызовы модульного строительства на примере 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
Вы за экономию трубы или за красивые трассы?
📺 ПРЕЗЕНТАЦИЯ BIM-моделей OSTENDORF

На вебинаре покажу, как работать с семействами Ostendorf. В прямом эфире замоделирую небольшую систему, соберу спецификацию, отвечу на вопросы.

Вебинар будет 01.08.2024 в 11:00 (МСК).
Для участия нужна регистрация: https://clck.ru/3C8qes
Вот так решают проблему с конденсатом в Израиле в старом жилом фонде. Ставят кондиционер, и чтобы не капало на окна соседей ниже, кидают дренажную трубу до первого этажа.

Выглядит максимально похабно, конечно, зато никому не капает на подоконник.
Вы уже столкнулись с замедлением Ютуба на территории РФ?
Anonymous Poll
48%
Да
18%
Нет
20%
Пока непонятно
15%
Не смотрю Ютуб / Не на территории РФ
Звание самого стильного пожарного шкафа получает вот этот шкаф из кофейни в Челябинске.

А это нормально, что там внизу кран перекрыт?
📺 Запись вебинара для Остендорфа

По сути в моей части будет небольшой гайд по моделированию трасс канализации. Самое интересное, что я там пару раз обосрусь, но всё же найду причину, что случилось.

Во-первых, у меня через буфер не копировались типы трубы, как будто Ревит во время трансляции «не чувствовал» нажатие горячих клавиш для копипасты, что странно, так как горячие клавиши для команд он вполне воспринимал. В общем, это я не понял, что было. Перед вебинаром, когда тренировался, всё работало.

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

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

📱: https://vk.com/video-200445555_456239099

📱: https://youtu.be/TW9vM3ZViIw

📱: https://dzen.ru/video/watch/66abb7bd8076ef6414f0f908
Please open Telegram to view this post
VIEW IN TELEGRAM
ВАШИ КОМПЫ

Саша Климович поделился своей сборкой железа. Примечательно это тем, что мы с помощью Дмитрия Сошникова протестировали модель АУПТ, которая на компе Дмитрия работала оооочень медленно. Каждое соединение труб вешало Ревит на ощутимые несколько секунд. Это происходит из-за того, что Ревит пересчитывает всю систему, а в больших моделях это происходит медленно.

Результаты тестов Саши показали, что на его сборке эта модель, конечно, подлагивала, но не так сильно, может, 1-2 секунды на соединение. Это не идеал, но всяко лучше, чем сидеть и 10-15 секунд ждать, пока что Ревит раздуплится и просчитает всю сеть заново.

Ссылки на белорусский каталог, но вы разберётесь, я думаю.

Процессор — [R 9-7950X] (https://catalog.onliner.by/cpu/amd/ryzen97950x)
Материнская плата — [ASUS ROG Strix X670E-E Gaming WiFi] (https://catalog.onliner.by/motherboard/asus/rogx670eegawf)
Система охлаждения — [# be quiet! Dark Rock Elite] (https://catalog.onliner.by/fan/bequiet/bk037)
Оперативная память — [G.Skill Ripjaws X5 2x32ГБ DDR5 6000] (https://catalog.onliner.by/dram/gskill/f56000j3040g3223)
Видеокарта — [Palit GeForce RTX 4070 Ti Super JetStream] (https://catalog.onliner.by/videocard/palit/ned47tss19t21043)
SSD накопитель — [SSD Kingston Fury Renegade 2TB] (https://catalog.onliner.by/ssd/kingston/sfyrd2000g)
Блок питания — [be quiet! Dark Power 13 1000W] (https://catalog.onliner.by/powersupply/bequiet/bn335)
Корпус — [Fractal Design Torrent Black] (https://catalog.onliner.by/chassis/fractal_design/fdctor1a06)