<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Евгений Тесёлкин</title><subtitle>BIM / VDC Management

Блоги:
habr.com/users/esteselkin
dzen.ru/esteselkin</subtitle><author><name>Евгений Тесёлкин</name></author><id>https://teletype.in/atom/esteselkin</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/esteselkin?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@esteselkin?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=esteselkin"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/esteselkin?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-21T14:42:06.703Z</updated><entry><id>esteselkin:automatization-revit-navisworks</id><link rel="alternate" type="text/html" href="https://teletype.in/@esteselkin/automatization-revit-navisworks?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=esteselkin"></link><title>Способ автоматизации процесса получения BIM-моделей с Revit Server и последующей сборкой в Navisworks. Подробный гайд.</title><published>2024-03-17T18:14:22.052Z</published><updated>2024-03-18T17:17:17.472Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/a9/f4/a9f4eed1-a5b4-403a-a47d-e51519fdffb3.png"></media:thumbnail><category term="bim" label="BIM"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b6/89/b6895e1b-8052-4a47-856e-f75d2c0518d6.jpeg&quot;&gt;Одной из операционных задач BIM-отдела является подготовка и формирование BIM-моделей проприетарных форматов для последующего использования в тех или иных целях. На примере работы с программными продуктами Autodesk — Revit и Navisworks, подразумевается определённая логика разбивки и хранения разных форматов: RVT, NWC, NWF и NWD. Работая над крупными проектами, включающие в себя разные разделы проектной документации, корпуса зданий и секций, встаёт вопрос о единой структуре и правилах формирования файлов. В этой статье, на простом примере проекта, рассмотрен один из вариантов по автоматизации формирования BIM-моделей проекта, от пакетного экспорта файлов RVT с Revit Server до размещения соответствующих файлов разных форматов по нужным...</summary><content type="html">
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#046a&quot;&gt;Введение.&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#eKCm&quot;&gt;1. Экспорт с Revit Server&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#jPBg&quot;&gt;1.1. Экспорт через eTransmit&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#3UOO&quot;&gt;1.2. Экспорт при помощи Batch файла&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#pLHh&quot;&gt;2. Получение NWC файлов и создание сводных моделей NWD, NWF&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#7bBr&quot;&gt;2.1. Создание скрипта для генерации NWC и создания сводной модели NWD&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#bGWM&quot;&gt;2.2. Первичное создание сводной модели NWF и финальная проверка всего процесса.&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#2I9d&quot;&gt;3. Заключение&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;figure id=&quot;uUXM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b6/89/b6895e1b-8052-4a47-856e-f75d2c0518d6.jpeg&quot; width=&quot;1440&quot; /&gt;
    &lt;figcaption&gt;Обложка&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;046a&quot;&gt;Введение.&lt;/h2&gt;
  &lt;p id=&quot;KWFL&quot;&gt;Одной из операционных задач &lt;a href=&quot;https://ru.wikipedia.org/wiki/BIM&quot; target=&quot;_blank&quot;&gt;BIM&lt;/a&gt;-отдела является подготовка и формирование BIM-моделей проприетарных форматов для последующего использования в тех или иных целях. На примере работы с программными продуктами Autodesk — Revit и Navisworks, подразумевается определённая логика разбивки и хранения разных форматов: &lt;em&gt;&lt;strong&gt;RVT&lt;/strong&gt;, &lt;strong&gt;NWC&lt;/strong&gt;, &lt;strong&gt;NWF&lt;/strong&gt;&lt;/em&gt; и &lt;em&gt;&lt;strong&gt;NWD&lt;/strong&gt;&lt;/em&gt;. Работая над крупными проектами, включающие в себя разные &lt;a href=&quot;https://www.consultant.ru/document/cons_doc_LAW_75048/cae383069aa05e04750eb0df525a6c535460cc1a/&quot; target=&quot;_blank&quot;&gt;разделы проектной документации&lt;/a&gt;, корпуса зданий и секций, встаёт вопрос о единой структуре и правилах формирования файлов. В этой статье, на простом примере проекта, рассмотрен один из вариантов по автоматизации формирования BIM-моделей проекта, от пакетного экспорта файлов &lt;strong&gt;&lt;em&gt;RVT&lt;/em&gt;&lt;/strong&gt; с Revit Server до размещения соответствующих файлов разных форматов по нужным директориям и формированию сводной модели &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;figure id=&quot;miWX&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/75/2e75631a-4c2a-4a6c-9609-62f58eae001a.jpeg&quot; width=&quot;6560&quot; /&gt;
    &lt;figcaption&gt;Рис. 01. Основной пайплайн процесса Revit Server — RVT — NWC — NWD — NWF&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LsVu&quot;&gt;Поэтапные действия &lt;em&gt;пайплайна&lt;/em&gt; при помощи &lt;code&gt;.bat&lt;/code&gt; файлов:&lt;/p&gt;
  &lt;ol id=&quot;2EHa&quot;&gt;
    &lt;li id=&quot;wSu5&quot;&gt;Пакетный экспорт Revit моделей с &lt;strong&gt;Revit Server&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;GfXt&quot;&gt;Создание списка всех Revit моделей с их путями в файле &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;z2JF&quot;&gt;Генерация &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлов;&lt;/li&gt;
    &lt;li id=&quot;UAnk&quot;&gt;Создание (&lt;em&gt;обновление при последующих итерациях&lt;/em&gt;) сводной модели &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;eRJy&quot;&gt;Перенос (&lt;em&gt;обновление с заменой при последующих итерациях&lt;/em&gt;) &lt;strong&gt;&lt;em&gt;NWC &lt;/em&gt;&lt;/strong&gt;файлов в папку &lt;strong&gt;03.NWC&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;OfWX&quot;&gt;Первичное создание сводного файла &lt;strong&gt;&lt;em&gt;NWF &lt;/em&gt;&lt;/strong&gt;с последующим добавлением всех &lt;strong&gt;&lt;em&gt;NWC &lt;/em&gt;&lt;/strong&gt;файлов;&lt;/li&gt;
    &lt;li id=&quot;MIk3&quot;&gt;Итерационный запуск &lt;code&gt;.bat&lt;/code&gt; файлов с актуализацией вышеперечисленных пунктов.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;sNph&quot;&gt;Но, обо всём по порядку.&lt;/p&gt;
  &lt;h2 id=&quot;eKCm&quot;&gt;1. Экспорт с Revit Server&lt;/h2&gt;
  &lt;p id=&quot;uvUx&quot;&gt;На сколько мне известно, есть два основных решения пакетного экспорта моделей с Revit Server, не прибегая к программированию и API. Через стандартную утилиту &lt;a href=&quot;https://help.autodesk.com/view/RVT/2023/ENU/?guid=GUID-77F62A96-8A61-4539-9664-0DD0AB08B6ED&quot; target=&quot;_blank&quot;&gt;RevitServerTool&lt;/a&gt; и при помощи плагина &lt;a href=&quot;https://help.autodesk.com/view/RVT/2023/ENU/?guid=GUID-2317F99F-070C-4D05-A37B-5D9488B35376&quot; target=&quot;_blank&quot;&gt;eTransmit&lt;/a&gt;, поставляющийся с установкой Revit.&lt;/p&gt;
  &lt;h3 id=&quot;jPBg&quot;&gt;1.1. Экспорт через eTransmit&lt;/h3&gt;
  &lt;p id=&quot;ai0a&quot;&gt;Не буду подробно расписывать этот способ, так как о нём уже упоминал в одной из статей на &lt;a href=&quot;https://dzen.ru/a/Y-3u8JfIwUZfU9It&quot; target=&quot;_blank&quot;&gt;Dzen&lt;/a&gt;. Но напомню в двух словах о процессе, поскольку в eTransmit нельзя выбрать несколько моделей с Revit Server, то основной смысл заключается в том, чтобы связать(&lt;em&gt;залинковать&lt;/em&gt;) все актуальные модели в &lt;strong&gt;Базовом файле&lt;/strong&gt; и именно его выбирать при экспорте через eTransmit, установив галку в поле &amp;quot;Добавить файлы&amp;quot; — &amp;quot;Связанные Revit модели&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;vm81&quot;&gt;Плюсы и минусы такого подхода:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;4B9D&quot;&gt;Плюсы:&lt;/p&gt;
    &lt;ul id=&quot;k8gk&quot;&gt;
      &lt;li id=&quot;7OcW&quot;&gt;Возможность сделать предварительную настройку перед экспортом, удалив всё ненужное и неиспользуемое в моделях;&lt;/li&gt;
      &lt;li id=&quot;FHb6&quot;&gt;Сохранение модели для передачи, предназначенной для совместно работы. Корректная передача заказчику и другим заинтересованным лицам;&lt;/li&gt;
      &lt;li id=&quot;61hF&quot;&gt;Пакетный экспорт моделей по нажатию &lt;em&gt;одной кнопки.&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;jxt2&quot;&gt;Минусы:&lt;/p&gt;
    &lt;ul id=&quot;FhJn&quot;&gt;
      &lt;li id=&quot;nALY&quot;&gt;Нужно всегда держать в актуальном состоянии связи в &lt;strong&gt;Базовом файле&lt;/strong&gt; (&lt;em&gt;если речь идёт о Revit Server&lt;/em&gt;);&lt;/li&gt;
      &lt;li id=&quot;qIKI&quot;&gt;Проставленная галка у &amp;quot;Связанные Revit модели&amp;quot; &lt;em&gt;тянет &lt;/em&gt;за собой все связанные модели всех связанных моделей в &lt;strong&gt;Базовом файле&lt;/strong&gt;. Если есть подгруженные в какие-либо разделы моделей локальные связи, то они так же будут участвовать в процессе извлечения и при успешном исполнении попадут в результирующую директорию;&lt;/li&gt;
      &lt;li id=&quot;tblq&quot;&gt;При экспорте создаётся папка со всеми моделями. Нет возможности жёстко зашить пути для экспорта в зависимости от раздела, корпуса и т.д.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;3UOO&quot;&gt;1.2. Экспорт при помощи Batch файла&lt;/h3&gt;
  &lt;p id=&quot;HU1K&quot;&gt;В качестве основного инструмента рассмотрим подробнее этот вариант.&lt;/p&gt;
  &lt;p id=&quot;Lalw&quot;&gt;При установке Revit утилита командной строки &lt;strong&gt;RevitServerTool&lt;/strong&gt;, упомянутая выше, устанавливается автоматически. Находится по пути &amp;quot;&lt;em&gt;C:\Program Files\Autodesk\Revit 20&lt;strong&gt;XX&lt;/strong&gt;\RevitServerToolCommand&lt;/em&gt;&amp;quot; и используется для автоматизации создания локальных моделей на основе Revit Server. &lt;/p&gt;
  &lt;figure id=&quot;haMN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/10/8410cb70-a0a2-49fe-9b0f-fd4df1c09cf6.png&quot; width=&quot;1320&quot; /&gt;
    &lt;figcaption&gt;Рис. 02. Структура проекта на Revit Server.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vct5&quot;&gt;В качестве примера представлена упрощённая структура проекта. На Revit Server есть четыре директории с моделями:&lt;/p&gt;
  &lt;ul id=&quot;6pij&quot;&gt;
    &lt;li id=&quot;ZFFM&quot;&gt;&lt;strong&gt;00.COORDINATION&lt;/strong&gt; — Модели Базового и Разбивочных файлов;&lt;/li&gt;
    &lt;li id=&quot;uoCl&quot;&gt;&lt;strong&gt;01.ARCH&lt;/strong&gt; — Архитектурные модели;&lt;/li&gt;
    &lt;li id=&quot;u3tf&quot;&gt;&lt;strong&gt;02.STR&lt;/strong&gt; — Модели Конструктивных решений;&lt;/li&gt;
    &lt;li id=&quot;FImf&quot;&gt;&lt;strong&gt;03.HVAC&lt;/strong&gt; — Модели раздела Отопления и Вентиляции.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;X2JI&quot;&gt;Папочная структура на локальном компьютере имеет аналогичную группировку для упрощения.&lt;/p&gt;
  &lt;figure id=&quot;Ds7g&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/40/fc/40fc9a43-5d88-452f-b442-0d398fd404cf.png&quot; width=&quot;504&quot; /&gt;
    &lt;figcaption&gt;Рис. 03. Верхне уровневая локальная папочная структура и содержимое 02.RVT&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iAnX&quot;&gt;RVT-модели, содержимое папок с Revit Server, нам необходимо скачивать(&lt;em&gt;экспортировать&lt;/em&gt;) к себе на локальный компьютер или сервер. Для этого следует воспользоваться возможностями &lt;strong&gt;RevitServerTool&lt;/strong&gt; и создать исполняющий &lt;a href=&quot;https://en.wikipedia.org/wiki/Batch_file&quot; target=&quot;_blank&quot;&gt;Batch File&lt;/a&gt;. Синтаксис кода:&lt;/p&gt;
  &lt;pre id=&quot;AGNZ&quot; data-lang=&quot;shell&quot;&gt;RevitServerTool createLocalRVT &amp;lt;model path&amp;gt; [-server &amp;lt;server name&amp;gt;] [-destination &amp;lt;path&amp;gt;] [-overwrite]&lt;/pre&gt;
  &lt;ul id=&quot;UNBT&quot;&gt;
    &lt;li id=&quot;urf5&quot;&gt;&lt;code&gt;RevitServerTool&lt;/code&gt; — Отображение справки служебной команды;&lt;/li&gt;
    &lt;li id=&quot;2fXc&quot;&gt;&lt;code&gt;L | createLocalRVT&lt;/code&gt; — Создание локальной модели на основе указанной серверной модели;&lt;/li&gt;
    &lt;li id=&quot;6Row&quot;&gt;&lt;code&gt;&amp;lt;model path&amp;gt;&lt;/code&gt; — Путь модели на Revit Server;&lt;/li&gt;
    &lt;li id=&quot;fPT4&quot;&gt;&lt;code&gt;[-s | -server &amp;lt;server name&amp;gt;]&lt;/code&gt; — Имя адреса Revit Server или IP (&lt;em&gt;обязательный аргумент&lt;/em&gt;);&lt;/li&gt;
    &lt;li id=&quot;dxFO&quot;&gt;&lt;code&gt;[-d | -destination &amp;lt;path&amp;gt;]&lt;/code&gt; — Конечный путь, куда сохраняем модель;&lt;/li&gt;
    &lt;li id=&quot;6gRf&quot;&gt;&lt;code&gt;[-o | -overwrite]&lt;/code&gt; — Перезаписывание файла модели, если он уже существует.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;o0SD&quot;&gt;&lt;strong&gt;Batch file&lt;/strong&gt; — это текстовый файл, содержащий последовательность команд для поочередного исполнения и для его создания можно воспользоваться простым блокнотом, но для более удобной работы, лучшим решением будет &lt;a href=&quot;https://notepad-plus-plus.org/downloads/&quot; target=&quot;_blank&quot;&gt;Notepad++&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;lv1v&quot;&gt;Открываем Notepad++ и вписываем команды для экспорта моделей из нашего примера:&lt;/p&gt;
  &lt;pre id=&quot;uJ5j&quot; data-lang=&quot;shell&quot;&gt;:: COORDINATION
RevitServerTool L &amp;quot;PROJ\00.COORDINATION\PROJ-ORG-B01_03-FM.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\00.COORDINATION/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\00.COORDINATION\PROJ-ORG-B01-BF.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\00.COORDINATION/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\00.COORDINATION\PROJ-ORG-B02-BF.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\00.COORDINATION/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\00.COORDINATION\PROJ-ORG-B03-BF.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\00.COORDINATION/&amp;quot; -o
:: ARCH
RevitServerTool L &amp;quot;PROJ\01.ARCH\PROJ-ORG-B01-ARCH.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\01.ARCH/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\01.ARCH\PROJ-ORG-B02-ARCH.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\01.ARCH/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\01.ARCH\PROJ-ORG-B03-ARCH.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\01.ARCH/&amp;quot; -o
:: STR
RevitServerTool L &amp;quot;PROJ\02.STR\PROJ-ORG-B01-STR.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\02.STR/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\02.STR\PROJ-ORG-B02-STR.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\02.STR/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\02.STR\PROJ-ORG-B03-STR.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\02.STR/&amp;quot; -o
:: HVAC
RevitServerTool L &amp;quot;PROJ\03.HVAC\PROJ-ORG-B01-HVAC.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\03.HVAC/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\03.HVAC\PROJ-ORG-B02-HVAC.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\03.HVAC/&amp;quot; -o
RevitServerTool L &amp;quot;PROJ\03.HVAC\PROJ-ORG-B03-HVAC.rvt&amp;quot; -s IP-address -d &amp;quot;O:\BIM\02.RVT\03.HVAC/&amp;quot; -o&lt;/pre&gt;
  &lt;p id=&quot;z9cm&quot;&gt;В примере выше мы указываем пути моделей на Revit Server и говорим создать локальную модель &lt;code&gt;L&lt;/code&gt; для каждой, указывая свой адрес Revit Server  &lt;code&gt;-s IP-address&lt;/code&gt; и скачиваем к себе на локальный компьютер &amp;quot;&lt;em&gt;O:\BIM\..&lt;/em&gt;&amp;quot; с перезаписью &lt;code&gt;-o&lt;/code&gt; файлов модели, если они уже есть. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;NlLE&quot;&gt;Примечание.&lt;/p&gt;
    &lt;p id=&quot;7yvV&quot;&gt;Конечный путь заканчивается символом &amp;quot;&lt;strong&gt;/&lt;/strong&gt;&amp;quot; что означает — скачать модель с исходным именем в указанную директорию. Многие дублируют имя модели с расширением как в примере с указанием пути на Revit Server, но этого делать необязательно, используя упомянутый знак &lt;em&gt;слэш&lt;/em&gt;. Бывает необходимо скачать RVT-модель с изменённым именем, тогда в конечном пути следует указать новое имя с расширением:&lt;/p&gt;
    &lt;p id=&quot;bHIt&quot;&gt;&lt;code&gt;&amp;lt;model path&amp;gt;&lt;/code&gt; — &lt;code&gt;&amp;quot;PROJ\00.COORDINATION\PROJ-ORG-B01_03-FM.rvt&amp;quot;&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;9PP7&quot;&gt;&lt;code&gt;destination &amp;lt;path&amp;gt;&lt;/code&gt; — &lt;code&gt;&amp;quot;O:\BIM\02.RVT\00.COORDINATION\NewName.rvt&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Tw27&quot;&gt;Команды &lt;code&gt;::&lt;/code&gt; или &lt;code&gt;REM &lt;/code&gt;позволяют закомментировать строки. Скрипт их не выполняет и используются они в данном случае для визуального удобства и группировки.&lt;/p&gt;
  &lt;p id=&quot;TSb0&quot;&gt;Если в строках присутствует &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0&quot; target=&quot;_blank&quot;&gt;Кириллица&lt;/a&gt;, то необходимо поменять кодировку на &lt;strong&gt;OEM 866&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;M9IZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bf/17/bf17d925-2b05-4e6b-b6f6-e62a525ed399.png&quot; width=&quot;924&quot; /&gt;
    &lt;figcaption&gt;Рис. 04. Смена кодировки на OEM 866, если используется Кириллица.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FtCC&quot;&gt;Далее сохраняем файл по пути &amp;quot;&lt;em&gt;C:\Program Files\Autodesk\Revit 20&lt;strong&gt;XX&lt;/strong&gt;\RevitServerToolCommand&lt;/em&gt;&amp;quot; с расширением &lt;em&gt;&lt;strong&gt;Batch file&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;
  &lt;p id=&quot;ADxi&quot;&gt;Запускать скрипт следует именно из директории &amp;quot;&lt;em&gt;C:\Program Files\Autodesk\Revit 20&lt;strong&gt;XX&lt;/strong&gt;\RevitServerToolCommand&lt;/em&gt;&amp;quot; с &lt;strong&gt;полным доступом&lt;/strong&gt; на права.&lt;/p&gt;
  &lt;p id=&quot;M95E&quot;&gt;Также стоит уточнить, что структура проекта может быть любой — разбита на разделы проектной документации, на корпуса зданий и т.д., это не столь важно, в &lt;strong&gt;&lt;em&gt;Batch&lt;/em&gt;&lt;/strong&gt; файле вы указываете необходимые вам пути для сохранения моделей куда нужно, в зависимости от группировки.&lt;/p&gt;
  &lt;p id=&quot;yLD4&quot;&gt;Краткая демонстрация результата:&lt;/p&gt;
  &lt;figure id=&quot;XQhK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9d/ca/9dca1119-a6ee-4f3f-ad30-c7009e02f12f.gif&quot; width=&quot;1280&quot; /&gt;
    &lt;figcaption&gt;Рис. 05. Результат работы Batch скрипта для экспорта моделей с Revit Server.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;XFZB&quot;&gt;Плюсы и минусы такого подхода:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;IlcO&quot;&gt;Плюсы:&lt;/p&gt;
    &lt;ul id=&quot;uDoy&quot;&gt;
      &lt;li id=&quot;4NPR&quot;&gt;Скорость сохранения моделей, как правило, быстрее по сравнению с eTransmit;&lt;/li&gt;
      &lt;li id=&quot;L9D4&quot;&gt;Если моделей много, то можно разбить на разные файлы и скачивать модели частями в зависимости от необходимости;&lt;/li&gt;
      &lt;li id=&quot;xsa0&quot;&gt;Модель сохраняется по конечному пути, без создания дополнительной папки, как в случае с eTransmit.&lt;/li&gt;
      &lt;li id=&quot;Kiip&quot;&gt;Процесс можно автоматизировать по расписанию, без необходимости вручную запускать &lt;strong&gt;&lt;em&gt;Batch&lt;/em&gt;&lt;/strong&gt; файл.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nvur&quot;&gt;Минусы:&lt;/p&gt;
    &lt;ul id=&quot;yWuP&quot;&gt;
      &lt;li id=&quot;ORjc&quot;&gt;Нет предварительной подчистки модели по сравнению с eTransmit;&lt;/li&gt;
      &lt;li id=&quot;jniW&quot;&gt;Нужно всегда держать в голове актуальную информацию по составу моделей, что бы внести корректировки в &lt;strong&gt;&lt;em&gt;Batch&lt;/em&gt;&lt;/strong&gt; файл.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;gL1x&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ef/61/ef61993c-5c49-4cb0-b460-ce9b91468a65.png&quot; width=&quot;1413&quot; /&gt;
    &lt;figcaption&gt;Рис. 06. Итоговый результат — все RVT-модели в своих папках.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;EsEJ&quot;&gt;Теперь, когда мы получили RVT-модели с Revit Server приступим к следующему этапу нашего &lt;em&gt;пайплайна&lt;/em&gt;.&lt;/p&gt;
  &lt;h2 id=&quot;pLHh&quot;&gt;2. Получение NWC файлов и создание сводных моделей NWD, NWF&lt;/h2&gt;
  &lt;p id=&quot;Ufpl&quot;&gt;Напомню вкратце, основной процесс по работе с Revit и Navisworks в части формирования сводных моделей. Вначале необходимо получить &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлы из файлов &lt;strong&gt;&lt;em&gt;RVT&lt;/em&gt;&lt;/strong&gt;, далее создать сводный файл &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; куда в последствии подгружаем файлы &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; и дополнительно сохраняем сводную модель в формате &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt; для передачи заказчику или подрядчикам. Порядок действий может незначительно меняться, кому как удобнее. При всём этом обилии форматов не плохо было бы их раскидать по нужным местам. Отдельно хранить файлы &lt;strong&gt;NWC&lt;/strong&gt;, в папке &lt;strong&gt;03.NWC&lt;/strong&gt; в нашем случае, которые там будут систематически обновляться скриптом. В другом месте формировать сводную модель &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; для работы с коллизиями, поисковыми наборами и т.д. и отдельно иметь место для хранения актуальной сводной модели в формате &lt;strong&gt;NWD&lt;/strong&gt; у которой иные цели.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;EuWv&quot;&gt;Примечание.&lt;/p&gt;
    &lt;p id=&quot;YrQ4&quot;&gt;Можно обойтись и без такой раздельной структуры, но с ней будет гораздо удобнее, если в проекте подразумевается несколько корпусов здания, которые имеет смысл делить и соответственно у каждого из них будут самостоятельные сводные модели &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; и &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;D6gj&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6f/12/6f12735a-4631-4033-9354-1ad0a24314ff.png&quot; width=&quot;1072&quot; /&gt;
    &lt;figcaption&gt;Рис. 07. Второй основной этап процесса. Генерация NWC и создание NWF, NWD моделей.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0tGo&quot;&gt;Бóльшую часть действий можно и нужно автоматизировать. Создадим скрипт &lt;strong&gt;&lt;em&gt;Batch&lt;/em&gt;&lt;/strong&gt; файла для реализации этой задачи.&lt;/p&gt;
  &lt;h3 id=&quot;7bBr&quot;&gt;2.1. Создание скрипта для генерации NWC и создания сводной модели NWD&lt;/h3&gt;
  &lt;p id=&quot;wEoe&quot;&gt;Для задачи автоматизации выделил отдельную папку &lt;strong&gt;05.Automation&lt;/strong&gt; в которой будут храниться исполняющий &lt;strong&gt;&lt;em&gt;Batch&lt;/em&gt;&lt;/strong&gt; файл, журнал событий (&lt;em&gt;log&lt;/em&gt;) и сгенерированный файл &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt; со списком RVT-моделей, о котором ещё расскажу. &lt;/p&gt;
  &lt;p id=&quot;C2K7&quot;&gt;Полностью готовый код выглядит так:&lt;/p&gt;
  &lt;pre id=&quot;JnIf&quot; data-lang=&quot;shell&quot;&gt;:: Encoding for Cyrillic
CHCP 65001 &amp;gt; NUL
:: Getting all .rvt files from a folder and subfolders and creating a list of RVT-models in .txt format
DIR /b/s &amp;quot;O:\BIM\02.RVT\*.rvt&amp;quot; | findstr /i/v/r &amp;quot;BF FM \.[0-9][0-9][0-9][0-9]\.&amp;quot; &amp;gt; &amp;quot;List RVT-models.txt&amp;quot;

:: 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 &amp;quot;Navisworks Batch Utility&amp;quot; &amp;quot;C:\Program Files\Autodesk\Navisworks Manage 2023\FileToolsTaskRunner.exe&amp;quot; /i &amp;quot;O:\BIM\05.Automation\List RVT-models.txt&amp;quot; /of &amp;quot;O:\BIM\01.FM NWD\PROJ-ORG-B01_03-FM.nwd&amp;quot; /log &amp;quot;O:\BIM\05.Automation\Log.log&amp;quot;

:: Variables are set for the source path, for the destination path and for generating files  
set &amp;quot;source_folder=O:\BIM\02.RVT&amp;quot;
set &amp;quot;destination_folder=O:\BIM\03.NWC&amp;quot;
set &amp;quot;file_format=*.nwc&amp;quot;
:: Loop through the source path, extracting files of the required format and moving them to the final path
for /r &amp;quot;%source_folder%&amp;quot; %%G in (%file_format%) do (
move &amp;quot;%%G&amp;quot; &amp;quot;%destination_folder%&amp;quot;
)&lt;/pre&gt;
  &lt;p id=&quot;iSZO&quot;&gt;Теперь разберём его подробнее.&lt;/p&gt;
  &lt;p id=&quot;yA6f&quot;&gt;Как и в примере выше, если используется Кириллица в именах и путях файлов, то нужно менять кодировку:&lt;/p&gt;
  &lt;pre id=&quot;z4dM&quot; data-lang=&quot;shell&quot;&gt;CHCP 65001 &amp;gt; NU&lt;/pre&gt;
  &lt;p id=&quot;B8AB&quot;&gt;Следующая команда проходит по всем файлам формата &lt;strong&gt;&lt;em&gt;RVT&lt;/em&gt;&lt;/strong&gt; в папке &lt;strong&gt;02.RVT&lt;/strong&gt; и её вложенным папкам, после чего создаёт список найденных файлов с их путями в отдельном файле &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt; в той же папке:&lt;/p&gt;
  &lt;pre id=&quot;bjLA&quot; data-lang=&quot;shell&quot;&gt;DIR /b/s &amp;quot;O:\BIM\02.RVT\*.rvt&amp;quot; &amp;gt; &amp;quot;List RVT-models.txt&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;wkQQ&quot;&gt;Этот список нужен для генерации &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлов при помощи утилиты &lt;a href=&quot;https://help.autodesk.com/view/NAV/2023/ENU/?guid=GUID-3EC4C7E0-479C-42FD-88CB-1FC46AD0D08E&quot; target=&quot;_blank&quot;&gt;FileToolsTaskRunner&lt;/a&gt;, которая устанавливается с Navisworks.&lt;/p&gt;
  &lt;p id=&quot;YOqy&quot;&gt;Можно сразу доработать код, исключив из поиска модели &lt;strong&gt;Разбивочного&lt;/strong&gt; и &lt;strong&gt;Базовых файлов&lt;/strong&gt;, за ненадобностью в сводных моделях Navisworks, а также потенциальные копии RVT-моделей, где в постфиксе имён добавляется &amp;quot;&lt;em&gt;.001&amp;quot;&lt;/em&gt;; &amp;quot;&lt;em&gt;.002&amp;quot;&lt;/em&gt; и т.д.&lt;/p&gt;
  &lt;figure id=&quot;BHnw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/13/0d/130df042-abe4-43fe-93de-13678078b9c7.png&quot; width=&quot;748&quot; /&gt;
    &lt;figcaption&gt;Рис. 08. Исключение из поиска Базового и Разбивочных файлов вместе с потенциальными копиями RVT-моделей.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vmQl&quot;&gt;Добавим команду  &lt;code&gt;findstr&lt;/code&gt; с сопутствующими параметрами &lt;code&gt;/i/v/r&lt;/code&gt;, значение которых можно узнать &lt;a href=&quot;https://learn.microsoft.com/ru-ru/windows-server/administration/windows-commands/findstr&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; и указываем &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F&quot; target=&quot;_blank&quot;&gt;регулярное выражение&lt;/a&gt; для исключения копий:&lt;/p&gt;
  &lt;pre id=&quot;V808&quot; data-lang=&quot;shell&quot;&gt;DIR /b/s &amp;quot;O:\BIM\02.RVT\*.rvt&amp;quot; | findstr /i/v/r &amp;quot;BF FM \.[0-9][0-9][0-9][0-9]\.&amp;quot; &amp;gt; &amp;quot;List RVT-models.txt&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;P28q&quot;&gt;В кавычках сочетание символов по которым исключаем поиск файлов и синтаксис регулярного выражения.&lt;/p&gt;
  &lt;p id=&quot;wWjg&quot;&gt;В качестве теста можно запустить команду и убедиться что создаётся файл &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt; со списком путей моделей:&lt;/p&gt;
  &lt;figure id=&quot;7X7d&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bc/c7/bcc7d299-8092-4a4b-a6fd-02af9354cffa.gif&quot; width=&quot;1478&quot; /&gt;
    &lt;figcaption&gt;Рис. 09. Создание списка моделей с их путями в файле TXT.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Hhr6&quot;&gt;Далее добавим команду вызова &lt;a href=&quot;https://help.autodesk.com/view/NAV/2023/ENU/?guid=GUID-3EC4C7E0-479C-42FD-88CB-1FC46AD0D08E&quot; target=&quot;_blank&quot;&gt;Navisworks Batch Utility&lt;/a&gt;, но при помощи командной строки и утилиты FileToolsTaskRunner:&lt;/p&gt;
  &lt;pre id=&quot;lrKx&quot; data-lang=&quot;shell&quot;&gt;start /wait &amp;quot;Navisworks Batch Utility&amp;quot; &amp;quot;C:\Program Files\Autodesk\Navisworks Manage 2023\FileToolsTaskRunner.exe&amp;quot; /i &amp;quot;O:\BIM\05.Automation\List RVT-models.txt&amp;quot; /of &amp;quot;O:\BIM\01.FM NWD\PROJ-ORG-B01_03-FM.nwd&amp;quot; /log &amp;quot;O:\BIM\05.Automation\Log.log&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;JEKu&quot;&gt;Аналог команды Batch Utility из интерфейса Navisworks, который уже упоминался в другой статье на &lt;a href=&quot;https://dzen.ru/a/Y_TGSbWZNx-pvBYO&quot; target=&quot;_blank&quot;&gt;Dzen&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;uRIw&quot;&gt;В команде выше мы:&lt;/p&gt;
  &lt;ul id=&quot;eJsr&quot;&gt;
    &lt;li id=&quot;RR7m&quot;&gt;Указываем путь до утилиты FileToolsTaskRunner, чтобы её запустить;&lt;/li&gt;
    &lt;li id=&quot;K7Y1&quot;&gt;Ссылаемся на ранее созданный список &lt;strong&gt;&lt;em&gt;TXT&lt;/em&gt;&lt;/strong&gt; с моделями, по которому будет происходить генерация &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлов;&lt;/li&gt;
    &lt;li id=&quot;5bAR&quot;&gt;Далее создаём сводную модель &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt;, сохраняя по пути &amp;quot;&lt;em&gt;O:\BIM\01.FM NWD\&lt;/em&gt;&amp;quot; с именем PROJ-ORG-B01_03-FM&lt;strong&gt;.nwd&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;8oPd&quot;&gt;Параллельно создаётся журнал событий (&lt;em&gt;log&lt;/em&gt;), в той же папке, где можно отслеживать исполнение действий по моделям.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;0Oq4&quot;&gt;Смотрим результат:&lt;/p&gt;
  &lt;figure id=&quot;gOnl&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/aa/81aa328b-e4a2-4a49-aee7-c6ff3e886cbb.gif&quot; width=&quot;1481&quot; /&gt;
    &lt;figcaption&gt;Рис. 10. Генерация NWC файлов, журнала событий и сводной модели NWD.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ITNO&quot;&gt;Осталось перемещать созданные &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлы в папку &lt;strong&gt;03.NWC&lt;/strong&gt; откуда впоследствии они будут подгружаться в &lt;em&gt;&lt;strong&gt;NWF&lt;/strong&gt;&lt;/em&gt; файл.&lt;/p&gt;
  &lt;p id=&quot;IgFJ&quot;&gt;Для этого задаем три переменные:&lt;/p&gt;
  &lt;ul id=&quot;lOqD&quot;&gt;
    &lt;li id=&quot;iRTU&quot;&gt;&lt;code&gt;set &amp;quot;source_folder=O:\BIM\02.RVT&amp;quot;&lt;/code&gt; с указанием директории, откуда берём файлы &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
    &lt;li id=&quot;HAf3&quot;&gt;&lt;code&gt;set &amp;quot;destination_folder=O:\BIM\03.NWC&amp;quot;&lt;/code&gt; с указанием папки куда переносим/заменяем &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлы;&lt;/li&gt;
    &lt;li id=&quot;gLjf&quot;&gt;&lt;code&gt;set &amp;quot;file_format=*.nwc&amp;quot;&lt;/code&gt; с указанием нужного формата, который переносим — &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;e0vf&quot;&gt;И добавляем кусок кода с циклом для перебора:&lt;/p&gt;
  &lt;pre id=&quot;Go3d&quot; data-lang=&quot;shell&quot;&gt;set &amp;quot;source_folder=O:\BIM\02.RVT&amp;quot;
set &amp;quot;destination_folder=O:\BIM\03.NWC&amp;quot;
set &amp;quot;file_format=*.nwc&amp;quot;

for /r &amp;quot;%source_folder%&amp;quot; %%G in (%file_format%) do (
move &amp;quot;%%G&amp;quot; &amp;quot;%destination_folder%&amp;quot;
)&lt;/pre&gt;
  &lt;p id=&quot;1DMN&quot;&gt;Теперь сгенерированные файлы &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; будут автоматический перемещаться в нужное нам место.&lt;/p&gt;
  &lt;figure id=&quot;Ocb8&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/79/a5/79a5cd69-6a46-4399-bb77-69188857fe87.gif&quot; width=&quot;1478&quot; /&gt;
    &lt;figcaption&gt;Рис. 11. Перемещение NWC файлов.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zhOj&quot;&gt;Создадим сводную модель &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; и посмотрим итоговый результат.&lt;/p&gt;
  &lt;h3 id=&quot;bGWM&quot;&gt;2.2. Первичное создание сводной модели NWF и финальная проверка всего процесса.&lt;/h3&gt;
  &lt;p id=&quot;lTss&quot;&gt;Для нового проекта, одноразовой акцией, является создание сводной модели &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt;. В последующих итерациях нам достаточно очередной раз эту сводную модель, где будет обновление данных, если &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлы были обновлены.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;hC7R&quot;&gt;Примечание.&lt;/p&gt;
    &lt;p id=&quot;5xJn&quot;&gt;Сводную модель &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; мы также можем зашить в код и создавать автоматически, но в этом нет необходимости, так как в файле &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; хранятся ссылки на файлы &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt;, которые обновляются каждый раз при последующих открытиях модели &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt;. Помимо прочего, в этой модели ведётся работа с матрицей коллизий, симуляции строительства и т.д., то есть эти наработки будут пропадать, если заново обновлять &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt; файл.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;qik6&quot;&gt;Поэтому просто создадим файл с именем PROJ-ORG-B01_03-FM&lt;strong&gt;.nwf&lt;/strong&gt; в папке &lt;strong&gt;04.NWF&lt;/strong&gt; и добавим в неё все файлы &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; из папки &lt;strong&gt;03.NWF&lt;/strong&gt;, после первого исполнения нашего скрипта. &lt;/p&gt;
  &lt;p id=&quot;ZR4k&quot;&gt;По итогу мы имеем всего два &lt;strong&gt;Batch&lt;/strong&gt; файла для запуска, которые экспортируют все RVT-модели с Revit Server, затем генерируют &lt;strong&gt;&lt;em&gt;NWC&lt;/em&gt;&lt;/strong&gt; файлы с перемещением в нужную область, создают сводную модель &lt;strong&gt;&lt;em&gt;NWD&lt;/em&gt;&lt;/strong&gt; и соответственно авто обновляется сводная &lt;em&gt;рабочая&lt;/em&gt; модель &lt;strong&gt;&lt;em&gt;NWF&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;3XtL&quot;&gt;Демонстрация исполнения всего процесса:&lt;/p&gt;
  &lt;figure id=&quot;ySGl&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9a/16/9a16ea8e-0c03-4c48-8a3d-654b29ed704d.gif&quot; width=&quot;1474&quot; /&gt;
    &lt;figcaption&gt;Рис. 12. Итоговая демонстрация процесса.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qneR&quot;&gt;Используя подобный подход под каждый проект можно быстро получать актуальные BIM-модели, формировать сводные файлы и разом структурировать данные.&lt;/p&gt;
  &lt;h2 id=&quot;2I9d&quot;&gt;3. Заключение&lt;/h2&gt;
  &lt;p id=&quot;ot8z&quot;&gt;Возможно подход не идеален и может показаться на первый взгляд не простым, но если разобраться и потратить какое-то время, то выясниться, что это гораздо лучше, чем делать часть работы в ручную или пренебрегать структурированием. Использование удобных интерфейсов программ мне нравится куда больше, но ты либо упираешься в ограничение самой программы, либо прибегаешь к помощи программистов, если сам таким не являешься. А подход из статьи может использовать абсолютно каждый и гибко настраивать под себя. Необязательно для этого уметь программировать. Поскольку, разбираться с синтаксисом команд для &lt;strong&gt;Batch&lt;/strong&gt; файлов, то ещё &amp;quot;&lt;em&gt;удовольствие&lt;/em&gt;&amp;quot;, вы можете обратиться за помощью к Сhat-GPT, если вам требуется модификация скрипта конкретно для ваших рабочих процессов, с чем он прекрасно справиться.&lt;/p&gt;
  &lt;p id=&quot;0f0C&quot;&gt;Как вы решаете подобные задачи и какими инструментами пользуетесь?&lt;/p&gt;

</content></entry><entry><id>esteselkin:collision-report-powerbi</id><link rel="alternate" type="text/html" href="https://teletype.in/@esteselkin/collision-report-powerbi?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=esteselkin"></link><title>Визуальный и интерактивный отчёт матрицы коллизий из Autodesk Navisworks в Microsoft Power BI</title><published>2023-11-01T13:42:09.824Z</published><updated>2023-11-02T11:13:12.189Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/c0/2c/c02ca351-1589-4fcc-b99f-0e4dbfa8f3e6.png"></media:thumbnail><category term="power-bi" label="Power BI"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/08/96/08963f9d-3a8e-4116-bbea-f6b891652107.jpeg&quot;&gt;В архитектурно-строительной сфере с появлением BIM-технологий всё больше приходится работать с данными, анализировать их и визуализировать для наглядности и понимания. При проектировании зданий и сооружений большое внимание уделяется качеству проектных решений, в том числе предотвращению коллизий на строительной площадке. Работая с BIM-моделями(упрощённо: 3D-модель с атрибутивной информацией элементов) мы можем более качественно и заблаговременно получать информацию о потенциальных коллизиях. Полученные данные необходимо анализировать и принимать в работу, а также визуализировать для донесения более широкому кругу людей, в том числе.</summary><content type="html">
  &lt;h2 id=&quot;idyL&quot;&gt;Введение&lt;/h2&gt;
  &lt;p id=&quot;F7mO&quot;&gt;В архитектурно-строительной сфере с появлением &lt;a href=&quot;https://ru.wikipedia.org/wiki/BIM#:~:text=BIM%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%B8%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85%20%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%20%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0.&quot; target=&quot;_blank&quot;&gt;BIM-технологий&lt;/a&gt; всё больше приходится работать с данными, анализировать их и визуализировать для наглядности и понимания. При проектировании зданий и сооружений большое внимание уделяется качеству проектных решений, в том числе предотвращению коллизий на строительной площадке. Работая с BIM-моделями(&lt;em&gt;упрощённо: 3D-модель с атрибутивной информацией элементов&lt;/em&gt;) мы можем более качественно и заблаговременно получать информацию о потенциальных коллизиях. Полученные данные необходимо анализировать и принимать в работу, а также визуализировать для донесения более широкому кругу людей, в том числе. &lt;/p&gt;
  &lt;p id=&quot;POCi&quot;&gt;Эта статья является более расширенной версией &lt;a href=&quot;https://dzen.ru/a/YqIFvz6GLCUihUdZ?share_to=link&quot; target=&quot;_blank&quot;&gt;поста с Dzen&lt;/a&gt; про формирование динамической матрицы коллизий. Судя по обратной связи, многим не хватило более подробного раскрытия процесса импорта и преобразования отчёта &lt;strong&gt;.xml&lt;/strong&gt; в &lt;strong&gt;Power BI&lt;/strong&gt; и дальнейшая работа с данными. В этой статье я постараюсь дать более подробный гайд, но также освещу весь процесс начиная с формирования &lt;a href=&quot;https://help.autodesk.com/view/NAV/2021/ENU/?guid=GUID-D4B6B835-499E-4C10-BA70-46353B90A0D0&quot; target=&quot;_blank&quot;&gt;поисковых наборов&lt;/a&gt; (&lt;em&gt;Search Sets&lt;/em&gt;) в &lt;a href=&quot;https://www.autodesk.com/products/navisworks/overview&quot; target=&quot;_blank&quot;&gt;Autodesk Navisworks&lt;/a&gt; для более целостной картины.&lt;/p&gt;
  &lt;p id=&quot;4utF&quot;&gt;В конце должны получить примерно такой результат:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;F0oZ&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/57/80/5780d88c-45e5-4a81-8d34-be2c09713ea6.gif&quot; width=&quot;678&quot; /&gt;
      &lt;figcaption&gt;Финальный результат в Power BI&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;h2 id=&quot;oRZR&quot;&gt;Подготовка проверок на коллизии в Autodesk Navisworks&lt;/h2&gt;
  &lt;h3 id=&quot;WarO&quot;&gt;Создание поисковых наборов&lt;/h3&gt;
  &lt;p id=&quot;iHYm&quot;&gt;Прежде чем проверять &lt;a href=&quot;https://ru.wikipedia.org/wiki/BIM&quot; target=&quot;_blank&quot;&gt;BIM-модель&lt;/a&gt; на коллизии в &lt;strong&gt;Navisworks&lt;/strong&gt;, необходимо создать &lt;strong&gt;поисковые наборы&lt;/strong&gt; для более гибкой и качественной проверки. Поскольку, практически любой &lt;a href=&quot;https://hh.ru/article/305116&quot; target=&quot;_blank&quot;&gt;BIM-специалист&lt;/a&gt; знает, как создавать их, то заострять внимание на этом не буду и в качестве примера возьму уже преднастроенные поисковые наборы.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;1UX8&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/ab/88/ab881ca6-7a69-41c3-9a19-5505156333c0.png&quot; width=&quot;1367&quot; /&gt;
      &lt;figcaption&gt;Пример структуры &amp;quot;Поисковых наборов&amp;quot;&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;nk0U&quot;&gt;Формирование отчёта проверок&lt;/h3&gt;
  &lt;p id=&quot;v8DN&quot;&gt;Для получения и подготовки отчёта переходим на вкладку &lt;strong&gt;Clash Detective&lt;/strong&gt; и формируем проверки на коллизии. В зависимости от требований и регламентов структура будет отличаться.&lt;/p&gt;
  &lt;p id=&quot;0Ovw&quot;&gt;Нажимаем &lt;strong&gt;Запустить проверку&lt;/strong&gt; и видим некоторую информацию о конфликтах&lt;em&gt;(коллизиях)&lt;/em&gt; и их количестве:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;kwEH&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/5d/d2/5dd201cc-78d6-47de-b19d-42f5bb5afd96.png&quot; width=&quot;1367&quot; /&gt;
      &lt;figcaption&gt;Настройка и результат проверки на коллизии&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3rQ1&quot;&gt;После чего переходим на вкладку &lt;strong&gt;Отчёт&lt;/strong&gt;&lt;/p&gt;
  &lt;h3 id=&quot;KEJB&quot;&gt;Экспорт отчёта в XML&lt;/h3&gt;
  &lt;p id=&quot;Z5mX&quot;&gt;Перед экспортом отчёта, для упрощения в данном случае, в поле &lt;strong&gt;Содержимое &lt;/strong&gt;оставим выборку только у пункта &lt;strong&gt;&lt;em&gt;Сводка&lt;/em&gt; &lt;/strong&gt;и в поле &lt;em&gt;&lt;strong&gt;Включить эти статусы:&lt;/strong&gt;&lt;/em&gt; уберём всю выборку, нам нужна только общая информация о количестве коллизий в каждой проверки, без детализации. &lt;strong&gt;&lt;em&gt;Тип отчёта&lt;/em&gt;&lt;/strong&gt; — Все тесты (совм.); &lt;strong&gt;&lt;em&gt;Формат отчёта&lt;/em&gt;&lt;/strong&gt; — XML.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;FGun&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/ac/19/ac19d96c-49a2-4834-b6cc-e4374d3dd0f6.png&quot; width=&quot;811&quot; /&gt;
      &lt;figcaption&gt;Преднастройка экспорта Отчёта&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fmIJ&quot;&gt;В итоге получаем файл отчёта в &lt;strong&gt;.xml &lt;/strong&gt;формате.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;8af7&quot;&gt;Примечание: &lt;br /&gt;Для более подробной информации по работе с коллизиями, необходимо выбирать дополнительные пункты, в зависимости от нужных вам данных, которые планируете использовать в работе. Повторюсь, в примере они все убраны для упрощения, так как версионность проверок учитываться не будет.&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;ZpkX&quot;&gt;Структура XML отчёта&lt;/h3&gt;
  &lt;p id=&quot;FEze&quot;&gt;&lt;strong&gt;XML&lt;/strong&gt; (от англ. e&lt;strong&gt;X&lt;/strong&gt;tensible &lt;strong&gt;M&lt;/strong&gt;arkup &lt;strong&gt;L&lt;/strong&gt;anguage) — «расширяемый &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%82%D0%BA%D0%B8&quot; target=&quot;_blank&quot;&gt;язык разметки&lt;/a&gt;» и прежде чем идти дальше, необходимо изучить/освежить знания о структуре XML. Вкратце об XML можно почитать &lt;a href=&quot;https://xml.readthedocs.io/xml-intro.html&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;. Некоторая выдержка из источника:&lt;/p&gt;
  &lt;blockquote id=&quot;AsAo&quot;&gt;XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.&lt;br /&gt;&lt;br /&gt;Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов. &lt;br /&gt;&lt;br /&gt;Все элементы могут иметь подэлементы (дочерние элементы):&lt;/blockquote&gt;
  &lt;pre id=&quot;GSIG&quot; data-lang=&quot;xml&quot;&gt;&amp;lt;корневой&amp;gt;
   &amp;lt;потомок&amp;gt;
     &amp;lt;подпотомок&amp;gt;.....&amp;lt;/подпотомок&amp;gt;
   &amp;lt;/потомок&amp;gt;
