【问题标题】:Highlight an array of nodes in Autodesk Viewer在 Autodesk Viewer 中突出显示节点数组
【发布时间】:2017-05-01 06:40:00
【问题描述】:

问题:

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

我尝试过的解决方案

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

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

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

谢谢

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    如果您想突出显示几个 dbid,有一些不同的方法,具体取决于您的要求。

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

          viewer.isolate(dbIdArray);
          viewer.fitToView(dbIdArray);
      
    • 如果你想用不同的颜色高亮选中的对象, 也许你可以试试新的 API Viewer3D.setThemingColor(),这里是 简单的代码示例。请记住,您需要使用清除颜色 Viewer3D.clearThemingColors()。简单的代码示例应该是这样的:

    【讨论】:

    • 我认为第一种使用isolate和fitToView的方法应该可以满足我们的要求。谢谢。
    【解决方案2】:

    我可以使用以下代码突出显示组件:

    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 = function(model, dbId, value, simpleHighlight)

    【讨论】:

      猜你喜欢
      • 2016-11-25
      • 2018-04-12
      • 2018-12-06
      • 2018-01-15
      • 2019-11-14
      • 1970-01-01
      • 2021-11-11
      • 2021-11-05
      • 2021-08-30
      相关资源
      最近更新 更多