开发自定义项目:如何通过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加载必备)
- 获取Hub ID:调用
GET /project/v1/hubs接口,拿到目标Autodesk Docs账户对应的Hub ID。 - 获取项目ID:调用
GET /project/v1/hubs/{Hub ID}/projects接口,筛选目标项目的ID。 - 获取模型Item:调用
GET /project/v1/projects/{项目ID}/items接口,找到已完成格式转换的3D模型文件(如.rvt、.step)。 - 生成可用于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
相关产品推荐
相关产品推荐