&amp;lt;/корневой&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;k2Gt&quot;&gt;Похожую структуру мы увидим, если откроем наш отчёт в &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;VS Code&lt;/a&gt;, например, или &lt;a href=&quot;https://notepad-plus-plus.org/&quot; target=&quot;_blank&quot;&gt;Notepad++&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;CZK5&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/93/b2/93b2ce1e-2035-4baa-a121-9952b54a1dc6.png&quot; width=&quot;1201&quot; /&gt;
      &lt;figcaption&gt;XML отчёт матрицы коллизий из Navisworks в VS Code&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;DtuI&quot;&gt;Для дальнейшей работы с импортом и преобразованием в Power BI, нам достаточно обобщённо понимать эту иерархию и вложенность. По сути, в элементах &lt;code&gt;&amp;lt;clashtest&amp;gt;...&amp;lt;/clashtest&amp;gt;&lt;/code&gt; записаны наши проверки из Navisworks:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;gMzh&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/ce/5e/ce5ea410-a21f-4ccd-9497-51b985092d6a.png&quot; width=&quot;2560&quot; /&gt;
      &lt;figcaption&gt;Пример одной проверки. Сопоставление проверки из Navisworks в XML-отчёте&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Jz2n&quot;&gt;На иллюстрации выше показана одна из проверок и как она выглядит в XML-структуре с минимальным набором информации.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;OAuK&quot;&gt;Примечание:&lt;br /&gt;Поисковые наборы, о которых шла речь вначале, формируются по такому же принципу. Соответственно, создав &lt;strong&gt;поисковый набор&lt;/strong&gt;, вы можете экспортировать его в &lt;strong&gt;.xml&lt;/strong&gt; и посмотреть, как там устроено &lt;em&gt;под капотом&lt;/em&gt;, что-то поменять и импортировать обратно в Navisworks, получив новый набор. Отсюда вытекает, что формировать поисковые наборы (&lt;em&gt;особенно когда их много&lt;/em&gt;) можно и вне интерфейса Navisworks, но это уже тема для отдельной статьи.&lt;/p&gt;
  &lt;/section&gt;
  &lt;h2 id=&quot;9OpZ&quot;&gt;Формирование отчёта в Power BI&lt;/h2&gt;
  &lt;h3 id=&quot;ZgzI&quot;&gt;&lt;strong&gt;Связь с источником данных — импорт отчёта XML&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;rgUG&quot;&gt;Устанавливаем &lt;a href=&quot;https://powerbi.microsoft.com/desktop&quot; target=&quot;_blank&quot;&gt;Microsoft Power BI&lt;/a&gt;, если его нет и запускаем программу. Далее устанавливаем связь с источником данных или другими словами — импортируем, ранее подготовленный &lt;strong&gt;.xml&lt;/strong&gt; отчёт.&lt;/p&gt;
  &lt;p id=&quot;b3Gm&quot;&gt;Нажимаем на текст&lt;strong&gt; Получение данных из другого источника&lt;/strong&gt; и в выпадающем окне выбираем нужный формат — &lt;strong&gt;XML&lt;/strong&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;goRD&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/94/1d/941d400c-59e9-46ea-9858-6541b1376b8d.png&quot; width=&quot;1839&quot; /&gt;
      &lt;figcaption&gt;Первоначальный импорт .xml отчёта в Power BI&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ANgI&quot;&gt;Пройдёт процесс подключения к источнику и появится окно с таблицей, состоящей из нескольких ячеек. Тут нам уже важно понимать содержимое, так как судя по обратной связи из &lt;a href=&quot;https://dzen.ru/a/YqIFvz6GLCUihUdZ?share_to=link&quot; target=&quot;_blank&quot;&gt;первоначальной статьи&lt;/a&gt;, вопрос многих BIM-специалистов был в преобразовании таблицы и дальнейшая работа с ней.&lt;/p&gt;
  &lt;p id=&quot;vwiq&quot;&gt;Если мы вернёмся к &lt;strong&gt;.xml&lt;/strong&gt; отчёту в текстовом редакторе и сопоставим с появившейся таблицей, то заметим в ней верхнеуровневый элемент &lt;code&gt;&amp;lt;batchtest&amp;gt;&amp;lt;/batchtest&amp;gt;&lt;/code&gt; и некоторые атрибуты &lt;code&gt;units=&amp;quot;m&amp;quot; filename=&amp;quot;&amp;quot; filepath=&amp;quot;&amp;quot;&lt;/code&gt; из корневого элемента &lt;code&gt;&amp;lt;exchange&amp;gt;&amp;lt;/exchange&amp;gt;&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;zUIl&quot;&gt;Начальный фрагмент XML-структуры из &lt;strong&gt;.xml&lt;/strong&gt; отчёта:&lt;/p&gt;
  &lt;pre id=&quot;c4Ty&quot; data-lang=&quot;xml&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;

&amp;lt;exchange xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; units=&amp;quot;m&amp;quot; filename=&amp;quot;&amp;quot; filepath=&amp;quot;&amp;quot;&amp;gt;
  &amp;lt;batchtest name=&amp;quot;Report&amp;quot; internal_name=&amp;quot;Report&amp;quot; units=&amp;quot;m&amp;quot;&amp;gt;
    &amp;lt;clashtests&amp;gt;
      &amp;lt;clashtest name=&amp;quot;АИ1 Стены-АИ1 Стены&amp;quot; test_type=&amp;quot;hard&amp;quot; status=&amp;quot;ok&amp;quot; tolerance=&amp;quot;0.010&amp;quot; merge_composites=&amp;quot;0&amp;quot;&amp;gt;
        &amp;lt;linkage mode=&amp;quot;none&amp;quot;/&amp;gt;
        &amp;lt;left&amp;gt;
