Введение.
Проектирование метрополитена в Revit требует учета специфических требований, таких как продольный уклон линий. В этой статье описан кейс координации проекта станции метро, где стандартные инструменты Revit не позволяли точно отображать высотные отметки относительно уровня головок рельсов. Мы рассмотрим проблему, предложенное решение и его влияние на процесс проектирования.
Проблема
Метрополитен — это подземный мир, где привычные правила проектирования не всегда работают. Согласно ГОСТ 23961-80, нулевая отметка высот в проекте метро — это верх головок рельсов, а не стандартный уровень чистого пола. Добавьте к этому требование СП 120.13330.2022: "продольный уклон линий должен составлять 3‰", то есть 3 мм на каждый метр. Для станции длиной 400 м перепад высот достигает 1,2 м (400 × 0,003). Это не мелочь, которую можно проигнорировать, — такие отклонения влияют на все высотные отметки в проектной и рабочей документации.
Условия
Учет уклона в Revit возможен двумя способами:
- Моделировать станцию под наклоном, чтобы уровень в Revit совпадал с проектным нулем (головками рельсов). Но тогда горизонт в модели "заваливается", и все вертикальные элементы — колонны, стены, трубы — нужно проектировать с учетом этого уклона. Это создает массу проблем на этапе координации и чертежей.
- Моделировать в стандартной горизонтальной плоскости, но пересчитывать все высотные отметки относительно проектного нуля. Это проще, но Revit по умолчанию показывает отметки от своего уровня, и каждую нужно корректировать вручную.
Первый вариант оказался слишком сложным — попробуйте объяснить подрядчику, почему все ваши чертежи "косые". Поэтому мы выбрали второй подход, но он требовал постоянных пересчетов. Ручная корректировка сотен отметок — это не только долго, но и чревато ошибками.
Расчет корректной отметки
Сама формула для пересчета отметок проста, как школьная математика:
- H — высота элемента относительно нуля Revit (берем из модели).
- L — расстояние по горизонтали от точки пересечения проектного нуля с нулем Revit.
- h — высота проектного нуля над нулем Revit, равная ( L * 0,003 ).
- Итоговая отметка: H - (L * 0,003)
Например, если элемент находится на высоте 5 м в Revit, а расстояние ( L ) до точки пересечения — 100 м, то проектная отметка: 5 - (100 * 0,003) = 4,7м. Казалось бы, ничего сложного. Но когда таких элементов сотни, а модель постоянно обновляется, ручной пересчет превращается в кошмар. До нашего решения проектировщики вносили эти значения как текстовые аннотации, тратя часы и рискуя ошибиться.
Автоматизация размещения отметок
Мы понимали, что ручной метод — это тупик. Нужно было автоматизировать процесс, но рабочий способ был найден не сразу.
Изначально мы продумывали два подхода, которые казались логичными:
1.Текстовые аннотации. Просто вставить рассчитанные отметки как текст на чертежах. Но текст в Revit не привязан к элементам. Если колонна или балка перемещается, аннотация "зависает" на старом месте. Плюс, когда на чертеже десятки текстовых меток, понять, к чему они относятся, — та еще головоломка. Этот метод оказался слишком примитивным и ненадежным.
2. Параметры и марки. Идея была такая: добавить каждому элементу параметр с рассчитанной отметкой и отображать его через марку (тег). Но тут начались сложности. Во-первых, разные элементы маркируются по-разному: колонны — по низу или верху, трубы — по центру. Во-вторых, длинные элементы (например, балки), расположенные под углом к проектному нулю, имеют разные отметки на концах. Создавать для каждого случая отдельный параметр? Это безумие. В итоге проектировщикам пришлось бы постоянно следить за актуальностью параметров и марок, что почти так же трудоемко, как ручной метод.
Оба подхода требовали слишком много контроля и не решали проблему автоматизации. Нужно было что-то принципиально новое.
Решение: семейство высотной отметки
После долгих поисков и экспериментов мы нашли неожиданный выход: использовать стандартное семейство высотной отметки Revit. Это был настоящий прорыв! Высотная отметка автоматически следует за элементом, обновляет положение в зависимости от точки привязки (верх, низ, центр) и идеально подходит для нашей задачи. Но был один нюанс: как заставить отметку показывать наше рассчитанное значение, а не высоту относительно нуля Revit?
Настройка семейства отметки
Главная загвоздка — Revit не позволяет напрямую заменить значение высотной отметки. Мы можем добавить префикс, но оригинальное число (высота от нуля Revit) никуда не девается. Чтобы обойти это, мы пошли на хитрость:
- Изменили формат единиц в семействе: установили максимальное округление (900 млрд), отключили знаки и пробелы между префиксом и числом.
2. В результате оригинальное значение отметки стало отображаться как "0" (из-за огромного округления).
3. В префикс мы теперь можем записать любое рассчитанное значение, и оно выглядит как основное.
Например, если рассчитанная отметка — 10 метров, мы записываем "+10.00" в префикс, и на чертеже отображается "+10.000". Да, в конце всегда висит этот нуль, но после обсуждения с командой мы решили, что округление до 10 мм всех устраивает. Если есть способ убрать этот нуль, я его не нашел, но наш вариант работает отлично.
Автоматизация через Dynamo
Когда формула и семейство были готовы, оставалось автоматизировать процесс. Для этого мы написали скрипт на Dynamo. Принцип его работы простой, но эффективный:
- Собираем все высотные отметки нашего специального семейства в модели
- Для каждой отметки извлекаем координаты (свойство Origin): X — для расчета ( L ), Z — для ( H ).
- Вычисляем проектную отметку по формуле H - (L *0,003) .
- Записываем результат в префикс отметки.
Скрипт обрабатывает все отметки в проекте за считанные секунды, обновляя существующие и заполняя новые. Он также формирует отчет: сколько отметок обновлено, где были расхождения. Это помогает проконтролировать его работу.
Как проектировщики работают с отметками
Мы передали решение команде, и вот как они его используют:
- Проектировщик размещает наши специальные высотные отметки на нужные элементы (колонны, балки, трубы). При этом стандартные отметки Revit можно использовать параллельно — они не конфликтуют.
- Когда модель готова или обновлена, запускается скрипт Dynamo. Он автоматически пересчитывает и заполняет все отметки.
- После выполнения скрипт выдает отчет, чтобы команда могла проверить изменения.
Этот процесс сократил время на оформление документации в разы. Раньше на пересчет и проверку уходили дни, теперь — пара кликов.
Заключение
Когда мы показали решение инженерам и архитекторам, они сказали: "Это то, что нам было нужно!" Оно не просто решает техническую задачу, но и делает работу удобной, исключая рутинные действия. Теперь это один из ключевых инструментов в наших проектах метро. Я искал аналоги такого подхода, но ничего похожего не нашел. Если вы знаете другие способы, напишите в комментариях — будет интересно обсудить. А если вы столкнулись с подобной задачей, надеюсь, наш опыт поможет вам найти решение или хотя бы подскажет направление.
Спасибо, что дочитали! Если статья была полезной, ставьте лайки и делитесь своими мыслями. Проектирование — это всегда поиск баланса между стандартами и креативностью, и я рад поделиться нашим маленьким вкладом в этот процесс.
Использованные версии: Revit 2022, Dynamo 2.12.
Скрипт с примером проекта опубликовал в свой телеграмм канал: