Автоматизация проверок в Navisworks с помощью Python + визуализация в Power BI

Введение

В данной статье представляю свое видение процесса автоматического формирования проверок на коллизии в Navisworks для проекта с большим количеством моделей. Данный метод основан на работе с xml файлами с помощью Python. Способ не новый, меня на него вдохновила статья Проверки в Navisworks по матрице коллизий с помощью Dynamo / Хабр (habr.com). Бонусом прикладываю файл Power BI, в который можно подгрузить отчет по созданным проверкам.

Ссылка на GitHub с исходным кодом, шаблоном excel и power bi: https://github.com/i‑savelev/CollisionCheckNavisworks

Установка

Попытался сделать максимально простые для использования скрипты, но все равно придется кое‑что установить).

  1. Установить Python с официально сайта: Download Python | Python.org

  2. Установить Visual Studio Code или Pycharm для комфортной работы с файлами кода. (Необязательный пункт. Файлы Python можно запускать и без установки редактора кода — двойным нажатием на файл, а название Excel таблицы указать с помощью блокнота)

  3. Скачать архив с github, распаковать. В этот архив поместить подготовленный Excel файл,  либо редактировать вложенный

Загрузка файлов

Загрузка файлов

При первом запуске любого скрипта произойдет установка библиотеки openpyxl — она нужна для работы с Excel таблицами.

Исходные данные

В качестве исходных данных понадобится список моделей и матрица коллизий в формате xlsx (Excel). Шаблон модели есть по ссылке на GitHub.

На вкладке «Модели» записывается список моделей с категорией группировки. Наименования моделей лучше давать краткие, без учета шифра и т. д., но достаточное, чтобы по нему найти конкретный элемент в Navisworks. В названиях запрещено использовать дефис »‑».

На вкладке «Матрица» вставляется симметричная матрица с элементами, которые сгруппированы по категориям. На пересечениях матрицы записывается допуск.

Преимущество данного метода в том, что в исходной матрице не нужно учитывать все модели.

Листы с исходными данными

Листы с исходными данными

Данную таблицу необходимо разместить в одной папке с скриптами Python. Перед запуском каждого скрипта файл Excel необходимо закрыть.

В коде скриптов необходимо указать название файла Excel в переменно book.

Наименование Excel файла

Наименование Excel файла

Работа скрипта

Работа скрипта разделена на два шага.

Первый шаг — формирование списка элементов по моделям. После запуска CollisionCheck_step1.py в Excel файле появится лист «Модели_Элементы» с списком элементов по каждой модели. На этом шаге можно удалить из списка строки с ненужными элементами. Например, для моделей канализации удалить воздуховоды, лотки и т. д. После редактирования списка файл необходимо сохранить и закрыть.

Редактирование списка элементов моделей

Редактирование списка элементов моделей

Чтобы уменьшить объем ручной корректировки на данном шаге, можно задать более детальную группировку при создании матрицы коллизий и списка моделей.

Второй шаг — запуск CollisionCheck_step2.py и формирование матрицы коллизий и xml файлов с проверками и поисковыми наборами. На этом шаге данные берутся из ранее созданного листа «Модели_Элементы».

В результате выполнения скрипта создаются листы «Матрица_Заполнение», «Списки_Заполнение».

На листе «Матрица_Заполнение» появляется расширенная матрица коллизий с проверками для каждой модели. Пересечения данной матрицы заполнены наименованиями проверок и допусками. На этом листе можно визуально проверить корректность заполнения данных.

Наименования проверок формируются по следующему принципу:
[Категория 1 vs Категория 2]‑[Модель 1 vs Модель 2][Элемент 1 vs элемент 2]
Пример: AR vs KR‑AI_1.1 vs ST_1-Перекрытия vs Стены

Данное наименование позволяет в дальнейшем использовать отчеты для формирования дашборда в Power BI.

Расширенная матрица коллизий

Расширенная матрица коллизий

На листе «Списки_Заполнение» представлен тот же самый список проверок, только в виде простой таблицы. Тут можно убедиться в том, что в матрице и в списке одинаковое число проверок. Количество проверок может различаться, если изначальная матрица не симметрична.

Список проверок

Список проверок

В директории проекта создаются два xml файла «Поисковые наборы.xml» и «Проверки.xml».

Созданные файлы xml

Созданные файлы xml

Данный файлы содержат в себе поисковые наборы и проверки, которые нужно импортировать в Navisworks.
Тут поподробнее остановлюсь на структуре файлов xml.

Структура xml файла проверок

Структура xml файла проверок

Структура xml файла поисковых наборов

Структура xml файла поисковых наборов

Скрипт Python забирает данные из Excel преобразует и подставляет в шаблоны элементов xml.

Импорт в Navisworks

Сначала нужно импортировать поисковые наборы, затем проверки.

Импорт в Navisworks

Импорт в Navisworks

После импорта наборов появится папочная структура с поисковыми наборами. Все наборы отсортированы по папкам с названием моделей. Каждый набор по умолчанию содержит два условия:

  1. Файл источника содержит название модели, которое указывали на листе «Модели» таблицы Excel.

  2. Категория объекта содержит необходимую категорию элементов которую указывали на вкладке «Матрица» таблицы Excel.

Структура поисковых наборов в Navisworks

Структура поисковых наборов в Navisworks

После импорта проверки автоматически ссылаются на существующие поисковые наборы

Проверки Navisworks

Проверки Navisworks

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

Еще раз краткий алгоритм действий.

  1. Подготовка Excel документа по шаблону: заполнение листов «Модели» и «Матрица»

  2. Запуск CollisionCheck_step1.py

  3. Удаление ненужных строк с элементами из листа «Модели_Элементы»

  4. Запуск CollisionCheck_step2.py

  5. Импорт xml файлов в Navisworks

Загрузка отчетов в Power BI

На GitHub приложен шаблон дашборда для Power BI: Отчет по коллизиям.pbix. Этот отчет можно размещать в любом месте.

Для загрузки отчетов в Power BI необходимо записать отчет из Navisworks со следующими параметрами:

параметры отчета Navisworks

параметры отчета Navisworks

Сохранить этот отчет в отдельную папку и в наименовании указать дату через дефис »‑».
Пример: Отчет-2024.08.02.xml
В файле Power BI обновить путь до папки с отчетом: Преобразование данных → Настройка источника данных → Изменить источник → Выбрать папку.
При изменении источника данных матрицы могут отображаться некорректно — нужно переключить даты в срезах, чтобы информация обновилась.

907e03ea46363aa7896315c3417fc520.png

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

a6fd24f5b43ed3b5756777ad02bbaf5a.png

Дашборд содержит три страницы:

  1. Отчет — тут можно посмотреть отчёт за выбранную дату

07d931e48c88993f33deda22ab5b73b2.png
  1. Динамика отчетов — тут можно посмотреть разность количества коллизий между выбранными датами.

77217af633714b986b8b4ed7382b6024.png
  1. График — тут отображается количество коллизий по датам.

Структура поисковых наборов в Navisworks

© Habrahabr.ru