...&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;PtFb&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img4.teletype.in/files/fe/28/fe289efc-35a7-45bd-9172-5600eee44877.png&quot; width=&quot;1839&quot; /&gt;
      &lt;figcaption&gt;Первичное преобразование .xml в Power BI&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;LJkj&quot;&gt;Мы понимаем, что нужная информация лежит &lt;em&gt;внутри &lt;/em&gt;иерархии и её необходимо достать/преобразовать в нужный нам табличный вид для последующей работы с данными. Жмём &lt;strong&gt;Преобразовать данные&lt;/strong&gt;&lt;/p&gt;
  &lt;h3 id=&quot;X2Qe&quot;&gt;Настройка представления таблицы. Редактор Power Query&lt;/h3&gt;
  &lt;p id=&quot;jyjF&quot;&gt;Попадаем в &lt;a href=&quot;https://learn.microsoft.com/ru-ru/power-bi/transform-model/desktop-query-overview#power-query-editor&quot; target=&quot;_blank&quot;&gt;Редактор Power Query&lt;/a&gt; для последующего преобразования и подготовки данных.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nd6M&quot;&gt;Примечание:&lt;a href=&quot;https://learn.microsoft.com/ru-ru/power-query/power-query-what-is-power-query&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;Power Query&lt;/a&gt; — это модуль преобразования данных и подсистемы подготовки данных. Power Query поставляется с графическим интерфейсом для получения данных из источников и редактора Power Query для применения преобразований. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;w22n&quot;&gt;Теперь предстоит добраться до нужной информации и для этого мы &lt;em&gt;проваливаемся &lt;/em&gt;внутри структуры до нужного уровня вложенности. В столбце &lt;strong&gt;&lt;em&gt;batchtest &lt;/em&gt;&lt;/strong&gt;нажимаем на значение ячейки &lt;strong&gt;&lt;em&gt;Table&lt;/em&gt;&lt;/strong&gt;, потом&lt;strong&gt;&lt;em&gt; clashtests&lt;/em&gt;&lt;/strong&gt; — &lt;strong&gt;&lt;em&gt;Table&lt;/em&gt;&lt;/strong&gt; и т.д., как в примере:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;J1wv&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/58/fb/58fbc28c-48c0-4792-a1a7-cfda2964b311.gif&quot; width=&quot;1935&quot; /&gt;
      &lt;figcaption&gt;Проваливание внутри уровней&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;r7H0&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/1f/53/1f53a629-2933-4aab-a2ed-3136887bcab3.gif&quot; width=&quot;1009&quot; /&gt;
      &lt;figcaption&gt;Проваливание внутри уровней —  крупнее&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;F2lc&quot;&gt;Слева в поле &lt;strong&gt;Запросы &lt;/strong&gt;видны наши источники данных, а в поле &lt;strong&gt;Параметры запроса &lt;/strong&gt;вкладки &lt;strong&gt;Свойства &lt;/strong&gt;и &lt;strong&gt;Применённые шаги&lt;/strong&gt;, где мыможем откатиться назад (&lt;em&gt;на один или несколько уровней&lt;/em&gt;) либо всё сбросить и вернуться к первоначальному виду.&lt;/p&gt;
  &lt;p id=&quot;Psuf&quot;&gt;В новом табличном представлении уже видим столбцы &lt;strong&gt;Attribute:name&lt;/strong&gt; и &lt;strong&gt;Attribute:tolerance &lt;/strong&gt;со знакомыми названиями проверок на коллизии и их допусками, которые изначально формировали в Navisworks.&lt;/p&gt;
  &lt;p id=&quot;Ihbr&quot;&gt;Далее, нужно извлечь из столбца &lt;strong&gt;summary &lt;/strong&gt;вложенные значения с количеством найденных коллизий, а именно &lt;strong&gt;Attribute:total&lt;/strong&gt; и изменить тип значений на &lt;strong&gt;Целое число&lt;/strong&gt;, нажав &lt;em&gt;ПКМ &lt;/em&gt;по заголовку столбца:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;Aup7&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/43/1e/431e50c3-6b4b-42ec-a207-11a28ad89298.gif&quot; width=&quot;1935&quot; /&gt;
      &lt;figcaption&gt;Извлечение значений Attribute:total из summary&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;qJSh&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img4.teletype.in/files/77/c4/77c428b2-61d1-45ef-94e2-d43926ad9e24.gif&quot; width=&quot;919&quot; /&gt;
      &lt;figcaption&gt;Извлечение значений Attribute:total из summary — крупнее&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dd7J&quot;&gt;Примечание:&lt;br /&gt;В дальнейшем, если вы планируете &lt;em&gt;поставить на рельсы&lt;/em&gt; процесс сбора проверок на коллизии, отслеживать изменения и статусы и выводить эти отчёты в Power BI, то процедура преобразования будет немного другая, потому нужны будут и другие статусы — &lt;em&gt;&lt;strong&gt;new&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;active&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;reviewed &lt;/strong&gt;&lt;/em&gt;и т.д.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;mAxm&quot;&gt;Также следует &lt;em&gt;разбить &lt;/em&gt;столбец &lt;strong&gt;Attribute:name&lt;/strong&gt; на два, тем самым разделив левую часть проверки (&lt;em&gt;А&lt;/em&gt;) и правую (&lt;em&gt;B&lt;/em&gt;). Для последующего представления в матрице:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;unnv&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/67/da/67da6b11-6083-4bbe-b90b-103d89bfbe67.jpeg&quot; width=&quot;750&quot; /&gt;
      &lt;figcaption&gt;Иллюстрация матрицы&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;IZKw&quot;&gt;Для этого, в интерфейсе Редактора Power Query есть функция &lt;strong&gt;Разделить столбец&lt;/strong&gt;. Поскольку в наименованиях моих проверок есть понятный разделить в виде символа - д&lt;em&gt;ефис&lt;/em&gt;, то делить, я буду по нему (&lt;em&gt;у вас может быть другой&lt;/em&gt;).&lt;/p&gt;
  &lt;p id=&quot;ycRq&quot;&gt;Выделяем нужный столбец, кликнув на заголовок: &lt;strong&gt;Разделить столбец&lt;/strong&gt; — &lt;strong&gt;по разделителю&lt;/strong&gt; — выбираем знак в выпадающем списке, либо &lt;em&gt;&lt;strong&gt;Пользовательский&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;aTE2&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img4.teletype.in/files/37/69/37698edb-894f-43f2-a82d-fa1b51f8c877.png&quot; width=&quot;1681&quot; /&gt;
      &lt;figcaption&gt;Деление столбца по разделителю&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;MoJ3&quot;&gt;В результате получится два столбца — &lt;em&gt;левая(А) &lt;/em&gt;и &lt;em&gt;правая(B)&lt;/em&gt; проверки. &lt;strong&gt;Attribute:name.1&lt;/strong&gt; и &lt;strong&gt;Attribute:name.2&lt;/strong&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;oqe7&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/00/0c/000c1364-ed35-46a9-a7d3-9b64efaea7e9.png&quot; width=&quot;1394&quot; /&gt;
      &lt;figcaption&gt;Результат деления столбца Attribute:name&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ZZA3&quot;&gt;Жмём &lt;strong&gt;Закрыть и применить&lt;/strong&gt; в верхнем левом углу и переходим к последнему шагу в части подготовки данных — группировка всех проверок в соответствующие разделы проектной документации: АР, КР, ОВ и т.д., чтобы выводить общие показатели по ним. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;PfXk&quot;&gt;Примечание:&lt;br /&gt;Если вы формируете проверки в Navisworks по принципу &amp;quot;&lt;em&gt;модель на модель&lt;/em&gt;&amp;quot; или &amp;quot;&lt;em&gt;раздел на раздел&lt;/em&gt;&amp;quot;, а не разделяете их более подробно на наборы как в примере статьи, то следующий шаг по группировкам для вас может быть не актуален.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;m2ae&quot;&gt;После того, как вышли из режима редактирования запроса, попадаем в главную рабочую область Power BI, которую рассмотрим чуть позже. В левой части окна есть три иконки: &lt;strong&gt;Представление отчёта&lt;/strong&gt; (&lt;em&gt;область в который мы находимся сейчас&lt;/em&gt;), &lt;strong&gt;Представление таблицы&lt;/strong&gt; и &lt;strong&gt;Представление модели&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;KtSe&quot;&gt;Выбираем &lt;strong&gt;Представление таблицы&lt;/strong&gt; и видим знакомую нам табличку, но уже без верхнеуровневых столбцов, в которые можно &lt;em&gt;провалиться&lt;/em&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;lz0K&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img4.teletype.in/files/76/91/76915da0-7d51-4417-9be7-6db63e9a54c8.gif&quot; width=&quot;1151&quot; /&gt;
      &lt;figcaption&gt;Вкладка &lt;strong&gt;Представление таблиц&lt;/strong&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;V3hD&quot;&gt;Выделяем первый столбец с заголовком &lt;strong&gt;Attribute:name.1&lt;/strong&gt; и группируем его, нажимая на инструмент &lt;strong&gt;Группы данных&lt;/strong&gt; — &lt;strong&gt;Создать группы данных&lt;/strong&gt;. Тут немного ручной работы, но довольно быстрой и понятной. В окне &lt;strong&gt;Группы&lt;/strong&gt; в левой колонке находятся &lt;strong&gt;Несгруппированные значения&lt;/strong&gt;, которые необходимо сгруппировать, переместив в правую колонку и задав логическое имя группе. Алгоритм действий прост — выделяем через &lt;em&gt;SHIFT&lt;/em&gt; все нужные наборы (&lt;em&gt;идентифицируя по префиксу в данном случае АИ.., АР.., ВК.., и т.д.&lt;/em&gt;) жмём &lt;strong&gt;Группировать&lt;/strong&gt;, два раза кликаем &lt;em&gt;ЛКМ &lt;/em&gt;на сформированный заголовок группы, чтобы сразу переименовать в понятный раздел.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;wQxI&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/58/4a/584ab1f4-30b5-49d2-bddf-48b4ef94c228.gif&quot; width=&quot;1507&quot; /&gt;
      &lt;figcaption&gt;Группировка данных&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Vjkj&quot;&gt;Соответственно, таким же образом поступаем и со вторым столбцом &lt;strong&gt;Attribute:name.2.&lt;/strong&gt; На выходе должны сформироваться два дополнительных столбца с постфиксом &lt;strong&gt;&lt;em&gt;(группы)&lt;/em&gt;&lt;/strong&gt; в конце таблицы.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;21qt&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/d5/b5/d5b58d70-ab77-4dc1-87be-84a3ee5d4d70.png&quot; width=&quot;1864&quot; /&gt;
      &lt;figcaption&gt;Результат группировки в виде дополнительных столбцов&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;c385&quot;&gt;Именно этими значениями в дальнейшем мы будем оперировать и выводить на финальный отчёт в матрице коллизий. &lt;/p&gt;
  &lt;p id=&quot;y6iT&quot;&gt;Переходим обратно в основную рабочую область — &lt;strong&gt;Представление отчёта&lt;/strong&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;kUqI&quot;&gt;Рабочая область Power BI и подготовка отчёта&lt;/h3&gt;
  &lt;p id=&quot;BEwu&quot;&gt;Вкратце опишу основные области, с которыми будем работать:&lt;/p&gt;
  &lt;ol id=&quot;sjXG&quot;&gt;
    &lt;li id=&quot;CmOw&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ru-ru/power-bi/create-reports/desktop-report-view&quot; target=&quot;_blank&quot;&gt;Представление отчёта&lt;/a&gt; или рабочая область с отчётами, уже знакомая вкладка — именно тут мы размещаем и компонуем наши графики, чарты и т.д., вследствие чего формируем финальные &lt;a href=&quot;https://learn.microsoft.com/en-us/power-bi/create-reports/service-dashboards&quot; target=&quot;_blank&quot;&gt;Дашборды&lt;/a&gt;.&lt;/li&gt;
    &lt;li id=&quot;G0i4&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/ru-ru/power-bi/visuals/power-bi-report-visualizations&quot; target=&quot;_blank&quot;&gt;Визуализация&lt;/a&gt; — поле с преднастройками по типам отчётов, последующая визуальная постобработка и всё, что с этим связано.&lt;/li&gt;
    &lt;li id=&quot;saB6&quot;&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-field-list&quot; target=&quot;_blank&quot;&gt;Данные&lt;/a&gt; — поле с источниками данных, в нашем случае преобразованная таблица с вложенным списком, по сути, столбцы.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;5Cpn&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img4.teletype.in/files/f5/78/f578829e-ee9c-4d8f-8179-e265f2c0a55e.png&quot; width=&quot;1903&quot; /&gt;
      &lt;figcaption&gt;Основные области для работы в Power BI&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Vtnn&quot;&gt;Теперь из области &lt;strong&gt;Данные&lt;/strong&gt; выбираем нужные пункты (&lt;em&gt;столбцы с данными&lt;/em&gt;) и уже видим, как формируется простая таблица. Далее выбираем визуальный элемент&lt;em&gt; — &lt;strong&gt;Матрица &lt;/strong&gt;&lt;/em&gt;в поле &lt;strong&gt;Визуализации&lt;/strong&gt; и получаем уже нужную нам матрицу коллизий. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;LAl8&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/86/83/8683b0a7-1614-4462-809f-31ed8c861bec.gif&quot; width=&quot;1903&quot; /&gt;
      &lt;figcaption&gt;Формирование отчёта&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;UgL1&quot;&gt;Сразу можно ещё скорректировать ячейку в верхнем левом углу. Сейчас там &lt;strong&gt;Attribute:name.1 (группы)&lt;/strong&gt;, а мы хотим написать &amp;quot;Раздел&amp;quot;, для обозначения аббревиатур в заголовках вертикальной и горизонтальной линиях. Для этого в поле &lt;strong&gt;Визуализации &lt;/strong&gt;под заголовком &lt;strong&gt;&lt;em&gt;Строки &lt;/em&gt;&lt;/strong&gt;наводим на плашку с именем &lt;strong&gt;Attribute:name.1 (группы)&lt;/strong&gt; в область стрелки и в выпадающем списке выбираем &lt;strong&gt;&amp;quot;&lt;/strong&gt;&lt;em&gt;Переименовать для этого визуального элемента&lt;/em&gt;&amp;quot;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;8Icp&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/53/06/5306df86-c771-49fe-8b8b-0811d5be599f.gif&quot; width=&quot;1902&quot; /&gt;
      &lt;figcaption&gt;Переименование столбца со значениями&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ZoLa&quot;&gt;Осталось только поработать над визуальной частью и дополнительно, как вариант, добавить отчёт с установленными допусками проверок на коллизии между разделами.&lt;/p&gt;
  &lt;h3 id=&quot;46of&quot;&gt;Финальная настройка визуально-интерактивной матрицы коллизий&lt;/h3&gt;
  &lt;p id=&quot;yifT&quot;&gt;Выделяем отчёт и переходим на появившуюся вкладку &lt;strong&gt;Форматирование визуального элемента&lt;/strong&gt; в поле &lt;strong&gt;Визуализации&lt;/strong&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;XGFx&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/a4/a5/a4a5a960-7f98-4c8e-ab10-fa31dd886294.gif&quot; width=&quot;1510&quot; /&gt;
      &lt;figcaption&gt;Вкладка &lt;em&gt;— &lt;/em&gt;Форматирование визуального элемента&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;o407&quot;&gt;Детально рассматривать все настройки не буду, покажу несколько, в качестве примера, чтобы получить более менее приемлемый вид. &lt;/p&gt;
  &lt;ul id=&quot;NY0T&quot;&gt;
    &lt;li id=&quot;8CpL&quot;&gt;Предустановка стилей &lt;em&gt;—&lt;/em&gt; минимальный,&lt;/li&gt;
    &lt;li id=&quot;Ec4j&quot;&gt;Можно добавить горизонтальные и вертикальные сетки и вывести их в белый цвет,&lt;/li&gt;
    &lt;li id=&quot;I0rj&quot;&gt;Отцентрируем заголовки и значения в ячейках,&lt;/li&gt;
    &lt;li id=&quot;gwxw&quot;&gt;Добавим цвет фона у ячеек со значениями,&lt;/li&gt;
    &lt;li id=&quot;Yopk&quot;&gt;Немного увеличить строки в размере&lt;/li&gt;
    &lt;li id=&quot;9NjB&quot;&gt;Выведем &lt;strong&gt;Подсказки &lt;/strong&gt;во второй вкладке &lt;strong&gt;Общий&lt;/strong&gt;, чтобы при наведении на любую ячейку всплывало окошко с дополнительной информацией,&lt;/li&gt;
    &lt;li id=&quot;xOLN&quot;&gt;Добавить название таблицы с сопутствующими настройками,&lt;/li&gt;
    &lt;li id=&quot;Zsva&quot;&gt;И так далее по вкусу.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;P1yv&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/8b/31/8b31080f-f090-4eda-9788-4a5906120c44.gif&quot; width=&quot;1647&quot; /&gt;
      &lt;figcaption&gt;Настройки по визуальной части в качестве примера&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;I5DP&quot;&gt;Отдельно следует выделить плашку под названием &lt;strong&gt;Элементы ячейки&lt;/strong&gt;, где имеет смысл применить параметры к цвету фона и закрашивать ячейки в зависимости от их значений. Тем самым визуально, сразу становится понятен проблемный и критический пул коллизий по количеству, касательно разделов.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;Mnbo&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/e1/d7/e1d73b49-4d68-4ac0-b52a-baa3113fe38a.gif&quot; width=&quot;1647&quot; /&gt;
      &lt;figcaption&gt;Применение параметров к элементам ячейки&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;aDaS&quot;&gt;Разобраться с настройками визуальной части не составит большого труда, учитывая, что инструментарий тут достаточно топорный и не так много возможностей настройки стандартных визуальных элементов. Либо я не знаю многих нюансов и приёмов в прикладном плане, что больше походит на правду.&lt;/p&gt;
  &lt;p id=&quot;XkPn&quot;&gt;По итогу, после ряда манипуляций получаем подобный результат:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;7mYo&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/47/76/47763c96-7100-4e6e-b11d-d072dc2306f3.png&quot; width=&quot;722&quot; /&gt;
      &lt;figcaption&gt;Один из возможных примеров матрицы коллизий в PowerBI&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;jvD0&quot;&gt;Таблицы интерактивные и мы можем взаимодействовать со строками, столбцами и ячейками, фокусируясь на них.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;tym0&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/52/9e/529ec6b3-d5ec-4de1-8da4-5d7cb5e92a05.gif&quot; width=&quot;740&quot; /&gt;
      &lt;figcaption&gt;Интерактивность таблицы и фокусировка&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;8c6n&quot;&gt;Примечание:&lt;br /&gt;В финальной таблице добавил недостающую проверку ЭОМ - ЭОМ и убрал нули, через применение параметров к цвету шрифта в области&lt;strong&gt; Элементы ячейки&lt;/strong&gt;, вкладки &lt;strong&gt;Визуальный элемент&lt;/strong&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Rh5j&quot;&gt;Для обновления данных перезаписываем отчёт &lt;strong&gt;.xml&lt;/strong&gt; из Navisworks и обновляем в Power BI: вкладка &lt;strong&gt;Главная &lt;/strong&gt;— поле &lt;strong&gt;Запросы &lt;/strong&gt;— кнопка &lt;strong&gt;Обновить&lt;/strong&gt;, таблица скорректируется, если были изменения.&lt;/p&gt;
  &lt;h2 id=&quot;vt4i&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;gIHh&quot;&gt;В статье рассмотрен относительно упрощённый пример формирования матрицы коллизий в &lt;strong&gt;Power BI&lt;/strong&gt;. Если подключить дополнительные атрибуты при экспорте отчёта в &lt;strong&gt;XML &lt;/strong&gt;из &lt;strong&gt;Navisworks&lt;/strong&gt;, то можно пойти дальше и вести временную шкалу проверок, получать метрики по исправленным и добавленным коллизиям и т.д., но основная цель статьи — более подробно раскрыть процесс импорта и преобразования &lt;strong&gt;XML &lt;/strong&gt;данных в &lt;strong&gt;Power BI&lt;/strong&gt; для BIM-специалистов. Если остались вопросы — пишите.&lt;/p&gt;
  &lt;p id=&quot;ulbN&quot;&gt;Спасибо за внимание.&lt;/p&gt;

