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

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

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

Не размещаю рекламу.
加入频道
19:30 МСК, 📱 Твич

https://www.twitch.tv/muratovbim

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

Глядишь, сделаю крутые розетки и вообще на продажу выставлю, покажу дизайнерам кузькину меп. Ну или обосрусь и не получится ничего. Тоже опыт.

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

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

Сегодня более быстрый инет подключил, так что как-нибудь попробуем рестрим делать сразу на две площадки, например в Твич и Ютуб или Твич и Телегу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываю итоги вчерашнего эфира

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

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

Кароч. Я решил не в онлайн покрутить варианты, ведь если не получается провести кодификацию по категориям, то можно спуститься ещё ниже и сделать кодификацию каждого элемента, а уже потом по ней сортировать.

Но для этого недостаточно каждому элементу присвоить свой код, это очень просто, но фактически сработает так же, как работает галочка «Для каждого экземпляра». А мне нужно сгенерировать одинаковый код для каждой позиции с одинаковыми наименованием и маркой. Ну как минимум эти два параметра.

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

Тем не менее, что я вам предлагаю. Я уже выложил для донов первый ролик этой серии. Второй ролик тоже выложу, но нужно понимать, что результата там нет. Разве что посмотреть, как тыкаюсь с Питоном.

При этом вот тут я выложу код Питона. Я его немного доработал, сделал «поумнее». Хе-хе, настоящие программисты назовут это полным говном, но настоящих программистов тут мало, пусть себе говорят. У них всё равно нет того, что есть у меня — приятно булькающий в животе зелёный чай с жасмином и сэндвичем с какой-то невкусной хернёй.

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

doc = DM.Instance.CurrentDBDocument

def subcomponents(element):
all_subs = []
if hasattr(element, "GetSubComponentIds"):
sub_Id_list = element.GetSubComponentIds()

for sub_Id in sub_Id_list:
sub = doc.GetElement(sub_Id)
if sub.GetSubComponentIds():
all_subs.append(sub)
all_subs.append(subcomponents(sub))
else:
all_subs.append(sub)
return all_subs

mep_systems = UnwrapElement(IN[0])
system_label_parameter = IN[1]

elements_from_system = []

for system in mep_systems:
system_element_list = []
if system.Category.Id.IntegerValue == -2008015: # Системы воздуховодов
system_elements = system.DuctNetwork
elif system.Category.Id.IntegerValue == -2008043: # Трубопроводные системы
system_element_list = system.PipingNetwork
pass

for element in system_elements:
system_name = element.get_Parameter(BuiltInParameter.RBS_SYSTEM_NAME_PARAM).AsString()
system_element_list.append(element)
element_subcomponents = subcomponents(element)

TM.Instance.EnsureInTransaction(doc) # Открытие транзакции
element.LookupParameter(system_label_parameter).Set(system_name)
for sub in element_subcomponents:
sub.LookupParameter(system_label_parameter).Set(system_name)

TM.Instance.TransactionTaskDone() # Закрытие транзакции

system_element_list.extend(element_subcomponents)

elements_from_system.append(system_element_list)

OUT = elements_from_system


Что делает этот код. Он получает все элементы из систем вентиляции и трубопроводов. Проверял на вентиляции, там работает. При этом получает не только элементы систем, то и общие вложенные со всех уровней.

Далее копирует имя системы в указанный пользователем параметр и для элементов систем и для их общих вложенных.

На выходе будет список всех элементов из системы, как обычных, так и общих вложенных. И дальше уже делайте с ними, чего хотите. Код можно вставить в обычный Питон-нод и подавать на два входа список
Помогают ли вам в работе вложенные семейства радиаторной арматуры в отопительные приборы? Речь про термоклапаны, термоголовки, Н-клапаны, мультифлексы и так далее без привязки к конкретному бренду.
Anonymous Poll
41%
Да, и для бокового, и для нижнего подключения это полезно и помогает
1%
Да, но полезно только для бокового подключения
3%
Да, но полезно только для нижнего подключения
10%
Нет, всегда мешает, лучше делать без вложенной арматуры или дать возможность её отключать
45%
Посмотреть ответы
А ты за что?
#BIMdigest 110 — Интеграции в AEC
В этом выпуске:
— Autodesk углубляет интеграцию с ArcGIS;
— Archicad 28 - крутая работа с облаками точек и не только;
— скрипт Dynamo, использующий Stable Diffusion для генерации текстур Revit по текстовому промпту;
❄️ Autodesk Revit. Разработка инженерного раздела ОВ ❄️ — новый видеокурс в онлайн-школе BIM2B;
— что делать, если не удаётся найти элемент модели в спецификации;
— Enscape для совещаний с заказчиком;
— обновление Enscape 4.2;
— интервью с создателем That Open Company (ранее IFC.js).
Forwarded from Mikhail Nikolaev
Из твоего тут фитинги для сшитика, нержа, колбы гейзер премьер)
Столкнулся с интерполяцией значений в Ревите

Делаю я ручной балансировочник, у него есть обороты рукоятки. Что-то похожее уже делал для Ридановской балансировочной арматуры, но там задача была проще: был стандартный список значений от 0 до 9.9, надо было выбрать ближайшее большее значение по фактической пропускной способности.

