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

已有modelGuid和projectGuid,如何从Autodesk Cloud取模型并在Viewer3D展示?

云端Revit项目在Autodesk Viewer中展示的实现方案

前置要求

  • 你的Forge应用已完成认证,且获得对应ACC/BIM 360项目的viewables:read权限(注意这是云端项目专属权限,和OSS存储桶权限不通用)
  • 已拿到有效的projectGuid和modelGuid(ACC项目ID是长字符串,BIM 360是数字开头的ID)

具体实现步骤

1. 获取模型的可查看资源ID(Viewable ID)

不需要走本地文件上传转换的流程,直接通过Forge Data Management API查询:

  • 先调用GET /data/v1/projects/{projectGuid}/items/{modelGuid}/versions,获取该模型的最新版本ID
  • 再调用GET /data/v1/projects/{projectGuid}/versions/{versionId},从返回结果里提取relationships.viewable.data.id,这就是你要的Viewable ID

2. 生成Viewer专用访问令牌

调用Forge认证接口获取2-legged令牌,必须包含data:read和viewables:read权限范围,同时指定令牌的受众(audience)为目标项目的URN:

  • BIM 360项目受众格式:urn:adsk.dtm:{projectGuid}
  • ACC项目受众格式:urn:adsk.aec:project:{projectGuid}

3. 初始化Autodesk Viewer

前端代码里用拿到的令牌和Viewable ID构造正确的URN,初始化Viewer:

const initOptions = {
  env: 'AutodeskProduction2', // 云端项目必须用这个环境
  accessToken: '你的2-legged令牌'
};

Autodesk.Viewing.Initializer(initOptions, () => {
  const viewerContainer = document.getElementById('viewer-container');
  const viewer = new Autodesk.Viewing.GuiViewer3D(viewerContainer);
  viewer.start();

  // 构造云端模型的URN
  const viewableUrn = `urn:adsk.viewing:fs.file:${viewableId}/output/`;
  Autodesk.Viewing.Document.load(
    viewableUrn,
    (doc) => {
      const defaultView = doc.getRoot().getDefaultGeometry();
      viewer.loadDocumentNode(doc, defaultView);
    },
    (err) => {
      console.error('模型加载失败:', err);
    }
  );
});

常见错误排查

  • 403权限错误:检查你的Forge应用是否被添加到目标ACC/BIM 360项目中,或者令牌的权限范围是否包含viewables:read
  • URN格式错误:云端模型的URN必须带/output/后缀,不能用本地OSS的URN格式
  • 环境参数错误:初始化Viewer时必须指定AutodeskProduction2,用默认环境会导致云端资源加载失败
  • 版本ID混淆:不要直接用modelGuid当版本ID,必须先查询模型的最新版本ID再调用接口

内容的提问来源于stack exchange,提问作者Gustavo da Costa e Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:42:20