【问题标题】:Forge viewer: how to fix 'toggleVisibility' of undefined for Hidden models selected from model browser?Forge 查看器:如何修复从模型浏览器中选择的隐藏模型未定义的“toggleVisibility”?
【发布时间】:2020-01-19 02:02:58
【问题描述】:

我正在使用 Autodesk forge viewer 7.2.0 版本并尝试加载多个模型。对于少数模型,我使用 modelOption '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)

经过进一步调查,我发现隐藏模型的可见性管理器为空,这导致了问题,但是当我执行 viewer.showModel(hiddenModel) 时,它具有可见性管理器并且模型浏览器按预期工作。

我希望当点击隐藏模型的眼睛图标时,它应该在内部执行 showModel() 并将模型加载到查看器。如果我有不同的看法或建议我解决这个问题,有人可以建议我吗?

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    您可以像下面这样搭载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(new Autodesk.Viewing.Extensions.ViewerModelStructurePanel(this.viewer, 'Model browser', {hideSearch: false}))。我认为因此模型结构被重建并且隐藏模型未在模型浏览器中列出。你能帮我解决这个问题吗?
    • 其他问题见编辑和here
    • 完美运行!非常感谢您的快速响应和解决方案
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 2022-08-11
    • 2018-06-18
    • 2020-10-14
    • 2019-10-06
    • 1970-01-01
    • 2013-01-01
    • 2018-07-16
    相关资源
    最近更新 更多