А тут делаю Вальтековский балансир, и у него есть таблица с шагом 5, от 0 до 99. И вот промежуточные значения вычисляются интерполяцией, шаг — 1. То есть по сути тут 99 вариантов для каждого диаметра.

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

Но потом подумал: ну хорошо, сделать в Экселе слишком трудозатратно, а что, если сделать тот же расчёт, но в Ревите?

Для этого мне нужны:
— значение фактической пропускной способности, это легко, параметр расхода есть, требуемый перепад пользователь тоже в параметр вобьёт;

— значение табличной пропускной способности снизу и сверху. То есть, если фактическая пропускная способность 2,28, то надо взять из таблицы ближайшее большее и меньшее значения, а также обороты для них. Для примера пусть это будут 2,21 и 2,37, а обороты 30 и 35;

— значения оборотов снизу и сверху, это уже упомянул выше.

В результате можно простой арифметикой посчитать значение для оборотов: 30 + (2,28 - 2,21) × (35 - 30) / (2,37 - 2,21) = 32.1875, или 32. Получаю обороты искомые. Правда, надо уточнить, тут округлять вверх или можно вниз до целых.

Вся загвоздка в том, как получить значения снизу и сверху. На самом деле, это делается относительно легко. Нам нужно сделать таблицу выбора на все значения для каждого диаметра: пропускная способность — обороты. А далее формулой для таблицы выбора получать значения пропускной способности для каждого табличного значения оборотов. И обороты указывать не из переменной, а прямо числами: 1, 2, 3, ...

В итоге мы можем обычным сравнением получить значение сверху. Если при оборотах 1 табличная пропускная способность больше, чем фактическая, то у нас 1 оборот. Если меньше, то идём далее на обороты 2. И вот так перебором по порядку получаем значение сверху.

Для значения снизу нужно идти в обратном порядке, от максимальных оборотов до минимальных. Если при оборотах 99 табличное значение меньше фактического, то обороты 99. Если нет, то спускаемся ниже на 95, 90 и так далее. Как только условие выполнилось — мы получили наше значение снизу.

Ну а дальше арифметика. В создании таких длинных формул отлично помогает Эксель.
This media is not supported in your browser
VIEW IN TELEGRAM
Просто ветерок твой вентилятор колышет
🙂 Привет, ревитчики!

Сегодня продолжение цикла про настройку ВС Кода для программирования на Питоне под Ревит.

В новой статье Костя расскажет, как настроить подсказки для кода — так называемые заглушки. Они помогают программисту вводить команды и смотреть на доступные свойства и методы у элемента. Это удобно, так как иногда команды реально длинные, ещё и пишется всё слитно на английском языке, часто можно ошибиться. Заглушки сглаживают эти негативные эффекты.

Ссылка на материал: https://muratovbim.pro/blog/revit-api-podskazki-dlya-raboty-s-kodom/

Спасибо за репост в профильные чаты и коллегам-ревитчикам 🫶

Блог | Магазин | Курсы | Мерч

Чат в Телеге для вопросов 📱

Сообщество VK 📱 | Эфиры на Твиче 📱

Задонатить в Телеге 💸
Please open Telegram to view this post
VIEW IN TELEGRAM
Дяденька, у вас ширинка расстегнулась.
Media is too big
VIEW IN TELEGRAM
Тестирую семейство панельного радиатора со встроенной арматурой для бокового подключения.

Будьте осторожны, высокая детализация.
Media is too big
VIEW IN TELEGRAM
Сравниваю три версии семейства с разным количеством массивов внутри.

В данном случае без массивов геометрию детализовать не получится. Но ради быстродействия от чего-то придётся отказаться.

Либо дать пользователю варианты на выбор, что я и сделал. Тянет комп — берите топ-детализацию. Не тянет — выбирайте варианты поскромнее.

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

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

Ставьте огонёчки, кто готов прикоснуться к электроустановочным изделиям в прямом эфире.

19:00 МСК — начало. Сколько эфиров будет, не знаю, но запись смогут посмотреть доны в сообществе ВК.

Твич тут: https://www.twitch.tv/muratovbim
За два часа собрал вот таких красавиц.

Первый этап вроде решился: получилось сделать рамку с постами, которые можно повернуть, при этом выключатели и остальные элементы тоже поворачиваются и остаются в исходной ориентации.

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

Ну и потом самое сложное и интересное — обозначения на плане.

Запись двух часов стрима смогут посмотреть доны в ВК. Само семейство тоже выложу для донов, скорее всего, но это уже когда оно будет готово.
Обновление Интероперабилити Тулс для бим-менеджеров, которые им ещё пользуются.

Все официальные установщики на одной странице

Лечения нет, ищите сами, вы же не дети.
Всем хороших выходных.

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

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

Ага, конечно.

Четвёртый день с утра до ночи всё тут полирую, не могу бросить, потому что надо уже таки доделать и поставить галочку, что выполнил.

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

В общем, каждая такая библиотека «ну щас сделаю за денёк» оборачиваются недельной или больше авантюрой.