我正在使用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)
通过进一步调查,我发现隐藏模型的visibleManager为null,这引起了问题,但是当我执行viewer.showModel(hiddenModel)时,它已经安装了visibleManager并且模型浏览器按预期工作。
我希望当单击隐藏模型的眼睛图标时,它应该在内部执行showModel()并将模型加载到查看器。如果我的看法有所不同,有人可以建议我还是为我提供解决方案?
答案 0 :(得分:0)
您可以像下面那样搭载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())
})