【问题标题】: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 中的模型浏览器
【解决方案2】:
模型浏览器在其构造函数中接收一个选项对象。在那里,您可以指定不同事件的操作(单击、clickCtrl、clickShift 等)。
要设置旧行为,您可以尝试以下操作:
var options = {};
options.docStructureConfig = {
"click": {
"onObject": ["isolate"]
},
"clickCtrl": {
"onObject": ["toggleVisibility"]
}
};
NOP_VIEWER.setModelStructurePanel(new ave.ViewerModelStructurePanel(NOP_VIEWER, "", options));
NOP_VIEWER 可以替换为您自己的查看器变量。