如何检索元素属性及获取BIM 360项目URN以调用指定API
关于BIM 360元素属性检索与URN获取的实操指南
嘿,我来帮你拆解这两个Forge API相关的问题——都是和BIM 360模型数据交互时的核心步骤:
1. 如何检索元素属性(项目元数据)?
要获取模型里的元素属性,核心是用Model Derivative API的元数据属性端点,步骤如下:
- 首先确保你拿到了有效的OAuth 2.0访问令牌,权限需要包含
data:read(这是调用数据类API的基础,得先通过Forge的认证流程获取)。 - 准备好目标模型的URL安全Base64编码URN(这个就是第二个问题要解决的,先记下来)。
- 第一步先调用
GET /modelderivative/v2/designdata/{urn}/metadataAPI,拿到模型的元数据节点列表,找到你要查询的模型对应的guid(每个节点代表一个模型或嵌套的构件)。 - 接着调用目标端点:
GET /modelderivative/v2/designdata/{urn}/metadata/{guid}/properties,把上面拿到的urn和guid填进去。 - 响应返回的JSON里就包含了该节点下所有元素的属性,比如族名称、类型参数、自定义属性等,你可以根据业务需求解析这些数据。
2. 如何获取BIM 360项目的URL安全Base64编码URN?
BIM 360的文件存储在Docs的项目存储桶里,要生成符合要求的URN,得按以下步骤来:
- 第一步:获取项目存储桶和文件信息
- 调用BIM 360 Docs API的
GET /data/v1/projects/{project_id}/storage,拿到该项目对应的bucketKey(格式通常是wip.dm.prod.{project_id})。 - 调用
GET /data/v1/projects/{project_id}/items,找到你要处理的文件,记录它的itemId(文件ID)和最新版本的versionId。
- 调用BIM 360 Docs API的
- 第二步:构造原始URN
把上面的信息拼成标准的对象存储URN格式:urn:adsk.objects:os.object:{bucketKey}/{itemId}/{versionId} - 第三步:转换为URL安全的Base64编码
- 先把原始URN字符串做普通Base64编码。
- 替换掉URL不安全的字符:把
+换成-,/换成_,然后去掉末尾所有的=(因为Base64填充符=在URL里可能会有问题)。 - 如果你用Forge官方SDK(比如Node.js的
forge-apis),可以直接用内置的encodeURN方法自动完成这个转换,省得自己处理字符替换,比如:const forge = require('forge-apis'); const safeUrn = forge.MetadataApi.encodeURN(originalUrn);
这样生成的URN就可以直接用于Model Derivative API的各个端点了。
内容的提问来源于stack exchange,提问作者user11641191
相关产品推荐
相关产品推荐

