МНОГОПОТОЧНЫЙ ЭКСПОРТ RVT-МОДЕЛЕЙ В .NWC ЧЕРЕЗ BAT-ФАЙЛ

Введение

Давайте поговорим про методики экспорта моделей. В зависимости от потребностей каждый BIM-отдел использует свою, я выделила четыре способа (рис. 1).

1. Каждый из нас начинал с 1 ступени: открыл модель в Revit и экспортировал- цель достигнута, базовые потребности достигнуты.

2. Набравшись опыта, нам уже хочется ускорить процесс, и далее, в зависимости от имеющихся ресурсов и знаний, BIM-отдел переходит на 2 или 3 ступень. Если в компании не принято использовать скриптовые файлы для вызова каких- либо команд: BIM-отдел не увлекается работой ПК, а сисадмины живут своей жизнью, то скорее всего 2-ой ступени в таком случае не избежать. Я бы назвала этот способ также ручным или полуавтоматическим, поскольку не нужно кодить, но при закрываем следующие потребности:

  • не нужно открывать модели, выгрузки происходят в фоновом режиме;
  • можно задать расписание выгрузок.

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

4. А затем перед нами встает задача выгрузок моделей целого квартала (100+), мотивирующая на поиск самого быстрого решения.

Рис. 1 - Методы выгрузок в формат .NWC в зависимости от степени развития компании

Рис. 1 – Методы выгрузок в формат .NWC в зависимости от степени развития компании

Своим опытом перехода с третьей ступени на четвертую поделился BIM-эксперт Заур Дауров:

Как автоматически экспортировать модели из Revit, не открывая его, в форматы Navisworks, посредством утилиты Batch Utility, запускаемой через bat-файл.

Batch Utility- что за зверь?🦁

Утилита Batch Utility позволяет, как пакетно экспортировать набор файлов .RVT в данный момент, так и запланировать этот экспорт на определённый промежуток времени, например, в нерабочее время.

Batch Utility является самопроизвольной программой, которую можно запустить как из самого Navisworks (рис.2), так и с помощью команды “Выполнить” (Win+R), введя* (рис. 3 -см карусель рис. 2):

C:\Program Files\Autodesk\Navisworks Manage 2023\FileToolsGUI.exe

*при условии, что Navisworks устанавливался в директории по умолчанию

Рис. 2 - Запуск Batch Utility через Navisworks --->Карусель
Рис. 3 - Запуск через команду "Выполнить" (Win+R)  <--- Карусель

Рис. 2 – Запуск Batch Utility через Navisworks —>Карусель

Выглядит все это дело довольно просто (рис. 4). В окне программы мы делаем следующее:

  1. Выбираем все RVT файлы, которые хотим экспортировать в Navisworks;
  2. Указываем, в каком формате хотим получить сборку всех наших файлов и где ее сохранить. При этом в исходной директории файлов .RVT появятся файлы .NWC с идентичными именами;
  3. Указываем, где сохранить так называемый лог-файл (журнал событий), записывающий весь процесс экспорта. По нему мы будем понимать, в каких RVT-файлах произошел тот или иной сбой;

Далее начинается процесс экспорта. С небольшой задержкой появится окно процесса, десять раз жать на “Выполнить” не нужно, хотя, честно сказать, руки чешутся каждый раз. 😁

Рис. 4 - Последовательная настройка утилиты

Рис. 4 – Последовательная настройка утилиты

Давайте освежим в памяти разницу между форматами данными Navisworks и познакомимся с bat-файлами поближе.😏

Форматы Navisworks

На выходе мы получаем .NWC файлы (количество файлов = количеству моделей), а также сборка .NWF/.NWD (1 файл на все модели) при выводе, как один файл или, .NWD (количество файлов = количеству моделей) при выводе, как несколько файлов.

· NWD (Navisworks Document) — это закрытый формат файла, который содержит всю необходимую информацию для просмотра и визуализации проекта в Navisworks. Файлы .NWD часто используются для распространения проектов, поскольку они содержат встроенные данные и не требуют исходных файлов для просмотра.

· NWF (Navisworks File Set) — это файл проекта, который не содержит саму модель, а скорее ссылки на исходные файлы и информацию об изменениях, установленных в Navisworks, такие как заметки, камеры, анимация и т.д. .NWF используется для управления проектом, позволяя обновлять данные в соответствии с изменениями файлов.

· NWC (Navisworks Cache File) — это файл кэша, который создается Navisworks при импорте моделей из различных форматов. Файл .NWC позволяет быстро загружать сложные модели, поскольку он оптимизирован для работы с Navisworks. При изменении исходного файла .NWC файл может быть обновлен для отражения этих изменений.

В данной статье нас больше всего интересует формат .NWC, из которого, как правило, складываются сводные модели зданий и сооружений.

