Autodesk forge Forge viewer:如何修复';切换可见性';对于从“模型浏览器”中选择的隐藏模型,是否存在未定义的?

Autodesk forge Forge viewer:如何修复';切换可见性';对于从“模型浏览器”中选择的隐藏模型,是否存在未定义的?,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,我正在使用Autodesk forge viewer 7.2.0版本并尝试加载多个模型。对于少数模型,我使用模型选项“loadAsHidden:true”,通过该选项,模型将被隐藏,但会按预期添加到模型浏览器中(眼睛图标处于活动状态,但我认为它应该处于非活动状态)。 在加载查看器后,当我单击隐藏模型的眼睛图标时,我希望将模型加载到查看器中,但出现以下错误: core.js:12501 ERROR TypeError: Cannot read property 'toggleVisibility'

我正在使用Autodesk forge viewer 7.2.0版本并尝试加载多个模型。对于少数模型,我使用模型选项“loadAsHidden:true”,通过该选项,模型将被隐藏,但会按预期添加到模型浏览器中(眼睛图标处于活动状态,但我认为它应该处于非活动状态)。 在加载查看器后,当我单击隐藏模型的眼睛图标时,我希望将模型加载到查看器中,但出现以下错误:

core.js:12501 ERROR TypeError: Cannot read property 'toggleVisibility' of undefined
    at MultiModelVisibilityManager.LMV../src/tools/VisibilityManager.js.MultiModelVisibilityManager.toggleVisibility (viewer3D.js:84086)
    at GuiViewer3D.LMV../src/application/Viewer3D.js.Viewer3D.toggleVisibility (viewer3D.js:33306)
    at ViewerModelStructurePanel.LMV../src/gui/ViewerModelStructurePanel.js.ViewerModelStructurePanel.onEyeIcon (viewer3D.js:67026)
    at ModelStructureTreeDelegate.<anonymous> (viewer3D.js:62564)
core.js:12501错误类型错误:无法读取未定义的属性“toggleVisibility”
在multiplevisibilitymanager.LMV../src/tools/VisibilityManager.js.multiplevisibilitymanager.toggleVisibility(viewer3D.js:84086)
位于GuiViewer3D.LMV../src/application/Viewer3D.js.Viewer3D.toggleVisibility(Viewer3D.js:33306)
在ViewerModelStructurePanel.LMV../src/gui/ViewerModelStructurePanel.js.ViewerModelStructurePanel.onEyeIcon(viewer3D.js:67026)
在ModelStructureTreeLegate。(viewer3D.js:62564)
经过进一步调查,我发现隐藏模型的visibilityManager为空,这是导致问题的原因,但当我对viewer.showModel(hiddenModel)执行此操作时,visibilityManager已就位,模型浏览器按预期工作


我希望当单击隐藏模型的眼睛图标时,它应该在内部执行showModel()并将模型加载到查看器。如果我的看法不同,请有人给我建议,或者给我建议解决方案吗?

您可以使用下面的
onEyeIcon
处理程序:

viewer.modelstructure.onEyeIcon = function(dbId, model) {
        this.viewer.showModel(model);
        this.viewer.toggleVisibility(dbId, model);
    };
编辑:

要同步结构面板中的眼睛图标,可以手动初始化可见性管理器并翻转模型根的可见性-可以在最终用户完全无法察觉的任何模型加载后生命周期中进行:

NOP_VIEWER.loadModel(svfURL, options, ()=>{
const model = NOP_VIEWER.impl.modelQueue().getHiddenModels()[0];
model.visibilityManager = new Autodesk.Viewing.Private.VisibilityManager(NOP_VIEWER.impl, model);
model.visibilityManager.toggleVisibility(sb.getRootId())
})

谢谢,这非常有效,但我有以下与同一主题相关的问题:1)最初使用modelOption“loadAsHidden”隐藏的模型,其eyeIcon已在模型浏览器中处于活动状态,但与查看器中的模型不同步。2) 为了在移动设备中启用搜索框,我使用了
this.viewer.setModelStructurePanel(新的Autodesk.Viewing.Extensions.ViewerModelStructurePanel(this.viewer,'Model browser',{hideSearch:false}))
。我认为正因为如此,模型结构才得以重建,而隐藏的模型不会在模型浏览器中列出。你能帮我解决这个问题吗?请参见编辑和其他问题,它们非常有效!,非常感谢您的快速响应和解决方案