0

问题:

我有一个节点数组,我想在动作发生时突出显示它们。

我尝试的解决方案

我曾尝试使用模型浏览器中的代码,但它似乎一次只接受一个 dbId。我试图遍历我的数组并调用它,但是完成后突出显示不起作用。

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

任何关于如何正确实施的建议都会有很大的帮助。

谢谢

4

2 回答 2

1

如果您想突出显示几个 dbid,根据您的要求,有一些不同的方法。

  • 也许您可以使用 API Viewer3D.isolate() 通过隔离它们来突出显示所选对象,您只需输入 dbId 数组如下,也可以使用 API Viewer3D.fitToView() 将所选项目缩放到查看器窗口关注他们:

        viewer.isolate(dbIdArray);
        viewer.fitToView(dbIdArray);
    
  • 如果您想用不同的颜色突出显示选定的对象,也许您可​​以尝试新的 API Viewer3D.setThemingColor(),这里是简单的代码示例。请记住,您需要使用 Viewer3D.clearThemingColors() 清除颜色。简单的代码示例应如下所示:

于 2016-12-17T03:21:46.783 回答
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)

于 2016-12-20T08:09:26.367 回答