Введение

Одной из операционных задач BIM-отдела является подготовка и формирование проприетарных файлов моделей для последующего использования в тех или иных целях. На примере работы с программными продуктами Autodesk — Revit и Navisworks, подразумевается определённая логика разбивки и хранения разных форматов: RVT, NWC, NWF и NWD. Работая над крупными проектами, включающие в себя разные разделы проектной документации, корпуса зданий и секций, встаёт вопрос о единой структуре и правилах формирования файлов. В этой статье, на простом примере проекта, рассмотрен один из вариантов по автоматизации формирования BIM-моделей проекта, от пакетного экспорта файлов RVT с Revit Server до размещения соответствующих файлов разных форматов по нужным директориям и формированию сводной модели NWD.

Рис. 01. Основной пайплайн процесса Revit Server — RVT — NWC — NWD — NWF
Рис. 01. Основной пайплайн процесса Revit Server — RVT — NWC — NWD — NWF

Поэтапные действия пайплайна при помощи .bat файлов:

  1. Пакетный экспорт Revit моделей с Revit Server;

  2. Создание списка всех Revit моделей с их путями в файле TXT;

  3. Генерация NWC файлов;

  4. Создание (обновление при последующих итерациях) сводной модели NWD;

  5. Перенос (обновление с заменой при последующих итерациях) NWC файлов в папку 03.NWC;

  6. Первичное создание сводного файла NWF с последующим добавлением всех NWC файлов;

  7. Итерационный запуск .bat файлов с актуализацией вышеперечисленных пунктов.

Но, обо всём по порядку.

1. Экспорт с Revit Server

На сколько мне известно, есть два основных решения пакетного экспорта моделей с Revit Server, не прибегая к программированию и API. Через стандартную утилиту RevitServerTool и при помощи плагина eTransmit, поставляющийся с установкой Revit.

1.1. Экспорт через eTransmit

Не буду подробно расписывать этот способ, так как о нём уже упоминал в одной из статей на Dzen. Но напомню в двух словах о процессе, поскольку в eTransmit нельзя выбрать несколько моделей с Revit Server, то основной смысл заключается в том, чтобы связать(залинковать) все актуальные модели в Базовом файле и именно его выбирать при экспорте через eTransmit, установив галку в поле "Добавить файлы" — "Связанные Revit модели".

Плюсы и минусы такого подхода:

Плюсы:

  • Возможность сделать предварительную настройку перед экспортом, удалив всё ненужное и неиспользуемое в моделях;

  • Сохранение модели для передачи, предназначенной для совместно работы. Корректная передача заказчику и другим заинтересованным лицам;

  • Пакетный экспорт моделей по нажатию одной кнопки.

Минусы:

  • Нужно всегда держать в актуальном состоянии связи в Базовом файле (если речь идёт о Revit Server);

  • Проставленная галка у "Связанные Revit модели" тянет за собой все связанные модели всех связанных моделей в Базовом файле. Если есть подгруженные в какие-либо разделы моделей локальные связи, то они так же будут участвовать в процессе извлечения и при успешном исполнении попадут в результирующую директорию;

  • При экспорте создаётся папка со всеми моделями. Нет возможности жёстко зашить пути для экспорта в зависимости от раздела, корпуса и т.д.

1.2. Экспорт при помощи Batch файла

В качестве основного инструмента рассмотрим подробнее этот вариант.

При установки Revit утилита командной строки RevitServerTool, упомянутая выше, устанавливается автоматически. Находится по пути "C:\Program Files\Autodesk\Revit 20XX\RevitServerToolCommand" и используется для автоматизации создания локальных моделей на основе Revit Server.

Рис. 02. Структура проекта на Revit Server.
Рис. 02. Структура проекта на Revit Server.

В качестве примера представлена упрощённая структура проекта. На Revit Server есть четыре директории с моделями:

  • 00.COORDINATION — Модели Базового и Разбивочных файлов;

  • 01.ARCH — Архитектурные модели;

  • 02.STR — Модели Конструктива;

  • 03.HVAC — Модели раздела Отопления и Вентиляции.

Папочная структура на локальном компьютере имеет аналогичную группировку для упрощения.

Рис. 03. Верхнеуровневая локальная папочная структура и содержимое 02.RVT.
Рис. 03. Верхнеуровневая локальная папочная структура и содержимое 02.RVT.

RVT-модели, содержимое папок с Revit Server, нам необходимо скачивать(экспортировать) к себе на локальный компьютер или сервер. Для этого следует воспользоваться возможностями RevitServerTool и создать исполняющий Batch File. Синтаксис кода:

