2016-12-15 8 views
0

Проблема:Выделите массив узлов в Autodesk просмотра

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

Мое Покушение Решение

Я попытался с помощью кода из модели браузера, но это, кажется, принимает только один DBID в то время. Я попытался перебрать мой массив и вызвать его, но подсветка не работает, когда это будет сделано.

for (var i = 0; i < dbIdsArray.length; i++) { 
    viewerApp.getCurrentViewer().impl.rolloverObjectNode(dbIdsArray[i]); 
} 

Любой совет о том, как реализовать это правильно, будет большой помощью.

Благодаря

ответ

1

Если вы хотите, чтобы выделить пару dbids, есть несколько различных способов, в зависимости от ваших требований.

  • Может быть, вы можете использовать API Viewer3D.isolate(), чтобы выделить выбранные объекты, изолируя их, вы можете просто ввести массив DBID, как следовать, также, вы можете увеличить выбранные элементы в окне просмотра использовать API Viewer3D.fitToView(), чтобы сосредоточиться на них:

    viewer.isolate(dbIdArray); 
        viewer.fitToView(dbIdArray); 
    
  • Если вы хотите, чтобы выделить выбранные объекты с различным цветом, может быть, вы можете попробовать новый API Viewer3D.setThemingColor(), здесь простой образец кода. Помните, что вам нужно очистить цвет, используя Viewer3D.clearThemingColors(). Простой пример кода должен быть как:

+0

Я думаю, что первый подход, использующий изоляцию и fitToView, должен соответствовать нашим требованиям. Благодарю. –

0

Я могу выделить компоненты, используя следующий код:

viewer.addEventListener(
     Autodesk.Viewing.SELECTION_CHANGED_EVENT,    
     function (e) {     
     if(e.dbIdArray.length) {      
      var dbId = e.dbIdArray[0];      
      viewer.impl.highlightObjectNode(
       viewer.model, dbId, true, false)            
      viewer.select([]) 
      viewer.impl.sceneUpdated(true) 
     }   
    }) 

Это используется функция:

viewer.impl.highlightObjectNode = функция (модель, dbId, значение, simpleHighlight)