如何无需将模型上传至Viewer,从Manifest获取aecModelData?
无需上传至Viewer即可获取aecModelData的方法
你可以通过Autodesk Forge的Model Derivative API直接从模型Manifest中提取aecModelData,具体操作步骤如下:
1. 获取模型的Manifest文件
首先调用Forge的Manifest查询接口,获取目标模型的完整Manifest数据。请求需要携带有效的Forge访问令牌(需包含data:read权限),请求格式如下:
GET https://developer.api.autodesk.com/modelderivative/v2/designdata/{encodedUrn}/manifest
其中{encodedUrn}是你的模型URN经过Base64 URL安全编码后的字符串(编码后需去掉末尾的=符号)。
2. 从Manifest中定位aecModelData资源
遍历返回的Manifest JSON结构,找到type为AECModelData的衍生条目。通常该条目下的children数组中会包含对应的资源节点,你可以从中提取资源的urn或url字段,这就是aecModelData的资源地址。
以下是一段JavaScript示例代码,用于自动遍历Manifest并提取aecModelData的资源标识:
function findAecModelDataResource(manifest) { function traverseDerivatives(derivatives) { for (const deriv of derivatives) { if (deriv.type === 'AECModelData') { if (deriv.children?.length) { const resource = deriv.children[0].resources[0]; return resource.urn || resource.url; } } else if (deriv.children) { const result = traverseDerivatives(deriv.children); if (result) return result; } } return null; } return traverseDerivatives(manifest.derivatives); }
3. 直接请求获取aecModelData
拿到aecModelData的资源标识后,再次调用Model Derivative API获取该资源的具体数据,请求格式如下:
GET https://developer.api.autodesk.com/modelderivative/v2/designdata/{encodedUrn}/manifest/{aecResourceUrn}
同样需要携带有效的Forge访问令牌,返回的结果就是完整的aecModelData JSON数据,无需将模型加载到Viewer中。
注意事项
- 确保模型已经完成转换流程,Manifest中存在
AECModelData类型的衍生输出,否则无法提取对应数据 - 访问令牌必须具备
data:read权限,否则会返回权限错误 - 若资源地址是相对路径,需要拼接Forge API的基础域名后再发起请求
内容的提问来源于stack exchange,提问作者Igor Barcelos
相关产品推荐
相关产品推荐