С самой утилитой все понятно, вроде бы ничего сложно. В принципе, если хотите настроить простой регулярный автоматический экспорт, то можете сделать это непосредственно в Batch Utility и не придется вообще погружаться в специфику bat-файлов. Однако, создавая подобную автоматизацию через bat-файл, у вас сильно развязаны в руки в плане гибкости настройки экспорта и других различных фич, например, можно сразу после экспорта задействовать автоматическое переименование и перенос получившимся файлам и многое другое. Что же такое bat-файл?

Краткая сводка про bat-файлы

  • bat-файл — это текстовый скриптовый файл, содержащий серию команд для операционной системы Windows. Имя “bat” происходит от расширения файла — .bat, что является сокращением от “batch” (пакетная обработка). Эти файлы используются для автоматизации задач на компьютерах под управлением Microsoft Windows и выполняется с помощью командной строки cmd.exe.
  • После запуска bat-файла командная строка последовательно читает и выполняет каждую команду в файле, точно так же, как если бы эти команды были введены вручную. Это делает bat-файлы очень полезными для автоматизации повторяющихся задач, таких как запуск программ, копирование файлов, управление системными настройками и многое другое.
  • Открыть или создать подобный файл можно с помощью любого блокнота, но обязательно необходимо учитывать кодировки.
  • Кодировки для bat-файлов важны, потому что они различны в зависимости от языковой версии операционной системы и настроек региональных стандартов. По умолчанию командная оболочка ожидает bat-файлы в кодировке OEM (Original Equipment Manufacturer), которая варьируется в зависимости от языка Windows. В англоязычных версиях это обычно CP437, в русскоязычных — CP866. Когда вы создаете bat-файл, важно сохранять его в правильной кодировке, чтобы избежать проблем с отображением или интерпретацией текста, особенно если используются не ASCII символы, например, кириллица.
  • Еще одним плюсом использования bat-файла, в рамках нашей задачи, является тема данной статьи – так называемый многопоточный экспорт через bat-файл. Название это естественно неофициальное, а просто выбранное Зауром, исходя из принципа работы и идеи.😉

Как написать обычный bat-файл?

Начнем с классического применения bat-файл в подобной задаче и с его принципа работы.

Рис. 5 - Содержимое bat-файла для экспорта в NWC в упрощенной форме ---> Карусель
Рис. 6 - Содержимое файла конфигурации ---> Карусель
Рис. 7 - Часть содержимого bat-файла для экспорта в NWC в действительной форме <--- Карусель

Рис. 5 – Содержимое bat-файла для экспорта в NWC в упрощенной форме —> Карусель

Рассмотрим bat-файл с уже написанным содержимым для экспорта проекта “TestProject” (рис. 5), где:

  1. Команда, запускающая Batch Utility. Обратите внимание, что строка отличается от той, что указана ранее на рис. 3 (запуск через Win+R). Данный вариант запуска предназначен именно для варианта с bat-файлом, а не прямым запуском Batch Utility.
  2. Имя и путь к файлу конфигурации (рис. 6) – обычный txt-файл, в котором перечислены RVT модели, которые вам нужно экспортировать;
  3. Имя и место, в котором вы хотите сохранить файл общей сборки NWF или NWD.
  4. Имя и место, в котором вы хотите сохранить log-файл.

Последним полем указывается версия получаемых файлов – /version 2019. Не зависимо от версии Revit и Navisworks указываем 2019.

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

ВАЖНО! Все выше описанные 4 строки должны записываться в 1 строку друг за другом через пробел (рис. 7), для правильной работы скрипта. В данном виде (рис. 5) bat-файл представлен только для упрощённого восприятия.

Принцип работы нашего классического bat-файла разобрали, теперь рассмотрим его некий апгрейд – многопоточный вариант. Но для начала ответим на вопрос: зачем вообще нужен подобный вариант улучшения?

Многопоточный экспорт моделей

Целеполагание

Ни для кого не секрет, что оптимизация Autodesk Revit, мягко говоря, никакая, при работе программа не задействует больше 1 физического ядра (2 потоков), что при взаимодействии с тяжелыми проектами вызывает просто космический дискомфорт.

Главная причина – оптимизация и полноценная нагрузка вашего ПК во время подобного экспорта, следовательно, высокая скорость.

И вот, кто бы удивился, при прохождении экспорта посредством Batch Utility оптимизация этого процесса ровно такая же – никакая. Экспорт полноценно задействует всего 1 физическое ядро, соответственно о высокой скорости экспортирования хотя бы 1 тяжелой модели не может быть и речи, добавьте к этому файл конфигурации, состоящий из с 100 моделей, и получите многочасовую работу вашего скрипта (все файлы в списке будут экспортироваться по одному, по очереди).

