- опиши связку MagiCAD + Dynamo - насколько легко вытаскивать расчетные данные из MagiCAD для Dynamo и далее возвращать в MagiCAD? Дай развернутый...
MagiCAD + Dynamo: расчётные данные туда-обратно
Связка рабочая, но это
не «открыл Dynamo — и всё MagiCAD-овское сразу в графе». По факту есть два слоя данных, и от того, с каким вы работаете, зависит, будет это просто или боль.
Слой 1. Обычные параметры Revit (shared / project), в которые MagiCAD сам пишет результаты расчёта.
Слой 2. Внутренние MagiCAD-параметры (MC-данные изделия, системы, результаты сайзинга), которые в Revit-параметры сами по себе не всегда попадают.
Dynamo из коробки отлично ест слой 1 и слабо видит слой 2. Для слоя 2 нужны ноды MagiCAD Dynamo и/или MagiCAD API.
Насколько легко вытащить расчёт
Легко (реально 1 вечер на прототип), если заранее настроить маппинг в MagiCAD: результаты расчёта (расход, ΔP, скорость, мощность, сечение, падение напряжения и т.д.) пробросить в shared-параметры Revit. Дальше классика Dynamo:
- выборка элементов системы / категории / по MagiCAD-системе
Element.GetParameterValueByName
- фильтры, группировки, Excel/JSON/спека — что угодно
Это самый стабильный путь. Его и стоит считать основным.
Средне, если нужен «сырой» MagiCAD: изделие, код, серия, технические данные с карточки, параметры, которых нет в Revit. Тут пакет MagiCAD для Dynamo (ноды Get/Set MagiCAD parameter, работа с продуктами и системами). Без него часть расчётных полей просто не видна.
Уже неудобно, если хотите:
- полный отчёт расчёта MagiCAD (как в расчётных ведомостях), а не значения на элементе
- служебные величины, которые MagiCAD держит только внутри расчётного ядра
- электрику / вентиляцию / трубопровод в одном скрипте — модели данных разные
Важный практический момент:
скрипт Dynamo должен бежать после расчёта MagiCAD, а не вместо него. Иначе читаете прошлое состояние модели.
Насколько легко вернуть данные обратно
Тут развилка, и её часто путают.
1. Вернуть исходные данные для расчёта — нормально и правильно.
Расход, нагрузка, требуемая мощность, температура, коэффициент одновременности, система, статус «не трогать размер» и т.п. Пишете в параметры → в MagiCAD запускаете расчёт/сайзинг → MagiCAD сам пересчитает сечения, ΔP, скорости.
Это штатный round-trip: Dynamo не подменяет расчётчик, а готовит ему вход.
2. Записать результаты расчёта обратно в MagiCAD — почти всегда плохая идея.
Расход на воздуховоде, давление, подобранный диаметр MagiCAD при следующем Calculate просто перезапишет. Вы будете драться с ядром расчёта.
Исключения, когда запись «наружу» имеет смысл:
- пользовательские / маркировочные параметры (коды, классификация, текстовые поля, данные для спеки)
- управление изделием (смена продукта, серии, статуса), если это позволяет нода/API
- параметры, которые MagiCAD читает как вход, а не считает сам
3. Запустить расчёт MagiCAD из Dynamo — зависит от версии. Не закладывайтесь, что Dynamo одной кнопкой прогонит полный MagiCAD Calculate по всем системам как с ленты. Надёжный процесс: MagiCAD посчитал → Dynamo обработал → при необходимости снова MagiCAD.
Типовой рабочий контур
- В MagiCAD настраиваете Parameter Mapping: какие расчётные поля садятся в shared-параметры
- Считаете системы в MagiCAD
- Dynamo читает параметры, делает свою логику (сводки, проверки, подбор, заполнение УГО, выгрузка, сравнение с нормами)
- Dynamo пишет только входы и пользовательские поля
- Снова расчёт MagiCAD, если меняли входы
- При необходимости ещё один проход Dynamo «на чистовик» (марки, спека)
Если пропустить маппинг и сразу лезть во внутренние MC-поля — связка резко теряет предсказуемость между версиями MagiCAD/Revit/Dynamo.
Где обычно ломается
- Единицы. Revit internal units vs то, что показывает MagiCAD (л/с, м³/ч, Па, мм). Без явной конвертации цифры «красивые, но не те».
- Перезапись при Calculate. Записали размер трубой Dynamo — MagiCAD при сайзинге вернул своё.
- Не все категории одинаково открыты. Воздух и трубы обычно проще, электрика и некоторые изделия — капризнее.
- Семейства MagiCAD ≠ «просто семейство Revit». Часть параметров живёт только пока объект MagiCAD-овский; «обезмагикаженный» элемент данные теряет.
- Версии. Ноды MagiCAD Dynamo привязаны к конкретной линейке MagiCAD. Обновление Revit/MagiCAD без проверки пакета — классический сюрприз.
- Worksharing / связанные модели. Скрипт, который хорошо живёт в файле инженера, в центральной модели с чужими системами уже требует фильтров по системе, уровню, работе.
Итого по сложности
- Вытащить расчётные значения, которые промаплены в Revit-параметры — легко
- Вытащить MagiCAD-специфику через ноды/API — средне, но один раз настраивается
- Вернуть в MagiCAD входы для нового расчёта — нормально
- Полноценный двусторонний обмен «Dynamo считает вместо MagiCAD и записывает результаты в ядро» — так делать не надо, будет вечная война с Calculate
Если коротко: связка зрелая для
чтения расчёта и управления входами, а не для подмены MagiCAD как расчётного движка. 80% задач закрываются маппингом параметров + обычным Dynamo, без героизма с API. API/ноды MagiCAD имеет смысл подключать, когда нужен продукт, система или поле, которого нет (и не будет) в shared-параметрах.
Если напишете дисциплину (вентиляция / отопление / ВК / электрика) и что именно хотите вытаскивать — расход, ΔP, подобранный размер, изделие — можно набросать конкретную схему нод под ваш случай.