Daily MaverickJoburg crisis cannot be solved without competent City leadershipESPNPremier League depth charts for most popular teams: Who is key?The Jerusalem PostWho will teach the next generation?PunchNigeria@66: 2027 election will test our democratic maturity – JonathanBollywood HungamaDisha Patani completes a decade in Bollywood as MS Dhoni: The Untold Story turns 10: “Beyond grateful ”InquirerBukidnon’s Quezon town marks 10th Senior Citizens’ DayGhaflaImages reveal extent of Wicknell Chivayo helicopter crash wreckageIl Fatto Quotidiano“Il lusso? Se c’è non me lo nego ma non lo cerco. Non ho lo yatch di 40 metri o la Lamborghini. Il mio aspetto? C’è il fascino sottile della decomposizione delle carni”: Paolo Bonolis si racconta3DNewsЯпонский Google изобрёл вертикальную клавиатуру-конвейер Gboard Kuru-Kuru — построить её может любой желающийسكاي نيوز عربيةاستطلاع يفجر مفاجأة بشأن رونالدو.. ماذا يريد مشجعو البرتغال؟RTBF InfoDes feux et dégradations lors d'un mouvement spontané d'élèves devant plusieurs écoles de LiègeBBC News BrasilGoogle remove mais de 40 canais com falsos médicos de IA após reportagens da BBC News Brasil
The Daily Newsstand · Free, Always
Thursday, October 1, 2026

Два часа выгрузки ради пустого параметра: проверяем ЦИМ для АГР внутри Revit

Translate

Меня зовут Кирилл, я работаю BIM‑координатором, писал эту статью совместно со своей коллегой Анастасией. Помучавшись с разработкой ЦИМ без какой‑либо автоматизации, вместе мы подготовили плагин IDS Core. В этой статье — проблемы, которые нас натолкнули на создание нужных инструментов.
Мы оба давно работаем в BIM, и в начале 2026 года перед нами появилась новая задача: нужно было научиться стабильно готовить модели в IFC под новые требования ДГП.

С января 2026 года архитектурно‑градостроительные решения в Москве сдаются вместе с цифровой информационной моделью в IFC. Требования к ней описаны машиночитаемо — файлами IDS, проверяет их сервис «Строим просто». Схема, в общем, понятная. Пока не начнёшь ей пользоваться.

Наш вечер выглядел так. Настроил маппинг, собрал вид для выгрузки, нажал «Экспорт». Модель тяжёлая, экспорт идёт два часа. Загружаешь IFC в чекер — и узнаёшь, что у одной рампы не заполнен RUS_Slope. Исправил за минуту. И снова два часа. Уже половина первого ночи, а ты сидишь и думаешь: почему я узнаю про пустой параметр из файла, которого полчаса назад не существовало, если сам параметр лежит в модели прямо передо мной?

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

Проверка по IDS, не выходя из Revit

Сама идея простая: всё, что проверяет внешний сервис, можно проверить в модели. IDS — это XML с набором спецификаций, у каждой написано, к кому она применяется и что у этих объектов должно быть заполнено. Нужен ещё маппинг экспорта (тот самый export ifc *.txt), по которому понятно, в какое свойство IFC уедет какой параметр Revit.

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

Две вещи, которые пришлось делать аккуратнее, чем хотелось

Класс IFC мы определяем так же, как это сделает экспорт. Соблазн взять таблицу «категория Revit → класс IFC» большой, но она врёт: экспорт смотрит на параметры «Экспорт в IFC» и «Экспорт в IFC как», а в Revit 2022 и старше — на единственный IfcExportAs. Плюс есть «Параметры экспорта» со значением «Нет», которое выкидывает элемент из выгрузки поверх всего остального. Если это не повторить, проверка будет ругаться на элементы, которых в файле не будет, и молчать про те, что уедут пустыми.