RevitServerTool createLocalRVT <model path> [-server <server name>] [-destination <path>] [-overwrite]
  • RevitServerTool — Отображение справки служебной команды;

  • L | createLocalRVT — Создание локальной модели на основе указанной серверной модели;

  • <model path> — Путь модели на Revit Server;

  • [-s | -server <server name>] — Имя адреса Revit Server или IP (обязательный аргумент);

  • [-d | -destination <path>] — Конечный путь, куда сохраняем модель;

  • [-o | -overwrite] — Перезаписывание файла модели, если он уже существует.

Batch file — это текстовый файл, содержащий последовательность команд для поочередного исполнения и для его создания можно воспользоваться простым блокнотом, но для более удобной работы, лучшим решением будет Notepad++.

Открываем Notepad++ и вписываем команды для экспорта моделей из нашего примера:

:: COORDINATION
RevitServerTool L "PROJ\00.COORDINATION\PROJ-ORG-B01_03-FM.rvt" -s IP-address -d "O:\BIM\02.RVT\00.COORDINATION/" -o
RevitServerTool L "PROJ\00.COORDINATION\PROJ-ORG-B01-BF.rvt" -s IP-address -d "O:\BIM\02.RVT\00.COORDINATION/" -o
RevitServerTool L "PROJ\00.COORDINATION\PROJ-ORG-B02-BF.rvt" -s IP-address -d "O:\BIM\02.RVT\00.COORDINATION/" -o
RevitServerTool L "PROJ\00.COORDINATION\PROJ-ORG-B03-BF.rvt" -s IP-address -d "O:\BIM\02.RVT\00.COORDINATION/" -o
:: ARCH
RevitServerTool L "PROJ\01.ARCH\PROJ-ORG-B01-ARCH.rvt" -s IP-address -d "O:\BIM\02.RVT\01.ARCH/" -o
RevitServerTool L "PROJ\01.ARCH\PROJ-ORG-B02-ARCH.rvt" -s IP-address -d "O:\BIM\02.RVT\01.ARCH/" -o
RevitServerTool L "PROJ\01.ARCH\PROJ-ORG-B03-ARCH.rvt" -s IP-address -d "O:\BIM\02.RVT\01.ARCH/" -o
:: STR
RevitServerTool L "PROJ\02.STR\PROJ-ORG-B01-STR.rvt" -s IP-address -d "O:\BIM\02.RVT\02.STR/" -o
RevitServerTool L "PROJ\02.STR\PROJ-ORG-B02-STR.rvt" -s IP-address -d "O:\BIM\02.RVT\02.STR/" -o
RevitServerTool L "PROJ\02.STR\PROJ-ORG-B03-STR.rvt" -s IP-address -d "O:\BIM\02.RVT\02.STR/" -o
:: HVAC
RevitServerTool L "PROJ\03.HVAC\PROJ-ORG-B01-HVAC.rvt" -s IP-address -d "O:\BIM\02.RVT\03.HVAC/" -o
RevitServerTool L "PROJ\03.HVAC\PROJ-ORG-B02-HVAC.rvt" -s IP-address -d "O:\BIM\02.RVT\03.HVAC/" -o
RevitServerTool L "PROJ\03.HVAC\PROJ-ORG-B03-HVAC.rvt" -s IP-address -d "O:\BIM\02.RVT\03.HVAC/" -o

В примере выше мы указываем пути моделей на Revit Server и говорим создать локальную модель L для каждой, указывая свой адрес Revit Server -s IP-address и скачиваем к себе на локальный компьютер "O:\BIM\.." с перезаписью -o файлов модели, если они уже есть.

Примечание

Конечный путь заканчивается символом "/" что означает — скачать модель с исходным именем в указанную директорию. Многие дублируют имя модели с расширением как в примере с указанием пути на Revit Server, но этого делать необязательно, используя упомянутый знак слэш. Бывает необходимо скачать RVT-модель с изменённым именем, тогда в конечном пути следует указать новое имя с расширением:

<model path>"PROJ\00.COORDINATION\PROJ-ORG-B01_03-FM.rvt"

destination <path>"O:\BIM\02.RVT\00.COORDINATION\NewName.rvt"

Команды :: или REM позволяют закомментировать строки. Скрипт их не выполняет и используются они в данном случае для визуального удобства и группировки.

Если в строках присутствует Кириллица, то необходимо поменять кодировку на OEM 866:

Рис. 04. Смена кодировки на OEM 866, если используется Кириллица.
Рис. 04. Смена кодировки на OEM 866, если используется Кириллица.

Далее сохраняем файл по пути "C:\Program Files\Autodesk\Revit 20XX\RevitServerToolCommand" с расширением Batch file.

Запускать скрипт следует именно из директории "C:\Program Files\Autodesk\Revit 20XX\RevitServerToolCommand" с полным доступом на права.