</content></entry><entry><id>esteselkin:ifc-js</id><link rel="alternate" type="text/html" href="https://teletype.in/@esteselkin/ifc-js?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=esteselkin"></link><title>Создаём с нуля своё BIM-приложение для просмотра моделей IFC формата в браузере на основе open-source библиотеки IFC.js</title><published>2023-09-04T15:31:42.800Z</published><updated>2023-11-01T14:21:29.264Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/89/e3/89e34b6b-11db-4c22-bb6b-498f8a540ba2.png"></media:thumbnail><category term="bim-services" label="BIM Services"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c9/44/c944ba86-2fe8-4e0e-a9a9-111c22d1a387.png&quot;&gt;Приложение, о котором пойдёт речь, применимо в архитектурно-строительной области. С развитием информационных технологий, технологий строительства и производства, а также экономической составляющей, появилась необходимость в более эффективном и комплексном подходах в управлении инвестиционно-строительными проектами, что поспособствовало появлению и формированию ТИМ BIM-технологии.</summary><content type="html">
  &lt;h2 id=&quot;q9t3&quot;&gt;Введение&lt;/h2&gt;
  &lt;p id=&quot;fLON&quot;&gt;Приложение, о котором пойдёт речь, применимо в архитектурно-строительной области. С развитием информационных технологий, технологий строительства и производства, а также экономической составляющей, появилась необходимость в более эффективном и комплексном подходах в управлении инвестиционно-строительными проектами, что поспособствовало появлению и формированию &lt;s&gt;ТИМ&lt;/s&gt; &lt;a href=&quot;https://ru.wikipedia.org/wiki/BIM#:~:text=BIM%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%B8%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85%20%D1%85%D0%B0%D1%80%D0%B0%D0%BA%D1%82%D0%B5%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%20%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0.&quot; target=&quot;_blank&quot;&gt;BIM-технологии&lt;/a&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;ul id=&quot;fReO&quot;&gt;
      &lt;li id=&quot;4B0W&quot;&gt;&lt;strong&gt;BIM&lt;/strong&gt; (&lt;em&gt;англ. Building Information Model или Информационное моделирование строительных объектов&lt;/em&gt;) — это объектно-ориентированная модель строительного объекта, как правило, в трёхмерном представлении, элементы которой содержат данные геометрических, физических и функциональных характеристик будущего здания или сооружения.&lt;/li&gt;
      &lt;li id=&quot;z0lU&quot;&gt;&lt;strong&gt;BIM-технология &lt;/strong&gt;— организованный процесс, в результате которого формируется BIM-модель, отвечающая задачам и потребностям конкретной стадии жизненного цикла здания или сооружения.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Y9K4&quot;&gt;Основным популяризатором и разработчиком программ в области BIM, принято считать компанию &lt;a href=&quot;https://www.autodesk.com/&quot; target=&quot;_blank&quot;&gt;Autodesk &lt;/a&gt;с их приложениями для &lt;strong&gt;AEC &lt;/strong&gt;(&lt;em&gt;Architecture, Engineering, and Construction&lt;/em&gt;) индустрии — &lt;a href=&quot;https://www.autodesk.com/products/revit&quot; target=&quot;_blank&quot;&gt;Revit&lt;/a&gt;, &lt;a href=&quot;https://www.autodesk.com/products/navisworks&quot; target=&quot;_blank&quot;&gt;Navisworks&lt;/a&gt;, &lt;a href=&quot;https://construction.autodesk.com/&quot; target=&quot;_blank&quot;&gt;ACC &lt;/a&gt;(&lt;em&gt;Autodesk Construction Cloud, ex-&lt;strong&gt;BIM360&lt;/strong&gt;&lt;/em&gt;) и др., но в последнее время, активно набирает обороты &lt;a href=&quot;https://isicad.ru/ru/articles.php?article_num=21381&quot; target=&quot;_blank&quot;&gt;недовольство пользователей продуктов Autodesk&lt;/a&gt;, аргументируя это стагнацией в части разработки нового полезного функционала и недоработки существующего, при этом явным повышением цен на программное обеспечение. Ещё одной проблемой, является замкнутая экосистема Autodesk и их закрытый формат данных (&lt;em&gt;Closed BIM&lt;/em&gt;), работая с которым, ты ограничен в действиях и вынужден оставаться в контуре Autodesk. На примере Revit и &lt;a href=&quot;https://aps.autodesk.com/&quot; target=&quot;_blank&quot;&gt;Autodesk Platform Services&lt;/a&gt;, ex-&lt;strong&gt;Forge&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;lbZW&quot;&gt;По мере развития BIM-технологии и нежеланием быть зависимым от больших корпораций, свою популярность приобрела концепция &lt;a href=&quot;https://www.buildingsmart.org/about/openbim/&quot; target=&quot;_blank&quot;&gt;OpenBIM&lt;/a&gt; и сопутствующий ей &lt;a href=&quot;https://ru.wikipedia.org/wiki/Industry_Foundation_Classes&quot; target=&quot;_blank&quot;&gt;IFC&lt;/a&gt; формат.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;ul id=&quot;TKA8&quot;&gt;
      &lt;li id=&quot;0UvW&quot;&gt;&lt;strong&gt;Open BIM&lt;/strong&gt; — подход к объединению проектов зданий и сооружений в согласованную модель. Методология, позволяющая участникам проектирования коммуницировать, невзирая на используемое программное обеспечение.&lt;/li&gt;
      &lt;li id=&quot;xvGM&quot;&gt;&lt;strong&gt;IFC&lt;/strong&gt; (&lt;em&gt;Industry Foundation Classes&lt;/em&gt;) — открытый стандарт для формата представления данных BIM. Формат файлов разработан &lt;a href=&quot;https://www.buildingsmart.org/&quot; target=&quot;_blank&quot;&gt;buildingSMART &lt;/a&gt;&lt;em&gt;(International Alliance for Interoperability, IAI&lt;/em&gt;) для упрощения взаимодействия в строительной сфере и приведению к &lt;em&gt;общему знаменателю&lt;/em&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;g92J&quot;&gt;С тенденцией перехода сервисов в облачные решения, начали появляться &lt;a href=&quot;https://en.wikipedia.org/wiki/Open_source#:~:text=Open%20source%20is%20source%20code,model%20that%20encourages%20open%20collaboration.&quot; target=&quot;_blank&quot;&gt;open-source&lt;/a&gt; библиотеки или бесплатные программы по работе с BIM-моделями в web, такие, как &lt;a href=&quot;https://xeokit.io/&quot; target=&quot;_blank&quot;&gt;xeokit&lt;/a&gt;, &lt;a href=&quot;https://ifcquery.com/&quot; target=&quot;_blank&quot;&gt;IFC++&lt;/a&gt;, &lt;a href=&quot;http://ifcopenshell.org/&quot; target=&quot;_blank&quot;&gt;IfcOpenShell&lt;/a&gt; и др., а соответственно и BIM-стартапы, преследующие цели &lt;strong&gt;OpenBIM &lt;/strong&gt;или закрывающие конкретные задачи. Одну из таких библиотек мы и рассмотрим, развернув на её основе простое BIM-решение для просмотра модели IFC формата.&lt;/p&gt;
  &lt;h2 id=&quot;a9P5&quot;&gt;Библиотека IFC.js&lt;/h2&gt;
  &lt;p id=&quot;Wlm5&quot;&gt;&lt;a href=&quot;https://ifcjs.github.io/info/&quot; target=&quot;_blank&quot;&gt;IFC.js&lt;/a&gt; — это библиотека JavaScript для работы с моделями IFC в браузере. Она полностью бесплатная и распространяется по свободной лицензии MIT.&lt;/p&gt;
  &lt;figure id=&quot;qDKn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c9/44/c944ba86-2fe8-4e0e-a9a9-111c22d1a387.png&quot; width=&quot;933&quot; /&gt;
    &lt;figcaption&gt;IFC.js&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xmWt&quot;&gt;Идейным создателем и одним из разработчиков библиотеки &lt;strong&gt;IFC.js&lt;/strong&gt;, является &lt;a href=&quot;https://es.linkedin.com/in/antonio-gonz%C3%A1lez-viegas-8b2326151&quot; target=&quot;_blank&quot;&gt;Antonio González Viegas&lt;/a&gt; — BIM software developer. И в качестве предпосылки для создания этого open-source решения и его описания, приведу вольный перевод с его слов:&lt;/p&gt;
  &lt;blockquote id=&quot;HN1l&quot;&gt;Сектор &lt;strong&gt;AEC&lt;/strong&gt; традиционно был рынком нескольких богатых ресурсами игроков. Крупные компании годами создавали свои собственные продукты: миллионы строк кода, решающие проблемы и в конечном итоге составляют приложения для реализации BIM и которые мы знаем из повседневной жизни.&lt;br /&gt;&lt;br /&gt;Проблема в этой ситуации заключается в том, что новым разработчикам и компаниям очень трудно предлагать свои идеи и конкурировать на равных условиях на этом рынке. И получается, что доступ к &amp;quot;высшей лиге&amp;quot; имеют те, кто может себе это позволить.&lt;br /&gt;&lt;br /&gt;Это не относится к таким секторам, как видеоигры, где существует множество инструментов и технологий (&lt;em&gt;видеоигровых движков&lt;/em&gt;), которые позволяют любому создать продукт высокого уровня с минимальными затратами времени и ресурсов. Было бы здорово иметь то же самое в секторе &lt;strong&gt;AEC&lt;/strong&gt;?&lt;br /&gt;&lt;br /&gt;Вот почему мы запустили &lt;strong&gt;IFC.js&lt;/strong&gt;. Вместо того чтобы создавать решение для реализации технологии BIM и продавать его как продукт, мы делаем его свободно доступным, чтобы каждый мог создавать свои собственные BIM-продукты высокого уровня. Таким образом, мы все можем конкурировать на рынке программного обеспечения с одним и тем же инструментом, где каждый может предложить свои идеи по улучшению. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IFC.js&lt;/strong&gt; — молодой проект, который развивается и растет с каждым днем. Наша цель — позволить каждому разрабатывать программное обеспечение BIM с такой же легкостью, с какой разрабатываются видеоигры. &lt;strong&gt;IFC.js&lt;/strong&gt; бесплатен, у него нет владельца, и любой может использовать его или участвовать в проекте.&lt;/blockquote&gt;
  &lt;p id=&quot;yHQF&quot;&gt;Как вы уже возможно поняли, преследуется концепция &lt;strong&gt;Open BIM&lt;/strong&gt;, противопоставляя решение тяжеловесным и закрытым проприетарным программам. &lt;strong&gt;IFC.js&lt;/strong&gt; даёт возможность BIM-специалистам или разработчикам из других сфер создавать свои &lt;strong&gt;собственные BIM-решения&lt;/strong&gt;, решающие их бизнес-задачи внутри компаний или же создавать свои коммерческие BIM-стартапы. В этом плане, лицензия &lt;strong&gt;IFC.js&lt;/strong&gt; даёт полную свободу действий. Библиотека предназначена для всех, кто хочет разрабатывать BIM-приложения, будь то разработчики, создающие сервисы для строительной отрасли, так и архитекторы совместно с другими специалистами.&lt;/p&gt;
  &lt;h3 id=&quot;gA0b&quot;&gt;Структура IFC.js&lt;/h3&gt;
  &lt;p id=&quot;xVfo&quot;&gt;В связи с тем, что &lt;strong&gt;IFC.js&lt;/strong&gt; большая, мульти-язычная библиотека (&lt;em&gt;C++, TypeScript JavaScript и т.д.&lt;/em&gt;) и держать её в одном репозитории было бы сложно и громоздко, её разбили на три основные части:&lt;/p&gt;
  &lt;ul id=&quot;V6JB&quot;&gt;
    &lt;li id=&quot;djGq&quot;&gt;&lt;a href=&quot;https://github.com/IFCjs/web-ifc&quot; target=&quot;_blank&quot;&gt;web-ifc&lt;/a&gt; — ядро библиотеки: IFC парсер, написанный с нуля на языке C и скомпилирован через &lt;a href=&quot;https://emscripten.org/&quot; target=&quot;_blank&quot;&gt;Emscripten &lt;/a&gt;в &lt;a href=&quot;https://webassembly.org/&quot; target=&quot;_blank&quot;&gt;WebAssembly&lt;/a&gt;. Этот репозиторий инкапсулирует сложность чтения файлов IFC и загрузки их данных в память. &lt;a href=&quot;http://xn--%20-%20https-rck4byd4brd//ifcjs.github.io/web-ifc/demo/&quot; target=&quot;_blank&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;DD69&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b6/fb/b6fbb54d-2b06-4161-ad53-e3ac33c7725a.png&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;web-ifc&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;gVR7&quot;&gt;
    &lt;li id=&quot;yPey&quot;&gt;&lt;a href=&quot;https://github.com/IFCjs/web-ifc-three&quot; target=&quot;_blank&quot;&gt;web-ifc-three&lt;/a&gt; — эта библиотека адаптирует web-ifc к &lt;a href=&quot;https://threejs.org&quot; target=&quot;_blank&quot;&gt;Three.js&lt;/a&gt;, создавая оптимизированную 3D-сцену, в которой пользователи могут напрямую взаимодействовать с IFC. Эта библиотека является официальным IFC загрузчиком в Three.js. Благодаря этому, приложения BIM можно создавать с помощью Three.js всего за пару строк кода. &lt;a href=&quot;https://ifcjs.github.io/web-ifc-three/example/&quot; target=&quot;_blank&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;m8LG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2c/a7/2ca7f347-6dbc-490d-81d0-83353e9e1173.gif&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;web-ifc-three&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;Oq4o&quot;&gt;
    &lt;li id=&quot;1m5I&quot;&gt;&lt;a href=&quot;https://github.com/IFCjs/web-ifc-viewer&quot; target=&quot;_blank&quot;&gt;web-ifc-viewer&lt;/a&gt; — это решение для просмотра IFC в браузере со множеством примеров того, что можно сделать с помощью &lt;strong&gt;IFC.js&lt;/strong&gt;. Навигация по сценам, изменение материалов, выбор элементов по нажатию на них, планы разрезов и т. д. В этом &lt;a href=&quot;https://github.com/IFCjs/web-ifc-viewer&quot; target=&quot;_blank&quot;&gt;репозитории&lt;/a&gt; есть пример всех этих функций, поэтому его можно повторно использовать в открытых приложениях BIM из коробки. &lt;a href=&quot;https://ifcjs.github.io/web-ifc-viewer/example/index&quot; target=&quot;_blank&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;0ezT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/7b/d87bf71f-69a5-40fd-92b9-2d6f79e24e66.gif&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;web-ifc-viewer&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nHsy&quot;&gt;Каждая последующая часть зависит от предыдущей, в такой последовательности: &lt;strong&gt;web-ifc&lt;/strong&gt; — &lt;strong&gt;web-ifc-three&lt;/strong&gt; — &lt;strong&gt;web-ifc-viewer&lt;/strong&gt;&lt;/p&gt;
  &lt;h3 id=&quot;obychenie&quot;&gt;Обучение&lt;/h3&gt;
  &lt;p id=&quot;wfxs&quot;&gt;На данный момент, проводятся два курса &lt;a href=&quot;https://courses.ifcjs.io/?_gl=1*8cx4fx*_ga*MzU1NTM0Mjk3LjE2ODUwOTY5MTY.*_ga_8KJ1XPV561*MTY5MTE1NjA1MC40LjEuMTY5MTE1NjA1OC4wLjAuMA..&quot; target=&quot;_blank&quot;&gt;IFC.js crash course и Advanced BIM frontend course&lt;/a&gt; по работе с их библиотекой в web. Курс &lt;a href=&quot;https://opencollective.com/ifcjs/projects/ifcjs-crash-course/contribute/crash-course-44166&quot; target=&quot;_blank&quot;&gt;IFC.js crach cource&lt;/a&gt;, как заявляет создатель, подходит для начального уровня и обучение ведётся с нуля, но под конец, как по мне, без хорошей базы в программировании будет тяжеловато.&lt;/p&gt;
  &lt;h3 id=&quot;programma_podderjki&quot;&gt;Программа поддержки&lt;/h3&gt;
  &lt;p id=&quot;chfX&quot;&gt;В целях ускорения разработки проекта, а так же его улучшения — команда &lt;strong&gt;IFC.js &lt;/strong&gt;реализовала &lt;a href=&quot;https://bounties.ifcjs.io/&quot; target=&quot;_blank&quot;&gt;программу поддержки&lt;/a&gt;, где даёт возможность заработать сообществу, принося свой вклад в проект. Если вкратце, то формируются &lt;a href=&quot;https://airtable.com/embed/shrD7oOspTUpElFX9/tblKwrKdBmdTG2L3I?backgroundColor=orange&amp;viewControls=on&quot; target=&quot;_blank&quot;&gt;карточки с разного рода заданиями&lt;/a&gt;, например исправление бага или реализации инструментов, таких как проверка на коллизии, формирование планов, разрезов и т.д.&lt;/p&gt;
  &lt;h2 id=&quot;6vDq&quot;&gt;Разработка BIM-сервиса для просмотра IFC формата&lt;/h2&gt;
  &lt;p id=&quot;tHBK&quot;&gt;Создание BIM-приложения с &lt;strong&gt;IFC.js&lt;/strong&gt; довольно простое, как указано на сайте с &lt;a href=&quot;https://ifcjs.github.io/info/docs/Hello%20world&quot; target=&quot;_blank&quot;&gt;документацией&lt;/a&gt;. Последующий урок взят оттуда в качестве вольного перевода, с некоторыми сокращениями, отклонениями и комментариями. Развёрнутое демо-приложение находиться &lt;a href=&quot;https://ifcjs.github.io/hello-world/examples/web-ifc-three/helloworld/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;. Для выполнения следующих шагов необходим &lt;a href=&quot;https://nodejs.org/ru&quot; target=&quot;_blank&quot;&gt;Node.js&lt;/a&gt; и любая &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8&quot; target=&quot;_blank&quot;&gt;IDE&lt;/a&gt;, но в статье я буду использовать &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;VS Code&lt;/a&gt; в качестве среды разработки и расширение &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server&quot; target=&quot;_blank&quot;&gt;Live Preview&lt;/a&gt; в части локального сервера, не разворачивая Node.js. И если у вас нет файлов IFC, вы можете их скачать &lt;a href=&quot;https://github.com/IFCjs/test-ifc-files&quot; target=&quot;_blank&quot;&gt;отсюда&lt;/a&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;lLhT&quot;&gt;Для работы с IFC.js требуются базовые знания веб-разработки (&lt;em&gt;HTML, CSS, JavaScript&lt;/em&gt;) и библиотеки Three.js&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;Sx4Y&quot;&gt;Установка библиотек&lt;/h3&gt;
  &lt;p id=&quot;FjVm&quot;&gt;Вначале, создаём пустую папку и запускаем менеджер пакетов&lt;strong&gt; &lt;a href=&quot;https://www.npmjs.com/&quot; target=&quot;_blank&quot;&gt;npm&lt;/a&gt; &lt;/strong&gt;с помощью команды &lt;code&gt;npm init&lt;/code&gt;. Будет создан файл &lt;code&gt;package.json&lt;/code&gt;, содержащий некоторые данные, такие как имя проекта, версия, описание, команды и зависимости. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;QxPP&quot;&gt;Все вышеперечисленные свойства можно сразу заполнить, либо прожав &lt;code&gt;Enter&lt;/code&gt; и использовать значения по умолчанию.&lt;/p&gt;
    &lt;figure id=&quot;JLPz&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/de/66/de66ad79-b2a3-4793-aca6-3bb445541a43.gif&quot; width=&quot;1280&quot; /&gt;
      &lt;figcaption&gt;Инициализация проекта&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;J2aA&quot;&gt;Кроме того, при помощи &lt;strong&gt;npm &lt;/strong&gt;необходимо установить следующие зависимости: модуль &lt;strong&gt;web-ifc-three&lt;/strong&gt; (&lt;em&gt;с ним ставится и Three.js&lt;/em&gt;), входящий в &lt;strong&gt;IFC.js&lt;/strong&gt; и &lt;a href=&quot;https://rollupjs.org/&quot; target=&quot;_blank&quot;&gt;rollup.js&lt;/a&gt; в качестве сборщика проекта для JavaScript.&lt;/p&gt;
  &lt;pre id=&quot;mIq0&quot; data-lang=&quot;shell&quot;&gt;    //Install IFC.js
    npm i web-ifc-three

    // Install a bundler: we will use rollup.js for this guide
    npm i rollup --save-dev
    npm i @rollup/plugin-node-resolve --save-dev&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;FeSt&quot;&gt;Сразу можно проверить наличие в &lt;code&gt;package.json&lt;/code&gt; файле свойство &lt;code&gt;&amp;quot;type&amp;quot;: &amp;quot;module&amp;quot;&lt;/code&gt; и добавить его, если оно отсутствует.&lt;/p&gt;
    &lt;figure id=&quot;L1xR&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img2.teletype.in/files/1e/26/1e261e31-6290-4f3d-9561-365129c6ca23.png&quot; width=&quot;495&quot; /&gt;
      &lt;figcaption&gt;Структура файла &lt;code&gt;package.json&lt;/code&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;kqPL&quot;&gt;Следующим шагом, будет создание HTML файла с именем&lt;code&gt;index.html&lt;/code&gt; в качестве основного документа приложения. HTML будет иметь:&lt;/p&gt;
  &lt;ul id=&quot;SECi&quot;&gt;
    &lt;li id=&quot;zzQ5&quot;&gt;&lt;strong&gt;canvas &lt;/strong&gt;элемент, используемый для рендеринга сцены Three.js;&lt;/li&gt;
    &lt;li id=&quot;JrdO&quot;&gt;&lt;strong&gt;input &lt;/strong&gt;элемент, который будет открывать файлы IFC с нашего компьютера в приложении.&lt;/li&gt;
    &lt;li id=&quot;noFo&quot;&gt;Тэг &lt;strong&gt;script&lt;/strong&gt;, ссылающийся на файл &lt;code&gt;bundle.js&lt;/code&gt;, представляющий собой сборку приложения, которую мы создадим дальше с помощью &lt;strong&gt;rollup&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;YLyz&quot; data-lang=&quot;html&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;/&amp;gt;
    &amp;lt;meta http-equiv=&amp;quot;X-UA-Compatible&amp;quot; content=&amp;quot;IE=edge&amp;quot;/&amp;gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;/&amp;gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;styles.css&amp;quot;/&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;load&amp;quot; id=&amp;quot;file-input&amp;quot;/&amp;gt;
    &amp;lt;canvas id=&amp;quot;three-canvas&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;
    &amp;lt;script src=&amp;quot;bundle.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
  &lt;h3 id=&quot;CryV&quot;&gt;&lt;/h3&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;6FkD&quot;&gt;Для удобства импорта нашей будущей IFC-модели для тэга &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; можно добавить атрибут &lt;code&gt;accept=&amp;quot;.ifc&amp;quot;&lt;/code&gt; и видеть только файлы с расширением &lt;code&gt;.ifc&lt;/code&gt; в директории, откуда загружаем модель.&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;0n6e&quot;&gt;Добавление стилей&lt;/h3&gt;
  &lt;p id=&quot;QAZe&quot;&gt;Создаём CSS файл &lt;code&gt;styles.css&lt;/code&gt;, где произведём &lt;a href=&quot;https://habr.com/ru/articles/45296/&quot; target=&quot;_blank&quot;&gt;сброс стилей&lt;/a&gt;, сделаем наш &lt;strong&gt;canvas&lt;/strong&gt; на весь экран и зададим свойства нашей будущей кнопки для загрузки IFC-модели:&lt;/p&gt;
  &lt;pre id=&quot;kln4&quot; data-lang=&quot;css&quot;&gt;* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html,