Помещения и зоны надо различать. В IFC они оба IfcSpace, а требования к ним разные. Спасает то, что у помещений есть параметр RUS_StudioApart, а у зон его нет вовсе: по наличию параметра, а не по его значению, и решается, какая спецификация к чему применяется.

Заодно выяснилось, что отсечённые элементы нельзя просто прятать: мы показываем их отдельной вкладкой с причиной — «не экспортируется», «класс не определён», «технический элемент, которого нет в IDS». Иначе первый же вопрос: «почему проверено 2082, а в модели 2500, вы там ничего не потеряли?».

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

ТЭП: считаем в модели, а не выписываем из десяти спецификаций

Следующее место, где уходил вечер, — технико‑экономические показатели. Раньше это выглядело как десяток спецификаций с фильтрами, из которых значения выписываются руками в XML. И так заново при каждом изменении модели, потому что площади поехали.

Показатели считаются по правилам агрегации: что‑то берётся из помещений, что‑то из зон определённых схем зонирования, что‑то из элементов благоустройства. Мы сложили эти правила в плагин и считаем прямо по модели и подгруженным связям — то есть по тем же данным, из которых потом будет собран IFC.

Пара выводов из практики

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

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

И обязательно нужен предпросмотр: что сейчас в шаблоне, что насчитали мы, какая разница и по скольким элементам получено значение. Кнопка «записать» без этого шага — способ молча испортить файл, который готовили полдня.

Зона есть в Revit, а в IFC её нет

Дальше начинается любимое: в модели всё выглядит правильно. Зона нарисована, площадь посчитана, в спецификации она есть. В IFC её нет. ТЭП не сходится, а где именно потерялись метры — непонятно.

Revit и экспорт считают по‑разному. Revit посчитает площадь даже при дефектной границе — ему достаточно замкнуть контур приблизительно. Экспорту нужно построить объёмное тело, и тут любая мелочь становится фатальной.

Три дефекта, из-за которых зона не доезжает до IFC

Три дефекта, из‑за которых зона не доезжает до IFC

Сегмент короче допуска короткой кривой (по умолчанию 0,78 мм). Разрыв между сегментами — глазом не видно, тело не строится. Наслоение двух граничных линий друг на друга. Самопересечение контура. Находить это несложно: берём границы зоны, собираем контур, пробуем построить тело — не построилось, значит до IFC зона не доедет.

А вот чинить автоматически оказалось куда опаснее, чем находить.

Грабли первые: группы. Граничные линии часто лежат внутри групп — типовая секция, типовая квартира. Правка одной линии меняет определение группы, то есть все её копии. Поправили границу на первом этаже — на остальных девяти зоны остались без контура. Красиво. Теперь линии внутри групп инструмент не трогает вовсе: они работают «магнитом», к которому подтягиваются соседние свободные концы, а в отчёте написано, сколько таких линий и в каких группах.

Грабли вторые: доброжелательный Revit. Правка идёт в транзакции, у транзакции есть обработчик сообщений. Типовая реализация гасит предупреждения и соглашается с тем, что Revit предлагает по умолчанию. Разумно ровно до первого случая, когда для ошибки «в одной замкнутой области несколько зон» предложение по умолчанию — удалить лишние зоны. Диалог погашен, пользователь ничего не видит, зоны исчезают. Инструмент, который чинит зоны, их удаляет.

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

Общее правило, которое мы из этого вынесли: инструмент, меняющий модель, обязан уметь доказать, что ничего не сломал. Сделать задуманное — только половина работы.

Газон, который считается трижды

Ещё одна история про площади — из благоустройства, и она про то, как правильная модель даёт неправильные цифры.

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

Одно перекрытие с тремя контурами превращается в три объекта IFC

Одно перекрытие с тремя контурами превращается в три объекта IFC

