Forge Viewer restoreState无法加载完整建筑视图及残留截面问题
Forge Viewer
restoreState 问题解决方案 问题1:恢复完整建筑视图时无法显示整个建筑
你的状态配置仅包含viewport和cutplanes,缺少objectSet字段——该字段记录了模型构件的可见性状态,初始通过viewer.getState()获取的完整状态是包含这个字段的。仅恢复视角参数不会自动恢复所有构件的可见性,导致无法显示整个建筑。
解决方法:
- 保存完整状态:直接使用
viewer.getState()的完整返回值作为保存的状态,不要手动截取部分内容。 - 手动恢复可见性:如果已保存的状态缺失
objectSet,在恢复状态后强制显示所有构件并适配视图:
viewer.restoreState(yourSavedState, () => { viewer.showAll(); // 显示所有模型构件 viewer.navigation.fitToView(); // 自动适配到整个建筑范围 });
注:viewer.navigation.setRequestHomeView(true)需要配合viewer.navigation.triggerRequestHomeView()才会触发回家视图,不如直接用fitToView()更直接有效。
问题2:恢复完整视图后残留截面分析深色轮廓
这是因为截面分析工具的状态没有被完全清除,残留了之前楼层的高亮轮廓。需要在恢复完整视图时手动清理截面工具状态和高亮。
解决方法:
在恢复状态的回调中添加以下代码,确保截面工具被关闭且高亮被清除:
viewer.restoreState(yourSavedState, () => { // 关闭所有截面分析 const sectionExtension = viewer.getExtension('Autodesk.Section'); if (sectionExtension) { sectionExtension.removeAllSections(); } // 清除选中状态和残留高亮 viewer.clearSelection(); viewer.impl.clearHighlight(); });
内容的提问来源于stack exchange,提问作者Sudhir Samantaray
相关产品推荐
相关产品推荐

