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

开发自定义项目:如何通过Autodesk Forge Viewer查看Autodesk Docs中的3D模型?

自定义Autodesk Forge Viewer查看Autodesk Docs模型完整步骤

一、权限配置(解决2-legged访问拒绝核心)

  • 绑定Forge应用到Autodesk Docs账户:在Autodesk开发者中心创建的Forge应用中,进入「Autodesk Docs Integration」页面,绑定目标BIM 360/Autodesk Docs项目账户,未绑定会直接导致访问被拒。
  • 配置正确的API权限:Forge应用的权限必须勾选data:read、bucket:read;若需修改模型则额外勾选data:write。
  • 配置Docs项目权限:登录Autodesk Docs,将Forge应用对应的服务账户(格式为forgeapps-{你的Client ID}@autodesk.com)添加到目标项目,至少赋予「查看者」角色。
  • 验证2-legged Token有效性:调用认证接口https://developer.api.autodesk.com/authentication/v1/authenticate,参数grant_type=client_credentials、scope=data:read,返回的Token需包含data:read权限,可通过GET /authentication/v1/checktoken接口验证。

二、获取模型的URN(Viewer加载必备)

  1. 获取Hub ID:调用GET /project/v1/hubs接口,拿到目标Autodesk Docs账户对应的Hub ID。
  2. 获取项目ID:调用GET /project/v1/hubs/{Hub ID}/projects接口,筛选目标项目的ID。
  3. 获取模型Item:调用GET /project/v1/projects/{项目ID}/items接口,找到已完成格式转换的3D模型文件(如.rvt、.step)。
  4. 生成可用于Viewer的URN:从Item的relationships.derivatives.data.id字段拿到原始URN,对其进行无换行的Base64编码,得到Viewer所需的URN格式。

三、集成Forge Viewer到自定义项目

  • 创建Viewer容器:在HTML中添加一个带ID的容器元素,示例:
    <div id="forgeViewer" style="width: 100%; height: 800px; border: 1px solid #ccc;"></div>
    
  • 引入Viewer资源:加载Autodesk官方的Viewer CSS和JS文件(使用最新稳定版本),示例:
    <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css">
    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
    
  • 初始化并加载模型:编写JS代码完成Viewer初始化与模型加载,示例:
    const viewerOptions = {
      env: 'AutodeskProduction',
      getAccessToken: (callback) => {
        // 传入有效的2-legged Token,注意Token有效期为1小时,需实现自动刷新逻辑
        callback('你的2-legged Access Token', 3600);
      }
    };
    
    Autodesk.Viewing.Initializer(viewerOptions, () => {
      const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
      viewer.start();
      const modelUrn = 'urn:base64编码后的模型URN';
      Autodesk.Viewing.Document.load(modelUrn, 
        (doc) => {
          const defaultView = doc.getRoot().getDefaultGeometry();
          viewer.loadDocumentNode(doc, defaultView);
        },
        (error) => {
          console.error('模型加载失败:', error);
        }
      );
    });
    

四、常见问题排查

  • 若仍出现访问被拒:检查Token的scope是否包含data:read,确认Forge应用已绑定目标Docs项目,且服务账户在Docs项目中有合法权限。
  • 模型加载失败:确认模型已完成格式转换(可在Autodesk Docs中查看是否能正常预览),检查URN的Base64编码是否正确(无换行、无多余字符)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:10:14