Да, есть возможность запуска скрипта ночью, в нерабочее время и по сути, неважно, сколько будет длиться экспорт: 3 часа или 5. Однако при проектировании 🙊муравейников🙊, к примеру, файлы конфигурации могут ссылаться на 1000 моделей, и представим, что нужно экспортировать каждые сутки. Печально наблюдать, как 64-х ядерный Threadripper PRO 5995WX (кто понял, тот понял) делает это 12 часов. Бывают и случаи, когда модели необходимо актуализировать в .NWC 2 раза за рабочий день. Что делать?

Как написать многопоточный bat-файл?

Первое, что приходит в голову- это расписать несколько запусков экспорта в самом bat-файле (рис. 8). Однако после запуска bat-файл будет выполнять все эти команды последовательно, значит смысла в этом нет, но ход мыслей верный.

Вот тут мы и начинаем задействовать ту гибкость, о которой говорили вначале. Если немного изучим синтаксис языка batch, то найдем там подходящую команду с нужными параметрами – “start“.

Команда “start” позволяет запускать приложения в отдельном окне, с возможностью указания некоторых параметров их выполнения:

start <“title”> [/d <path>] [/i] [{/min | /max}] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | /belownormal}] [/node <NUMA node>] [/affinity <hexaffinity>] [/wait] [/b] [/machine <x86|amd64|arm|arm64>] [<command> [<parameter>… ] | <program> [<parameter>… ]]

Далее немного переписываем наш bat-файл, учитывая команду “start” и получаем, что каждая строчка является параллельно запущенным экземпляром экспорта в NWC, т.е. параллельно запущенной Batch Utility (рис. 9).

Рис. 8 - Несколько сеансов запуска экспорта, которые запускаются последовательно---> Карусель
Рис. 9 - Несколько сеансов запуска экспорта, которые запускаются параллельно <--- Карусель

Рис. 8 – Несколько сеансов запуска экспорта, которые запускаются последовательно—> Карусель

Команды расписали, давайте обратим внимание на некоторые вещи.

Синтаксис “START”

1. Обязательная дополнительная пара кавычек “” после команды “start” и запуском программы. Это необходимый параметр для использования данной команды – “title”, который задает заголовок, отображаемый в строке заголовка окна командной строки. В данном случае можно оставить пустым.

2. Для каждого запускаемого экземпляра Batch Utility и соответственно для каждой строки в bat-файле, необходимо иметь собственный файл конфигурации (на рис. 9 Config_1, Config_2 и т.д.). Т.е. каждый параллельно запущенный экспорт будет обрабатывать свои модели, разбить модели можно, как угодно. Тоже самое с log-файлами. В примере это сделано по проектам.

3. Строки с командной “echo” – просто выводят информацию в консоли, это не обязательно, но можно также ознакомиться на указанном ресурсе.

Проговорим также пару технических моментов, больше связанных с железом вашего ПК.

Что под капотом?

  • ЦП. Количество параллельно запускаемых экземпляров должно быть не больше количества ядер вашего центрального процессора. Если ПК довольно слабый, лучше делать количество запускаемых экземпляров меньше, чем кол-во ядер.

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

  • Оперативная память. Тут все просто, такой параллельный экспорт будет чудовищно съедать всю вашу оперативную память, поэтому чем её больше, тем лучше. Нужно грамотно распределить нагрузку, также учитывая первый пункт.

При близкой к 100% загрузке оперативной памяти вашего ПК, экспорт может зависнуть в одном положении и его придется принудительно закрывать. На практике Заура был случай, когда 64 Гб оперативки испарялись на глазах…

Везде нужен баланс иначе космического взрыва не избежать

Везде нужен баланс иначе космического взрыва не избежать

Про теорию поговори, давайте запускать!🚀

Запуск bat-файла и красивый финал

После запуска нового bat-файла (рис. 9) получаем параллельно запускаемые экземпляры экспорта- рис. 10.

Рис. 10 - Выполнение экспорта после запуска BAT-файла (рис. 9)

Рис. 10 – Выполнение экспорта после запуска BAT-файла (рис. 9)

Время обработки одного и того же количества моделей таким методом, даже на слабеньком 6-ти ядерном процессоре, будет сильно меньше, чем экспорт классическим методом. Производительность такого решения уже будет напрямую зависеть от уровня вашего железа и правильности распределения всей нагрузки, т.е. вашего количества моделей на экспорт.

Также можно развернуть весь процесс на мощностях вашего корпоративного сервера, там, как правило, железо очень подходящее (много ядер и оперативки), и можно не мучать ПК обычного пользователя.

Конечно, данный метод никак нельзя назвать той настоящей программной поддержкой многопоточности ПО, которую, к слову, очень давно хочется уже увидеть в том же Revit. Это скорее попытки энтузиаста хоть как-то улучшить ситуацию и попытаться для себя решить проблему, с которой Autodesk оставляет на едине.

В целом метод вышел весьма рабочий, особенно когда выбор и так не велик.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *