Forge Viewer: Отображаем различия в 3D моделях с помощью расширения Autodesk.DiffTool Extension
Определение различий между моделями — интересная и популярная тема. Мой коллега Michael опубликовал интересную статью о сравнении 2D листов с помощью расширения PiexlComparison. Ранее, Augusto также поделился примером поэлементного сравнения 3D моделей. Неплохой пример, но на больших моделях страдает производительность. Madhukar предложил использовать команду AutoCAD COMPARE для сравнения чертежей при помощи сервиса Forge Design Automation, но это решение применимо только для файлов DWG и зависит от сервиса Desing Automation.
Сегодня я представляю интересное расширение Autodesk.DiffTool. Возможно, Вы видели подобное решение в BIM360 Design Collaboration. Autodesk.DiffTool — это практически точно такое расширение, предлагающее сходный функционал.
Для работы с этим расширением, для начала загрузите модели в Forge Viewer (в данном случае, разные версии модели), затем загрузите расширение со следующими настройками:
- primaryModels (обязательный параметр): массив загруженных экземпляров Autodesk.Viewing.Model. Эти модели будут рассматриваться как основные, именно относительно них будут определяться статусы элементов — не измененные, измененные, добавленные, удаленные элементы.
- diffModels (обязательный параметр): массив загруженных экземпляров Autodesk.Viewing.Model. Эти модели рассматриваются как предыдущее состоянии при определении статусов элементов.
- versionA (обязательный параметр): Идентификатор версии primaryModels, т. е. Что-то типа '2', 'Version 2' или '02/26/2018'.
- versionB (обязательный параметр): Идентификатор версии diffModels, обычно более ранняя.
- mimeType (обязательный параметр): Внутренняя логика сравнения моделей меняется в зависимости от типа сравниваемых моделей. На текущий момент поддерживается сравнение:
- 'application/vnd.autodesk.revit': Revit
- 'application/vnd.autodesk.autocad.dwg' : DWG
- 'application/vnd.autodesk.navisworks' : Navisworks (NWD)
Расширение позволяет разделять, либо накладывать сцены моделей друг на друга. Также оно позволяет управлять дисциплинами, т. е., например, показать отличия только конструктивных элементов или только отличия элементов MEP, только удаленные элементы и т. д., осуществлять поиск конкретных различий и т. д.
Пример кода загрузки расширения для сравнения 2 моделей. Он использовался для создания gif в начале статьи:
- var extensionConfig ={}
- extensionConfig.mimeType ='application/vnd.autodesk.revit'
- extensionConfig.primaryModels = [viewer.getVisibleModels()[1]]
- extensionConfig.diffModels = [viewer.getVisibleModels()[0]]
- extensionConfig.diffMode = 'overlay'
- extensionConfig.versionA = '2'
- extensionConfig.versionB = '1'
- viewer.loadExtension('Autodesk.DiffTool', extensionConfig)
- .then(function(res) {
- window.DIFF_EXT = viewer.getExtension('Autodesk.DiffTool');
- console.log(window.DIFF_EXT);
- })
- .catch(function(err) {
- console.log(err);
- });
Примечания и ограничения:
- Расширение позволяет работать как с SVF, так и c OTG (также именуемыми SVF2.0, но работа по их поддержке ещё в процессе). В текущей версии изменения OTG моделей могут быть показаны только в том случае, если они были созданы на основе разных версий одного и того же исходного файла, тогда как сравнение SVF можно производить даже в том случае, если SVF были созданы на основе разных моделей. Нюансы загрузки OTG моделей BIM360 Design Collaboration описаны в примере, показанном Michael.
- В настоящий момент не существует web-сервиса, который бы выдавал различия моделей. Поэтому сейчас необходимо загружать модели во Viewer и использовать расширение DiffTools
Источник: https://forge.autodesk.com/blog/difference-3d-models-autodeskdifftool-extension
Опубликовано 31.05.2020