如何通过APS Viewer获取Revit linkedDocuments的元数据(如链接名称)
通过APS Viewer获取Revit链接文档元数据的方法
核心逻辑
APS Viewer中Revit链接文档的元数据(如名称),可结合Viewer的AEC扩展数据与Model Derivative API获取,或直接从已加载的模型实例中提取。
具体实现步骤
1. 从Viewer AEC数据中获取链接文档的URN
利用Autodesk.AEC.AecPropertiesExtension扩展,通过你已有的documentId和instanceId获取对应链接文档的URN:
const aecExt = viewer.getExtension('Autodesk.AEC.AecPropertiesExtension'); const linkData = aecExt.getDocumentInfo(documentId, instanceId); const linkUrn = linkData.documentUrn; // 链接文档的唯一标识
2. 调用Model Derivative API获取元数据
使用获取到的linkUrn,调用Model Derivative的获取模型清单接口,解析链接文档的元数据:
// 需确保accessToken具备data:read权限 fetch(`https://developer.api.autodesk.com/modelderivative/v2/designdata/${encodeURIComponent(linkUrn)}/manifest`, { headers: { 'Authorization': `Bearer ${accessToken}` } }) .then(res => res.json()) .then(manifest => { const linkName = manifest.name; // 直接获取链接文档名称 console.log('链接名称:', linkName); // 额外元数据(如文件类型、创建时间等)可从manifest的metadata节点或root属性中提取 });
3. 直接从已加载模型中提取(简化方式)
如果链接文档已加载到Viewer中,可遍历模型队列直接获取元数据:
viewer.impl.modelQueue().getModels().forEach(model => { if (model.getDocumentId() === documentId && model.getInstanceId() === instanceId) { const linkName = model.name; console.log('链接名称:', linkName); // 更多元数据可从model.getData().metadata中查询 } });
注意点
- 调用API时需确保accessToken拥有
data:read权限,否则会返回权限错误。 - 处理嵌套链接(链接文档内还有子链接)时,需递归重复上述步骤获取层级元数据。
内容的提问来源于stack exchange,提问作者anthip
相关产品推荐
相关产品推荐

