ADN Open CIS
Сообщество программистов Autodesk в СНГ

28/02/2020

Уровни Revit, 2D-миникарта на 3D сцене Forge Viewer

Хотите добавить небольшую 2D миникарту и высплывающий диалог с уровнями в Forge Viewer?

К счастью, команда BIM 360 уже создала extension для Forge Viewer-а.

Введение:

Для своей работы это расширение требует дополнительную информацию о высоте здания и всех уровней, чтобы "обрезать" сцену под заданный уровень.

Например, нам нужно посмотреть 5 этаж небоскреба, тогда мы с помощью утилит сечения вручную "обрежем" здание по высоте пола и потолка 4 этажа и настроим камеру на вид сверху. Autodesk.AEC.LevelsExtension сделает это за нас.

Для работы миникарты также требуется эта информация, доступная в отдельном файле 'AECModelData.json', упомянутом в блоге Xiaodong-а. Этот файл автоматически создается для моделей Revit при использовании сервиса Model derivative с мая 2019 года.

Последовательность действий

1. Преобразуйте файл Revit-а в SVF с помощью сервиса Model derivative

2. Во viewer-е используйте метод doc.downloadAecModelData() для загрузки информации об уровнях

3. загрузите расширения "Autodesk.AEC.LevelsExtension" и "Autodesk.AEC.Minimap3DExtension"

4. переключитесь в режим от первого лица - viewer.getExtension("Autodesk.BimWalk").activate();

Пример

Код - JavaScript: [Выделить]
  1. Autodesk.Viewing.Initializer(options, () => {
  2.  
  3.         const div = document.getElementById('forgeViewer');
  4.  
  5.         const config = { extensions:[
  6.           "Autodesk.AEC.LevelsExtension",
  7.           "Autodesk.AEC.Minimap3DExtension"
  8.         ]};
  9.  
  10.         viewer = new Autodesk.Viewing.Private.GuiViewer3D(div, config);
  11.         viewer.start();
  12.         Autodesk.Viewing.Document.load(`urn:${urn}`, (doc) => {
  13.             var viewables = doc.getRoot().getDefaultGeometry();
  14.             doc.downloadAecModelData();
  15.             viewer.loadDocumentNode(doc, viewables).then( onLoadFinished );
  16.  
  17.             viewer.addEventListener( Autodesk.Viewing.TEXTURES_LOADED_EVENT, ()=>{
  18.                 viewer.getExtension("Autodesk.BimWalk").activate();
  19.             });
  20.         });
  21. ...

Посмотреть можно здесь:

https://wallabyway.github.io/forge-pinch-zoom/minimap.html

 

Источник: https://forge.autodesk.com/blog/add-revit-levels-and-2d-minimap-your-3d
Автор перевода: Александр Игнатович
Опубликовано 28.02.2020