body {
  overflow: hidden;
}

#three-canvas {
  position: fixed;
  top: 0;
  left: 0;
  outline: none;
}

#file-input {
  z-index: 1;
  position: absolute;
}&lt;/pre&gt;
  &lt;h3 id=&quot;v5Kz&quot;&gt;Сборка проекта&lt;/h3&gt;
  &lt;p id=&quot;Iv3c&quot;&gt;Далее, создадим файл конфигурации с именем &lt;code&gt;rollup.config.js&lt;/code&gt;, который будет включать в себя ссылки на ранее установленные дополнения.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;BOSO&quot;&gt;&lt;strong&gt;Rollup &lt;/strong&gt;— популярная библиотека пакетов. К примеру, это сборщик, используемый Three.js. Чтобы узнать больше, ознакомьтесь с &lt;a href=&quot;https://rollupjs.org/introduction/&quot; target=&quot;_blank&quot;&gt;документацией&lt;/a&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;pre id=&quot;1zoT&quot; data-lang=&quot;javascript&quot;&gt;import resolve from &amp;quot;@rollup/plugin-node-resolve&amp;quot;;

export default {
  input: &amp;quot;app.js&amp;quot;,
  output: [
    {
      format: &amp;quot;esm&amp;quot;,
      file: &amp;quot;bundle.js&amp;quot;,
    },
  ],
  plugins: [resolve()],
};&lt;/pre&gt;
  &lt;p id=&quot;dmj0&quot;&gt;Также, в файле &lt;code&gt;package.json&lt;/code&gt; изменим команды в области &lt;code&gt;scripts&lt;/code&gt; для удобного управления &lt;em&gt;объединением/сборки&lt;/em&gt; проекта. В каждой команде необходимо указать относительный путь к файлу конфигурации &lt;strong&gt;rollup&lt;/strong&gt;.&lt;/p&gt;
  &lt;ul id=&quot;zyvg&quot;&gt;
    &lt;li id=&quot;VnST&quot;&gt;&lt;code&gt;npm run build&lt;/code&gt; объединит проект и создаст файл с именем &lt;code&gt;bundle.js&lt;/code&gt; в корневом каталоге проекта.&lt;/li&gt;
    &lt;li id=&quot;b4gI&quot;&gt;&lt;code&gt;npm run watch&lt;/code&gt; активирует режим просмотра, автоматически обновляя этот файл каждый раз, когда мы вносим и сохраняем изменения в код.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;WtLV&quot; data-lang=&quot;javascript&quot;&gt;{
  &amp;quot;name&amp;quot;: &amp;quot;example&amp;quot;,
  &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,
  &amp;quot;description&amp;quot;: &amp;quot;-&amp;quot;,
  &amp;quot;main&amp;quot;: &amp;quot;app.js&amp;quot;,
  &amp;quot;scripts&amp;quot;: {
    &amp;quot;build&amp;quot;: &amp;quot;rollup -c ./rollup.config.js&amp;quot;,
    &amp;quot;watch&amp;quot;: &amp;quot;rollup -w -c ./rollup.config.js&amp;quot;
  },
  &amp;quot;author&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;license&amp;quot;: &amp;quot;ISC&amp;quot;,
  &amp;quot;devDependencies&amp;quot;: {
    &amp;quot;@rollup/plugin-node-resolve&amp;quot;: &amp;quot;^11.2.1&amp;quot;,
    &amp;quot;rollup&amp;quot;: &amp;quot;^2.45.2&amp;quot;
  },
  &amp;quot;dependencies&amp;quot;: {
    &amp;quot;three&amp;quot;: &amp;quot;^0.128.0&amp;quot;,
    &amp;quot;web-ifc-three&amp;quot;: &amp;quot;0.0.102&amp;quot;
  }
}&lt;/pre&gt;
  &lt;h3 id=&quot;NM2A&quot;&gt;WebAssembly&lt;/h3&gt;
  &lt;p id=&quot;2zUn&quot;&gt;Далее, необходимо скопировать файл &lt;code&gt;web-ifc.wasm&lt;/code&gt; в директорию проекта. Найти его можно по пути &lt;em&gt;node_modules\web-ifc&lt;/em&gt; и &lt;em&gt;с&lt;/em&gt;копировать куда угодно, впоследствии указав на него путь, но в примере он будет размещен в корне проекта.&lt;/p&gt;
  &lt;figure id=&quot;9WUo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d4/47/d4476b70-78ef-4133-9cc7-163da17f9226.png&quot; width=&quot;271&quot; /&gt;
    &lt;figcaption&gt;Копирование файла web-ifc.wasm&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2w8a&quot;&gt;Этот файл необходим, так как содержит скомпилированную C++ логику модуля &lt;strong&gt;web-ifc&lt;/strong&gt;, являющемся ядром &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7&quot; target=&quot;_blank&quot;&gt;парсинга&lt;/a&gt; для чтения и записи IFC файлов.&lt;/p&gt;
  &lt;h3 id=&quot;jnLe&quot;&gt;Создание и настройка 3D сцены&lt;/h3&gt;
  &lt;p id=&quot;Ceaa&quot;&gt;Наконец, мы создадим JavaScript файл для нашего приложения. Разместить его можно где-угодно и задать произвольно имя, главное отразить это в файле &lt;code&gt;rollup.config.js&lt;/code&gt;. В примере это будет &lt;code&gt;app.js&lt;/code&gt; в корне проекта.&lt;/p&gt;
  &lt;p id=&quot;sMqQ&quot;&gt;Базовая 3D-сцена Three.js&lt;/p&gt;
  &lt;pre id=&quot;czHC&quot; data-lang=&quot;javascript&quot;&gt;import { AmbientLight, AxesHelper, DirectionalLight, GridHelper, PerspectiveCamera, Scene, WebGLRenderer } from &amp;quot;three&amp;quot;;
import { OrbitControls } from &amp;quot;three/examples/jsm/controls/OrbitControls.js&amp;quot;;

//Creates the Three.js scene
const scene = new Scene();

//Object to store the size of the viewport
const size = {
  width: window.innerWidth,
  height: window.innerHeight,
};

//Creates the camera (point of view of the user)
const aspect = size.width / size.height;
const camera = new PerspectiveCamera(75, aspect);
camera.position.z = 15;
camera.position.y = 13;
camera.position.x = 8;

//Creates the lights of the scene
const lightColor = 0xffffff;

const ambientLight = new AmbientLight(lightColor, 0.5);
scene.add(ambientLight);

const directionalLight = new DirectionalLight(lightColor, 1);
directionalLight.position.set(0, 10, 0);
directionalLight.target.position.set(-5, 0, 0);
scene.add(directionalLight);
scene.add(directionalLight.target);

//Sets up the renderer, fetching the canvas of the HTML
const threeCanvas = document.getElementById(&amp;quot;three-canvas&amp;quot;);
const renderer = new WebGLRenderer({
  canvas: threeCanvas,
  alpha: true,
});

renderer.setSize(size.width, size.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));

//Creates grids and axes in the scene
const grid = new GridHelper(50, 30);
scene.add(grid);

const axes = new AxesHelper();
axes.material.depthTest = false;
axes.renderOrder = 1;
scene.add(axes);

//Creates the orbit controls (to navigate the scene)
const controls = new OrbitControls(camera, threeCanvas);
controls.enableDamping = true;
controls.target.set(-2, 0, 0);

//Animation loop
const animate = () =&amp;gt; {
  controls.update();
  renderer.render(scene, camera);
  requestAnimationFrame(animate);
};

animate();

//Adjust the viewport to the size of the browser
window.addEventListener(&amp;quot;resize&amp;quot;, () =&amp;gt; {
  size.width = window.innerWidth;
  size.height = window.innerHeight;
  camera.aspect = size.width / size.height;
  camera.updateProjectionMatrix();
  renderer.setSize(size.width, size.height);
});&lt;/pre&gt;
  &lt;h3 id=&quot;JH5m&quot;&gt;Загрузка IFC файлов&lt;/h3&gt;
  &lt;p id=&quot;WgFZ&quot;&gt;В завершении мы будем использовать &lt;strong&gt;IFC.js&lt;/strong&gt; для загрузки IFC файлов. Создадим экземпляр загрузчика и событие, когда пользователь загружает IFC файл с помощью элемента ввода &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;pre id=&quot;jukQ&quot; data-lang=&quot;javascript&quot;&gt;import { IFCLoader } from &amp;quot;web-ifc-three/IFCLoader&amp;quot;;

