在模型浏览器中单击时防止放大 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变量。
从版本 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变量。