Также стоит уточнить, что структура проекта может быть любой — разбита на разделы проектной документации, на корпуса зданий и т.д., это не столь важно, в Batch файле вы указываете необходимые вам пути для сохранения моделей куда нужно, в зависимости от группировки.

Краткая демонстрация результата:

Рис. 05. Результат работы Batch скрипта для экспорта моделей с Revit Server.
Рис. 05. Результат работы Batch скрипта для экспорта моделей с Revit Server.

Плюсы и минусы такого подхода:

Плюсы:

  • Скорость сохранения моделей, как правило, быстрее по сравнению с eTransmit;

  • Если моделей много, то можно разбить на разные файлы и скачивать модели частями в зависимости от необходимости;

  • Модель сохраняется по конечному пути, без создании дополнительной папки, как в случае с eTransmit.

  • Процесс можно автоматизировать по расписанию, без необходимости вручную запускать Batch файл.

Минусы:

  • Нет предварительной подчистки модели по сравнению с eTransmit;

  • Нужно всегда держать в голове актуальную информацию по составу моделей, что бы внести корректировки в Batch файл.

Рис. 06. Итоговый результат — все RVT-модели в своих папках.
Рис. 06. Итоговый результат — все RVT-модели в своих папках.

Теперь, когда мы получили RVT-модели с Revit Server приступим к следующему этапу нашего пайплайна.

2. Получение NWC файлов и создание сводных моделей NWD, NWF

Напомню вкратце, основной процесс по работе с Revit и Navisworks в части формирования сводных моделей. Вначале необходимо получить NWC файлы из файлов RVT, далее создать сводный файл NWF куда в последствии подгружаем файлы NWC и дополнительно сохраняем сводную модель в формате NWD для передачи заказчику или подрядчикам. Порядок действий может незначительно меняться, кому как удобнее. При всём этом обилии форматов не плохо было бы их раскидать по нужным местам. Отдельно хранить файлы NWC, в папке 03.NWC в нашем случае, которые там будут систематически обновляться скриптом. В другом месте формировать сводную модель NWF для работы с коллизиями, поисковыми наборами и т.д. и отдельно иметь место для хранения актуальной сводной модели в формате NWD у которой иные цели.

Примечание

Можно обойтись и без такой раздельной структуры, но с ней будет гораздо удобнее, если в проекте подразумевается несколько корпусов здания, которые имеет смысл делить и соответственно у каждого из них будут самостоятельные сводные модели NWF и NWD

Рис. 07. Второй основной этап процесса. Генерация NWC и создание NWF, NWD моделей.
Рис. 07. Второй основной этап процесса. Генерация NWC и создание NWF, NWD моделей.

Бóльшую часть действий можно и нужно автоматизировать. Создадим скрипт Batch файла для реализации этой задачи.

2.1. Создание скрипта для генерации NWC и создания сводной модели NWD

Для задачи автоматизации выделил отдельную папку 05.Automation в которой будут хранится исполняющий Batch файл, журнал событий (log) и сгенерированный файл TXT со списком RVT-моделей, о котором ещё расскажу.

Полностью готовый код выглядит так:

:: Encoding for Cyrillic
CHCP 65001 > NUL
:: Getting all .rvt files from a folder and subfolders and creating a list of RVT-models in .txt format
DIR /b/s "O:\BIM\02.RVT\*.rvt" | findstr /i/v/r "BF FM \.[0-9][0-9][0-9][0-9]\." > "List RVT-models.txt"

:: Launching the FileToolsTaskRunner utility to generate .nwv files according to the list of .txt RVT-models created above. Additionally, a federated .nwd model and a .log file is created
start /wait "Navisworks Batch Utility" "C:\Program Files\Autodesk\Navisworks Manage 2023\FileToolsTaskRunner.exe" /i "O:\BIM\05.Automation\List RVT-models.txt" /of "O:\BIM\01.FM NWD\PROJ-ORG-B01_03-FM.nwd" /log "O:\BIM\05.Automation\Log.log"

:: Variables are set for the source path, for the destination path and for generating files  
set "source_folder=O:\BIM\02.RVT"
set "destination_folder=O:\BIM\03.NWC"
set "file_format=*.nwc"
:: Loop through the source path, extracting files of the required format and moving them to the final path
for /r "%source_folder%" %%G in (%file_format%) do (
move "%%G" "%destination_folder%"
)

Теперь разберём его подробнее.

Как и в примере выше, если используется Кириллица в именах и путях файлов, то нужно менять кодировку:

CHCP 65001 > NU

Следующая команда проходит по всем файлам формата RVT в папке 02.RVT и её вложенным папкам, после чего создаёт список найденных файлов с их путями в отдельном файле TXT в той же папке:

DIR /b/s "O:\BIM\02.RVT\*.rvt" > "List RVT-models.txt"

Этот список нужен для генерации NWC файлов при помощи утилиты FileToolsTaskRunner, которая с устанавливается с Navisworks.

Можно сразу доработать код, исключив из поиска модели Разбивочного и Базовых файлов, за ненадобностью в сводных моделях Navisworks, а также потенциальные копии RVT-моделей, где в постфиксе имён добавляется ".001"; ".002" и т.д.

Рис. 08. Исключение из поиска Базового и Разбивочных файлов вместе с потенциальными копиями RVT-моделей.
Рис. 08. Исключение из поиска Базового и Разбивочных файлов вместе с потенциальными копиями RVT-моделей.

Добавим команду findstr с сопутствующими параметрами /i/v/r, значение которых можно узнать тут и указываем регулярное выражение для исключения копий:

DIR /b/s "O:\BIM\02.RVT\*.rvt" | findstr /i/v/r "BF FM \.[0-9][0-9][0-9][0-9]\." > "List RVT-models.txt"

В кавычках сочетание символов по которым исключаем поиск файлов и синтаксис регулярного выражения.

В качестве теста можно запустить команду и убедиться что создаётся файл TXT со списком путей моделей:

Рис. 09. Создание списка моделей с их путями в файле TXT.
Рис. 09. Создание списка моделей с их путями в файле TXT.

Далее добавим команду вызова Navisworks Batch Utility, но при помощи командной строки и утилиты FileToolsTaskRunner:

start /wait "Navisworks Batch Utility" "C:\Program Files\Autodesk\Navisworks Manage 2023\FileToolsTaskRunner.exe" /i "O:\BIM\05.Automation\List RVT-models.txt" /of "O:\BIM\01.FM NWD\PROJ-ORG-B01_03-FM.nwd" /log "O:\BIM\05.Automation\Log.log"

Аналог команды Batch Utility из интерфейса Navisworks, который уже упоминался в другой статье на Dzen.

В команде выше мы:

  • Указываем путь до утилиты FileToolsTaskRunner, чтобы её запустить;

  • Ссылаемся на ранее созданный список TXT с моделями, по которому будет происходить генерация NWC файлов;

  • Далее создаём сводную модель NWD, сохраняя по пути "O:\BIM\01.FM NWD\" с именем PROJ-ORG-B01_03-FM.nwd;

  • Параллельно создаётся журнал событий (log), в той же папке, где можно отслеживать исполнение действий по моделям.

Смотрим результат:

Рис. 10. Генерация NWC файлов, журнала событий и сводной модели NWD.
Рис. 10. Генерация NWC файлов, журнала событий и сводной модели NWD.

Осталось перемещать созданные NWC файлы в папку 03.NWC откуда в последствии они будут подгружаться в NWF файл.

Для этого задаем три переменные:

  • set "source_folder=O:\BIM\02.RVT" с указанием директории, откуда берём файлы NWC;

  • set "destination_folder=O:\BIM\03.NWC" с указанием папки куда переносим/заменяем NWC файлы;

  • set "file_format=*.nwc" с указанием нужного формата, который переносим — NWC.

И добавляем кусок кода с циклом для перебора:

set "source_folder=O:\BIM\02.RVT"
set "destination_folder=O:\BIM\03.NWC"
set "file_format=*.nwc"

for /r "%source_folder%" %%G in (%file_format%) do (
move "%%G" "%destination_folder%"
)

Теперь сгенерированные файлы NWC будут автоматический перемещаться в нужное нам место.

Рис. 11. Перемещение NWC файлов.
Рис. 11. Перемещение NWC файлов.

Создадим сводную модель NWF и посмотрим итоговый результат.

2.2. Первичное создание сводной модели NWF и финальная проверка всего процесса

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

Примечание

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

Поэтому просто создадим файл с именем PROJ-ORG-B01_03-FM.nwf в папке 04.NWF и добавим в неё все файлы NWC из папки 03.NWF, после первого исполнения нашего скрипта.

По итогу мы имеем всего два Batch файла для запуска, которые экспортируют все RVT-модели с Revit Server, затем генерируют NWC файлы с перемещением в нужную область, создают сводную модель NWD и соответственно авто обновляется сводная рабочая модель NWF.

Демонстрация исполнения всего процесса:

Рис. 12. Итоговая демонстрация процесса.
Рис. 12. Итоговая демонстрация процесса.

Используя подобный подход под каждый проект можно быстро получать актуальные BIM-модели, формировать сводные файлы и разом структурировать данные.

3. Заключение

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

Как вы решаете подобные задачи и какими инструментами пользуетесь?

Комментарии (0)