如何通过Autodesk Forge API属性查询接口获取Revit标准类别?
解决Autodesk Forge属性查询接口无法获取Standard Revit Category的问题
问题分析
你基于Autodesk Forge属性查询接口开发API端点时,遇到了无法获取Standard Revit Category(如“Revit Wall”)的问题:
- 基础参数(
objectid、name、externalId等)可正常查询,自定义参数需指定精确路径(支持通配符) - 该类别值在模型中可见,但Viewer选中元素时不显示,且无论在
fields数组传入什么路径(包括__category__)都无法通过API获取
解决方案
1. 直接查询顶级category字段
Standard Revit Category属于系统级元数据,并不在properties嵌套结构中,而是作为元素的顶级字段存在。直接在fields数组中添加category即可获取:
"fields": [ "objectid", "name", "externalId", "category" ]
2. 结合模型元数据获取可读类别名称
属性查询返回的category字段是类别的GUID,若需要“Revit Wall”这类可读名称,需结合模型元数据接口:
- 调用GET
/metadata/{urn}接口,获取模型中所有类别的guid与name映射关系 - 将属性查询结果中的
categoryGUID与映射表匹配,即可得到对应的可读类别名称
3. 检查接口参数配置
确保属性查询请求的include参数包含category(默认可能仅返回properties),示例请求参数:
{ "filter": {...}, "fields": ["objectid", "name", "category"], "include": ["properties", "category"] }
验证示例
属性查询返回的元素数据片段:
{ "objectid": 123, "name": "Exterior Wall", "category": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "properties": { "Analytical Properties": { "Material": "Concrete" } } }
通过元数据接口获取的类别映射:
{ "guid": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "name": "Revit Wall", "children": [] }
两者匹配后即可得到目标类别名称。
内容的提问来源于stack exchange,提问作者Manuel Gasteiger
相关产品推荐
相关产品推荐

