You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Forge Viewer多模型加载时Document Node为空致像素对比失效求助

解决Forge Viewer 7.90.0+多模型场景下Pixel Compare扩展报错问题

针对你遇到的TypeError: can't access property "getRootNode", this.secondaryModel.getDocumentNode() is null报错,这是Viewer 7.90.0版本对Pixel Compare扩展的依赖逻辑做了调整导致的——新版本要求对比的模型必须关联有效的文档节点(Document Node),而多模型加载时如果未通过正确方式加载第二个模型,就会出现节点缺失的情况。以下是两种可行的解决办法:

方案一:通过loadDocumentNode加载secondary模型

这是官方推荐的加载方式,能确保模型自动关联对应的文档节点:

// 加载主模型(示例)
const primaryUrn = 'your-primary-model-urn';
Autodesk.Viewing.Document.load(primaryUrn, (primaryDoc) => {
  const primaryViewable = primaryDoc.getRoot().getDefaultGeometry();
  viewer.loadDocumentNode(primaryDoc, primaryViewable).then(() => {
    // 主模型加载完成后,加载secondary模型
    const secondaryUrn = 'your-secondary-model-urn';
    Autodesk.Viewing.Document.load(secondaryUrn, (secondaryDoc) => {
      const secondaryViewable = secondaryDoc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(secondaryDoc, secondaryViewable, {
        preserveView: true, // 保持当前视图位置
        keepCurrentModels: true // 保留已加载的主模型
      }).then((secondaryModel) => {
        // 初始化Pixel Compare扩展并设置secondary模型
        const pixelCompareExt = viewer.getExtension('Autodesk.PixelCompare');
        pixelCompareExt.setSecondaryModel(secondaryModel);
        // 执行后续对比操作,比如开启对比模式
        pixelCompareExt.startCompare();
      });
    }, (err) => console.error('加载secondary文档失败:', err));
  });
}, (err) => console.error('加载primary文档失败:', err));

方案二:手动为已加载的secondary模型设置文档节点

如果你的项目已经采用loadModel方式加载secondary模型,可以手动为模型关联文档节点:

// 假设已通过viewer.loadModel加载了secondaryModel
const secondaryUrn = 'your-secondary-model-urn';
Autodesk.Viewing.Document.load(secondaryUrn, (secondaryDoc) => {
  // 手动将文档根节点赋值给secondary模型的documentNode属性
  secondaryModel.documentNode = secondaryDoc.getRoot();
  // 初始化Pixel Compare扩展
  const pixelCompareExt = viewer.getExtension('Autodesk.PixelCompare');
  pixelCompareExt.setSecondaryModel(secondaryModel);
  // 执行对比操作
}, (err) => console.error('加载secondary文档失败:', err));

注意事项

  • 确保secondary模型的URN和加载的文档URN完全匹配,避免文档与模型不对应导致的节点无效
  • 加载secondary模型时必须启用keepCurrentModels: true,否则主模型会被替换,无法进行对比

内容的提问来源于stack exchange,提问作者mudo121

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:43:14