При выгрузке такое перекрытие распадается на несколько объектов, и площадь исходного элемента относится к каждому. Сервис считает по IFC и показывает озеленения больше, чем есть. Мы долго сверяли спецификацию с отчётом и не понимали, кто из них врёт. Оба не врут — они считают разные вещи.

Лечится разбивкой: эскиз читается, контуры группируются по вложенности — внешний даёт участок, вложенный становится вырезом, так что клумбы и приствольные решётки остаются дырками, а не отдельными газонами. На каждый участок создаётся своё перекрытие с тем же типом, уровнем и параметрами. Бонусом у каждого газона появляется собственная площадь и своя строка в спецификации, а замечание по одному участку перестаёт относиться ко всему кварталу.

Коллизии: 1500 в Navisworks против 200 на сервисе

Отдельная история вышла с проверкой пересечений. Мы выгрузили отчёт из Navisworks и получили полторы тысячи коллизий. Загрузили те же модели на сервис — двести.

Разница не магическая: Navisworks по умолчанию ищет по категориям Revit, а сервис — по классам IFC и своим правилам. Можно долго настраивать поисковые наборы, чтобы повторить чужую логику, а можно принять простую мысль: ориентироваться стоит на правила того, кто проверяет.

Поэтому мы стали брать готовый отчёт сервиса и разбирать его прямо в Revit: список проверок, конфликты, переход к паре элементов, подрезка вида вокруг места пересечения. Отдельный случай — когда второй элемент огромный, вроде рельефа или планировочного решения, сделанного одним элементом: подрезать вид по нему бессмысленно, поэтому рамка строится по меньшему из двух.

Тем, кто тоже разбирает эти отчёты, полезно знать: формат живой. Осенью 2026 года конфликты переехали внутрь «Матрицы коллизий» и разложились по парам дисциплин, а прежний счётчик в отчёте остался нулевым. Инструмент, который читал только старое место, честно сообщал «конфликтов нет» на отчёте с двумя с половиной тысячами пересечений. Так что если парсите чужие отчёты — проверяйте не только наличие поля, но и то, что оно не переехало.

Заодно сделали выгрузку в XML формата Navisworks: у части заказчиков приёмка устроена так, что им нужен именно он.

Семь версий Revit из одного исходника

Про совместимость спрашивают чаще, чем про всё остальное, поэтому коротко.

Самое заметное — идентификатор элемента. До Revit 2023 это 32-битное целое, с 2024-го — 64-битное. Мелочь, но вылезает везде, где идентификатор пишется в отчёт или читается обратно, поэтому вся работа с ним сведена в один небольшой слой: остальной код не знает, какая версия собирается.

Второе — платформа: 2020–2024 живут на.NET Framework 4.8, 2025 и 2026 — на.NET 8. Это один проект с переключателем, а не семь копий кода, иначе правку пришлось бы вносить семь раз и в семи местах о ней забывать.

Третье, неочевидное: чтобы собрать плагин под версию Revit, её не обязательно иметь на машине — API берётся из пакетов со ссылочными сборками. Но собранное не значит работающее: версии, которых нет под рукой, остаются зоной риска, и честнее это признавать, чем писать «поддерживаются все».

И привет тем, кто прогоняет сборку через обфускатор: Revit ищет классы команд по именам из манифеста и ленты, а интерфейс на WPF — свойства по именам в привязках. Публичные имена придётся сохранить, иначе окно откроется пустым, а кнопка не найдёт команду. Узнаете об этом не при сборке, а от пользователя.

Что в итоге

Три вывода, которые не зависят от инструмента:

• проверять модель до экспорта дешевле ровно на время экспорта — и это, внезапно, основная экономия, а не «удобный интерфейс»;

• считать по тем же правилам, по которым считает проверяющая сторона, дешевле, чем спорить с её цифрами;

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

Расскажите нам, пожалуйста, ваш опыт разработки ЦИМ для АГР. Возможно, что‑то мы сможем наладить и упростить жизнь для всех, кто занимается этой работой.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.