You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AEC Data Model API获取构件材质、质量及体积数据的技术问询

解决方案:AEC Data Model API 获取屋顶材质、门体积及质量计算相关数据

一、屋顶构造层材质获取

屋顶的分层材质信息存储在类型(Type)的Layers引用中,而非直接的Material类引用。需调整查询逻辑:

  • 在Type的references中加入「Layers」过滤条件;
  • 遍历每个Layer节点,提取其关联的Material信息,即可对应Revit界面中「构造→编辑结构」里的Function与Material映射。

二、门的体积与质量计算

门体积获取

门无体积返回通常有两个原因:

  1. Revit族未启用体积计算:需先在Revit中确认门族的「体积」参数已开启并可计算;
  2. API查询过滤过严:不要仅过滤["Volume"],可放宽条件获取所有属性,或补充本地化属性名(如中文环境的「体积」)确保覆盖。

质量计算优化

材质密度无需从外部库映射,可直接通过Material的properties获取(属性名通常为「Density」),结合体积参数用公式质量=体积×密度计算即可。

三、修改后的GraphQL查询及变量

查询语句

query GetElementsWithMaterialsAndVolume($elementGroupId: ID!, $elementsFilter: String!) {
  elements: elementsByElementGroup(
    elementGroupId: $elementGroupId
    filter: { query: $elementsFilter }
    pagination: { limit: 500 }
  ) {
    results {
      id
      name
      category
      alternativeIdentifiers {
        revitElementId
        externalElementId
      }
      # 放宽属性过滤,避免漏过不同命名的体积参数
      properties {
        results {
          name
          value
          unit
        }
      }
      # 获取类型引用
      references(filter: { names: ["Type"] }) {
        results {
          value {
            name
            # 获取墙、门的直接关联材质
            references(filter: { names: [
              "Structural Material",
              "Finish Material",
              "Material",
              "Interior Finish",
              "Exterior Finish",
              "Material Door",
              "Material Frame",
              "Material Ironmongery"
            ]}) {
              results {
                value {
                  name
                  # 获取材质密度用于质量计算
                  properties(filter: { names: ["Density"] }) {
                    results {
                      name
                      value
                      unit
                    }
                  }
                }
              }
            }
            # 获取屋顶分层结构及对应材质
            references(filter: { names: ["Layers"] }) {
              results {
                value {
                  name
                  references(filter: { names: ["Material"] }) {
                    results {
                      value {
                        name
                        properties(filter: { names: ["Density"] }) {
                          results {
                            name
                            value
                            unit
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

变量

{
  "elementGroupId": "{modelElementGroupId}",
  "elementsFilter": "(category in ['Walls', 'Doors', 'Roofs']) and (property.name='Element Context' and property.value='Instance')"
}

关键调整说明

  1. 多类别适配:将查询别名从walls改为elements,兼容墙、门、屋顶的统一查询;
  2. 属性覆盖:移除properties的名称过滤,确保不会漏过不同命名的体积参数;
  3. 屋顶材质逻辑:新增「Layers」引用遍历,对应Revit屋顶构造层的材质信息;
  4. 密度直接获取:在Material节点中加入密度属性查询,省去外部库映射步骤;
  5. 过滤语法修正:修正原过滤条件的语法错误,符合AEC Data Model API的标准过滤规则。

内容的提问来源于stack exchange,提问作者Praful Bharate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:43:13