Forge Viewer NWC模型重建AEC数据调用computeLevels报myData未定义错误
报错产生原因
- AEC扩展未完成加载:
Autodesk.AEC.AecModelData依赖AEC相关扩展的预加载,扩展未完全初始化就调用方法时,内部绑定的属性结构还未生成,会触发myData读取失败。 - levels参数格式不符合要求:
computeLevels方法要求传入的levels必须是从Viewer官方接口返回的标准楼层结构,手动拼接的levels数组缺少内部绑定的myData所属对象,会触发该错误。 - 调用时机过早:模型未完全加载、属性数据未解析完成时就调用方法,
viewer.model关联的元数据还未挂载,方法内部读取对应属性时找不到目标对象。 - NWC模型缺失楼层属性:Navisworks导出NWC时未勾选导出楼层相关选项,或原合并模型本身无有效标高数据,方法读取楼层关联结构时会找不到对应属性。
解决方案
- 优先预加载AEC扩展,等待扩展加载完成后再执行逻辑,示例代码如下:
// 等待AEC楼层扩展加载完成 await viewer.loadExtension('Autodesk.AEC.LevelsExtension');
- 不要手动构造levels参数,从已加载的AEC扩展中获取标准楼层数据再传入:
const levelsExt = viewer.getExtension('Autodesk.AEC.LevelsExtension'); const standardLevels = levelsExt.levels; const aecdata = Autodesk.AEC.AecModelData.computeLevels(standardLevels, viewer.model);
- 调整调用时机,将逻辑放到模型完全加载的回调中执行,可监听
Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT事件,或放在viewer.loadModel的成功回调内执行。 - 检查NWC导出配置:在Navisworks导出NWC时,确认勾选了导出Revit层级的相关选项,确保合并的源模型中至少包含一组有效的标高数据。
内容的提问来源于stack exchange,提问作者sercanduyar
相关产品推荐
相关产品推荐

