在模型浏览器中单击时防止放大 Forge 查看器

Prevent zoom in Forge viewer when clicking in Model Browser

从版本 2 到版本 3 的 Forge Viewer,模型浏览器中的点击行为发生了变化。在 v2 中,单击会 select 元素,双击会缩放到 selected 元素。在 v3 中,单击一次将缩放到元素。有时这很好,但通常最好禁用此行为。今天有一种简单的方法可以做到这一点吗?如果没有,是否可以向查看器添加 disableZoomOnSelection 函数 API?

我知道浏览器中的眼睛会处理显示和隐藏元素,但很容易不小心点击这三个元素,然后在用户无意的情况下突然缩放查看器。

问候 弗罗德

我为您挖掘该代码,查看我在那篇文章中公开的 ViewerModelStructurePanel 的实现:Supporting multiple models in the new ModelStructurePanel

树中发生的事件通过 options.docStructureConfig 对象映射到预定义的操作,因此解决方法是使用所需的选项实例化一个新的 ViewerModelStructurePanel

viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, () => {

    var options = {
      docStructureConfig: {
          // go with default, which is viewer.select(node)
          //  click: {
          //    onObject: ["toggleOverlayedSelection"]
          //},
          clickShift: {
            onObject: ["toggleMultipleOverlayedSelection"]
        },
          clickCtrl: {
          onObject: ["toggleMultipleOverlayedSelection"]
        }
      }
    }

    var customModelStructurePanel =
      new Autodesk.Viewing.Extensions.ViewerModelStructurePanel(
        viewer, 'Browser', options)

    viewer.setModelStructurePanel(customModelStructurePanel)
  })

然而,双击没有链接到当前实现中的事件,因此为了更强大的自定义,我建议您将整个实现替换为本文中公开的自定义实现,并实现所需的操作处理程序。我将其实现为直接替换,因此在这种情况下,您只需将它包含在查看器脚本之后的 html 中,而不必替换 OBJECT_TREE_CREATED_EVENT[=16= 中的模型浏览器]

模型浏览器在其构造函数中接收一个选项对象。在那里,您可以指定不同事件的操作(单击、单击 Ctrl、单击 Shift 等)。

要设置旧行为,您可以尝试以下操作:

var options = {};

options.docStructureConfig = {
  "click": {
    "onObject": ["isolate"]
  },
  "clickCtrl": {
    "onObject": ["toggleVisibility"]
  }
 };

 NOP_VIEWER.setModelStructurePanel(new ave.ViewerModelStructurePanel(NOP_VIEWER, "", options));

NOP_VIEWER可以换成你自己的viewer变量。