// Sets up the IFC loading
const ifcLoader = new IFCLoader();

const input = document.getElementById(&amp;quot;file-input&amp;quot;);
input.addEventListener(
  &amp;quot;change&amp;quot;,
  (changed) =&amp;gt; {
    const file = changed.target.files[0];
    var ifcURL = URL.createObjectURL(file);
    ifcLoader.load(ifcURL, (ifcModel) =&amp;gt; scene.add(ifcModel));
  },
  false
);&lt;/pre&gt;
  &lt;p id=&quot;yxfS&quot;&gt;Готовый app.js файл будет так:&lt;/p&gt;
  &lt;pre id=&quot;0DIv&quot; data-lang=&quot;javascript&quot;&gt;import {
  AmbientLight,
  AxesHelper,
  DirectionalLight,
  GridHelper,
  PerspectiveCamera,
  Scene,
  WebGLRenderer,
} from &amp;quot;three&amp;quot;;
import { OrbitControls } from &amp;quot;three/examples/jsm/controls/OrbitControls.js&amp;quot;;
import { IFCLoader } from &amp;quot;web-ifc-three/IFCLoader&amp;quot;;


//Creates the Three.js scene
const scene = new Scene();

//Object to store the size of the viewport
const size = {
  width: window.innerWidth,
  height: window.innerHeight,
};

//Creates the camera (point of view of the user)
const aspect = size.width / size.height;
const camera = new PerspectiveCamera(75, aspect);
camera.position.z = 15;
camera.position.y = 13;
camera.position.x = 8;

//Creates the lights of the scene
const lightColor = 0xffffff;

const ambientLight = new AmbientLight(lightColor, 0.5);
scene.add(ambientLight);

const directionalLight = new DirectionalLight(lightColor, 1);
directionalLight.position.set(0, 10, 0);
directionalLight.target.position.set(-5, 0, 0);
scene.add(directionalLight);
scene.add(directionalLight.target);

//Sets up the renderer, fetching the canvas of the HTML
const threeCanvas = document.getElementById(&amp;quot;three-canvas&amp;quot;);
const renderer = new WebGLRenderer({
  canvas: threeCanvas,
  alpha: true,
});

renderer.setSize(size.width, size.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));

//Creates grids and axes in the scene
const grid = new GridHelper(50, 30);
scene.add(grid);

const axes = new AxesHelper();
axes.material.depthTest = false;
axes.renderOrder = 1;
scene.add(axes);

//Creates the orbit controls (to navigate the scene)
const controls = new OrbitControls(camera, threeCanvas);
controls.enableDamping = true;
controls.target.set(-2, 0, 0);

//Animation loop
const animate = () =&amp;gt; {
  controls.update();
  renderer.render(scene, camera);
  requestAnimationFrame(animate);
};

animate();

//Adjust the viewport to the size of the browser
window.addEventListener(&amp;quot;resize&amp;quot;, () =&amp;gt; {
  size.width = window.innerWidth;
  size.height = window.innerHeight;
  camera.aspect = size.width / size.height;
  camera.updateProjectionMatrix();
  renderer.setSize(size.width, size.height);
});

// Sets up the IFC loading
const ifcLoader = new IFCLoader();

const input = document.getElementById(&amp;quot;file-input&amp;quot;);
input.addEventListener(
  &amp;quot;change&amp;quot;,
  (changed) =&amp;gt; {
    const file = changed.target.files[0];
    var ifcURL = URL.createObjectURL(file);
    ifcLoader.load(ifcURL, (ifcModel) =&amp;gt; scene.add(ifcModel));
  },
  false
);tURL(file);
    ifcLoader.load(ifcURL, (ifcModel) =&amp;gt; scene.add(ifcModel));
  },
  false
);&lt;/pre&gt;
  &lt;p id=&quot;g4Rw&quot;&gt;И если всё настроенное корректно, то после вызова команды &lt;code&gt;npm run build&lt;/code&gt; мы можем собрать и запустить наше приложение, запустив расширение &lt;strong&gt;Live Preview&lt;/strong&gt;, которое мы устанавливали ранее, с адресом &lt;a href=&quot;http://127.0.0.1:3000&quot; target=&quot;_blank&quot;&gt;http://127.0.0.1:3000&lt;/a&gt; в браузере или открыть &lt;code&gt;index.html&lt;/code&gt; в папке проекта.&lt;/p&gt;
  &lt;figure id=&quot;rOyM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ce/d3/ced3ff2c-64c4-4024-9b9e-b40e8a8a795c.gif&quot; width=&quot;1405&quot; /&gt;
    &lt;figcaption&gt;Сборка и запуск приложения&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;6JiR&quot; class=&quot;m_16x9&quot;&gt;
      &lt;iframe src=&quot;https://ifcjs.github.io/hello-world/examples/web-ifc-three/helloworld/&quot;&gt;&lt;/iframe&gt;
      &lt;figcaption&gt;Финальный результат. Можете загрузить свою IFC-модель&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;pEmW&quot; class=&quot;m_16x9&quot;&gt;
    &lt;iframe src=&quot;https://ifcjs.github.io/ifcjs-crash-course/exercises/WIV/hello-world/&quot;&gt;&lt;/iframe&gt;
    &lt;figcaption&gt;В качестве примера — простая модель с пометками и атрибутивной информацией элементов.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;RUjf&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;JLZ6&quot;&gt;Библиотека &lt;strong&gt;IFC.js&lt;/strong&gt; действительно молодой проект и развивается довольно быстро, но уже сейчас даёт возможность реализовывать полноценные BIM-приложения. В связи с последними тенденциями и активным интересом в сторону подхода &lt;strong&gt;Open BIM&lt;/strong&gt; — &lt;strong&gt;IFC.js&lt;/strong&gt; прокладывает отличный путь для развития сервисов в строительной индустрии. Вокруг проекта уже сформировалось значительное комьюнити к которому можно присоединиться в &lt;a href=&quot;https://discord.com/invite/D79ZSGtt&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt;. &lt;/p&gt;
  &lt;p id=&quot;y5Da&quot;&gt;20-ого сентября состоится &lt;a href=&quot;https://thatopen.com/&quot; target=&quot;_blank&quot;&gt;масштабное мероприятие&lt;/a&gt; проекта &lt;strong&gt;IFC.js&lt;/strong&gt; с множеством новостей, улучшением и заменой некоторых компонентов библиотеки, а также многое другое.&lt;/p&gt;
  &lt;h3 id=&quot;HiNm&quot;&gt;P.S. &lt;/h3&gt;
  &lt;p id=&quot;R9lE&quot;&gt;Я старался максимально сократить и упростить вводную часть, в том числе с определениями и понятиями, на сколько смог. Возможно, некоторые моменты могут быть не до конца понятными или раскрытыми. В свою очередь, я старался сделать акцент больше на технической части, но при этом добавив контекста для читателей не из архитектурно-строительной сферы.&lt;/p&gt;

</content></entry><entry><id>esteselkin:arcol</id><link rel="alternate" type="text/html" href="https://teletype.in/@esteselkin/arcol?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=esteselkin"></link><title>Arcol — Figma для Архитекторов. Обзор нового BIM-стартапа — SketchUp и Revit в браузере.</title><published>2023-08-22T13:32:12.994Z</published><updated>2023-09-04T19:13:42.974Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/24/35/2435a074-f3c7-4292-9bce-37625d627eee.png"></media:thumbnail><category term="bim-services" label="BIM Services"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/01/67/0167c7ce-9ed5-4801-8c87-8ad68d45a4aa.png&quot;&gt;Arcol.io — облачный веб-сервис для концептуального проектирования и формирования чертежей, созданный специально для архитекторов.</summary><content type="html">
  &lt;p id=&quot;2ii3&quot;&gt;&lt;a href=&quot;https://www.arcol.io/&quot; target=&quot;_blank&quot;&gt;Arcol.io&lt;/a&gt; — облачный веб-сервис для концептуального проектирования и формирования чертежей, созданный специально для архитекторов.&lt;/p&gt;
  &lt;figure id=&quot;2Kr6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/01/67/0167c7ce-9ed5-4801-8c87-8ad68d45a4aa.png&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Cover&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UkEc&quot;&gt;За развитием &lt;strong&gt;Arcol &lt;/strong&gt;я слежу уже относительно давно. Примерно год назад записался в лист ожидания, а в этом месяце вышла публичная beta-версия.&lt;/p&gt;
  &lt;p id=&quot;9Mu0&quot;&gt;Основной целью команды является переосмысление процессов проектирования и объединение разных ПО (&lt;em&gt;Miro, Bluebeam, Sketchup, Revit и д. р.&lt;/em&gt;) в единый сервис для совместной работы над проектом. И судя по &lt;a href=&quot;https://medium.com/@PaulO_Carroll/collaboration-in-aec-adbb90193594&quot; target=&quot;_blank&quot;&gt;манифесту &lt;/a&gt;основателя сервиса, Arcol пытается воссоздать Revit в облачном исполнении, но более простой и удобный в использовании. Не зря UX/UI-дизайн взят за основу из популярной программы для дизайнеров — &lt;a href=&quot;https://figma.com/&quot; target=&quot;_blank&quot;&gt;Figma&lt;/a&gt;&lt;/p&gt;
  &lt;figure id=&quot;WNP4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6c/32/6c320e73-781f-496f-b1a4-7a467bd871ca.png&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Интерфейс и рабочее окно Arcol&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;interfeiis&quot;&gt;Интерфейс&lt;/h2&gt;
  &lt;p id=&quot;813l&quot;&gt;По структуре интерфейс максимально схож с Figma или аналогом Figma в 3D — &lt;a href=&quot;https://spline.design/&quot; target=&quot;_blank&quot;&gt;Spline&lt;/a&gt;&lt;/p&gt;
  &lt;figure id=&quot;bYLp&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f8/87/f8878a56-1859-4ca2-ba11-e2478100728e.png&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Интерфейс Arcol&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;mEzV&quot;&gt;Основные области интерфейса:&lt;/h3&gt;
  &lt;ol id=&quot;U8Bw&quot;&gt;
    &lt;li id=&quot;Ge1F&quot;&gt;&lt;strong&gt;Панель инструментов&lt;/strong&gt; — делится на вкладки &lt;strong&gt;Design &lt;/strong&gt;и &lt;strong&gt;Construct&lt;/strong&gt;. В первом случае работа с эскизными линиями и поверхностями, которые в последствии можно выдавливать инструментом &lt;strong&gt;Push/Pull&lt;/strong&gt;. Во вкладке &lt;strong&gt;Construct&lt;/strong&gt; присутствуют уже более привычные инструменты для 3D-проектирования — &lt;em&gt;Стены&lt;/em&gt;, &lt;em&gt;Двери &lt;/em&gt;и &lt;em&gt;Окна&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;49fT&quot;&gt;&lt;strong&gt;Диспетчер проекта&lt;/strong&gt; с разбивкой на &lt;strong&gt;Виды &lt;/strong&gt;(&lt;em&gt;Viewes - создание планов, фасадов и т.д.&lt;/em&gt;) и &lt;strong&gt;Доски &lt;/strong&gt;(&lt;em&gt;Boards - формирование листов с видами&lt;/em&gt;)&lt;/li&gt;
    &lt;li id=&quot;87iv&quot;&gt;&lt;strong&gt;Структура проекта&lt;/strong&gt; с разбивкой по уровням и вложенности элементов модели&lt;/li&gt;
    &lt;li id=&quot;MYmU&quot;&gt;&lt;strong&gt;Панель свойств и параметров&lt;/strong&gt; где также находится панель со &lt;strong&gt;Слоями&lt;/strong&gt; (&lt;em&gt;Layers&lt;/em&gt;)&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;EE5u&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7c/1a/7c1aba91-bfc6-46fe-b3ae-0966a0e051ed.gif&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Создание стен, дверей и окон&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;kommynikaciya_i_sovmestnaya_rabota&quot;&gt;Коммуникация и совместная работа&lt;/h2&gt;
  &lt;p id=&quot;6VYe&quot;&gt;В &lt;strong&gt;Arcol &lt;/strong&gt;можно оставлять комментарии прямо внутри проекта и вести реестр всех замечаний. В режиме реального времени видно курсоры коллег, работающие совместно с вами над проектом.&lt;/p&gt;
  &lt;figure id=&quot;cjd1&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/05/8405e32c-2d14-4706-8e07-031825223e78.gif&quot; width=&quot;1800&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;rejim_markup&quot;&gt;Режим Markup&lt;/h2&gt;
  &lt;p id=&quot;7aFA&quot;&gt;Режим Markup — некий симбиоз &lt;a href=&quot;https://www.figma.com/figjam/team-collaboration/&quot; target=&quot;_blank&quot;&gt;Figma Jam&lt;/a&gt; и &lt;a href=&quot;https://miro.com/&quot; target=&quot;_blank&quot;&gt;Miro&lt;/a&gt;. В режиме Markup можно рисовать и оставлять всяческие аннотации поверх проекта. После чего формируется реестр с видами и пометками для дальнейшей коммуникации среди участников проекта&lt;/p&gt;
  &lt;figure id=&quot;gorA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/49/f0/49f0d6c5-a80b-4277-8614-65b4737fb2a4.gif&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Режим Markup&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;geopozicionirovanie_i_kontekst&quot;&gt;Геопозиционирование и контекст&lt;/h2&gt;
  &lt;p id=&quot;UBkd&quot;&gt;В &lt;strong&gt;Arcol &lt;/strong&gt;есть возможность выбрать адрес и размер границы участка (&lt;em&gt;по умолчанию 500м&lt;/em&gt;) подгрузить его и автоматически получить объём окружающей застройки.&lt;/p&gt;
  &lt;figure id=&quot;X01H&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/ff/a6/ffa60885-4f79-4370-802e-b367fd2ab8b5.gif&quot; width=&quot;1200&quot; /&gt;
    &lt;figcaption&gt;Геопозиционирование и формирование окружающей застройки&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;formirovanie_listov&quot;&gt;Формирование листов&lt;/h2&gt;
  &lt;p id=&quot;gA6j&quot;&gt;В диспетчере проекта в поле &lt;strong&gt;Boards &lt;/strong&gt;создаются чертёжные листы с видами проекта.&lt;/p&gt;
  &lt;figure id=&quot;6o9T&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/26/d026ec5b-13c7-450a-806a-0ed145bfc745.gif&quot; width=&quot;1800&quot; /&gt;
    &lt;figcaption&gt;Формирование чертёжных видов&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;v_zaklyuchenii&quot;&gt;В заключении&lt;/h2&gt;
  &lt;p id=&quot;Skyu&quot;&gt;С остальными функциями и возможностями можно ознакомится на практике или изучив документацию &lt;a href=&quot;https://docs.arcol.io/&quot; target=&quot;_blank&quot;&gt;https://docs.arcol.io/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;4Ux2&quot;&gt;На данный момент продукт ещё сыроват и полноценно программу для 3D-проектирования пока не заменяет, но сам проект уже весьма интересный, по крайней мере как идея, и многообещающий. Остаётся пожелать только успехов в развитии! А мы со своей стороны будем пристально следить за релизами и обновлениями.&lt;/p&gt;

</content></entry></feed>