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

如何在已初始化Autodesk Viewer的应用中使用Autodesk Tandem Viewer?

问题解答

可以在已初始化Autodesk Viewer的应用中使用Tandem Viewer,但不能重复调用Autodesk.Viewing.Initializer,且需调整Tandem的初始化逻辑来避免环境配置冲突。

错误原因分析

你遇到的Cannot read properties of undefined (reading 'ROOT')错误,是因为重复调用Autodesk.Viewing.Initializer时环境配置逻辑冲突:

  • 第一次初始化已将Viewer环境设置为AutodeskProduction2,第二次调用传入DtProduction环境后,EnvironmentConfigurations[getEnv()]无法匹配到对应配置,导致config为undefined,访问config['ROOT']触发报错。

正确实现方式

方案1:统一初始化兼容两者

如果还未初始化Viewer,可在第一次Autodesk.Viewing.Initializer中同时配置Viewer和Tandem所需参数:

Autodesk.Viewing.Initializer({
  env: 'AutodeskProduction2',
  api: this.bEmea ? 'streamingV2_EU' : 'streamingV2',
  getAccessToken: accessToken,
  // 添加Tandem相关配置
  dtEnv: 'DtProduction',
  dtApi: 'dt'
}, () => {
  // 初始化常规Viewer
  const viewer = new Autodesk.Viewing.GuiViewer3D(container);
  viewer.start();
  
  // 初始化Tandem Viewer(需确保已加载Tandem相关脚本)
  const tandemOptions = {
    productId: 'Digital Twins',
    corsWorker: true,
    accessToken: accessToken
  };
  // 直接创建Tandem Viewer实例,无需再次调用Initializer
  const tandemViewer = new Autodesk.DtViewer(container, tandemOptions);
});

方案2:已初始化Viewer后添加Tandem

如果已经完成了Viewer的初始化,不要再次调用Autodesk.Viewing.Initializer,直接手动配置Tandem的端点并创建实例:

// 手动指定Tandem的服务端点,避免依赖环境配置
const tandemOptions = {
  endpoint: 'https://dt.autodesk.com', // Tandem生产环境端点
  productId: 'Digital Twins',
  corsWorker: true,
  accessToken: accessToken
};

// 直接创建Tandem Viewer实例
const tandemViewer = new Autodesk.DtViewer(container, tandemOptions);

关键注意事项

  • 确保仅加载一次Autodesk Viewer和Tandem相关的JavaScript脚本,避免重复加载导致的冲突。
  • Tandem Viewer基于Autodesk Viewer构建,无需重复初始化核心Viewer环境,直接创建Autodesk.DtViewer实例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:36:12