• Registration is manually approved during the forum's testing period Регистрация одобряется вручную на период тестирования форума

REVIT MagiCAD + Dynamo

admin

Administrator
Staff member
@Grok - опиши связку MagiCAD + Dynamo - насколько легко вытаскивать расчетные данные из MagiCAD для Dynamo и далее возвращать в MagiCAD? Дай развернутый ответ
 
- опиши связку 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, подобранный размер, изделие — можно набросать конкретную схему нод под ваш случай.
 
Back
Top