如何在Autodesk Forge API中筛选工程量算量相关元素及目标层级?
针对Autodesk Forge API的工程量算量元素筛选与层级获取方案
一、筛选工程量算量相关元素
工程量算量对应的都是实体构件元素(比如墙、楼板、门窗、管道等),要过滤掉注释、标记、视图符号这类非实体元素,可按以下步骤操作:
- 第一步:调用
GET :urn/metadata/:guid接口获取模型的类别(categories)列表,定位到实体构件类别的ID(比如墙、楼板的类别ID),排除名称带"Annotation""Symbol"字样的注释、符号类category。 - 第二步:调用
GET :urn/metadata/:guid/properties接口时,添加过滤条件:- 按元素类型过滤:用
filter=objectType eq 'GeometryObject',直接排除注释类的AnnotationObject; - 按算量属性过滤:如果需要确保元素有可算量属性(比如体积、面积),用
filter=attributes[Volume] exists或filter=attributes[Area] exists,只保留带这些属性的元素; - 结合类别过滤:把第一步拿到的实体category ID作为条件,比如
filter=categoryId eq 'xxx',精准筛选指定类别的构件。
- 按元素类型过滤:用
二、获取目标层级的元素
如果拿到所有levels但无法定位目标层级,可通过以下方式处理:
- 先调用
GET :urn/metadata/:guid接口,在返回的levels数组里找到目标层级的名称或ID; - 接着在查询元素属性时,添加层级过滤条件,比如目标层级名称是"F1",就用
filter=attributes[Level] eq 'F1'(注意部分模型里层级的属性字段可能叫Level Name,需先查看模型属性结构确认字段名); - 若要直接获取目标层级下的所有算量元素,可将层级过滤和算量属性/类别过滤组合,比如
filter=attributes[Level] eq 'F1' and attributes[Volume] exists。
内容的提问来源于stack exchange,提问作者Roderik
相关产品推荐
相关产品推荐

