【问题标题】:Prevent zoom in Forge viewer when clicking in Model Browser在模型浏览器中单击时防止放大 Forge 查看器
【发布时间】:2018-06-18 15:28:58
【问题描述】:

模型浏览器中的点击行为已从 Forge 查看器的版本 2 更改为版本 3。在 v2 中,单击将选择元素,双击将放大所选元素。在 v3 中,单击即可缩放到元素。有时这很好,但通常禁用此行为会很好。今天有没有简单的方法可以做到这一点?如果没有,是否可以向查看器 API 添加 disableZoomOnSelection 函数?

我知道浏览器中的眼睛会负责显示和隐藏元素,但很容易意外点击三个,然后查看器突然在没有用户意图的情况下缩放。

问候 弗罗德

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    我为您挖掘该代码以查看我在那篇文章中公开的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 中的模型浏览器

    【讨论】:

    • 谢谢菲利普。我还看到您为此发表了一篇新的博客文章。我肯定会对此进行调查。 forge.autodesk.com/blog/…
    【解决方案2】:

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

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

    var options = {};
    
    options.docStructureConfig = {
      "click": {
        "onObject": ["isolate"]
      },
      "clickCtrl": {
        "onObject": ["toggleVisibility"]
      }
     };
    
     NOP_VIEWER.setModelStructurePanel(new ave.ViewerModelStructurePanel(NOP_VIEWER, "", options));
    

    NOP_VIEWER 可以替换为您自己的查看器变量。

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2013-01-01
      • 2015-01-22
      • 2016-12-17
      • 2021-09-10
      • 2023-04-09
      相关资源
      最近更新 更多