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

关于在Autodesk Forge Viewer中实现工程量提取(Quantity Take-off)功能的技术问询

嘿,这两个问题问到点子上了,我来给你拆解清楚:

1. 能否在Autodesk Forge Viewer中实现工程量提取(Quantity Take-off)功能?

当然可以!不过得明确一点:Forge Viewer本身不直接内置完整的工程量提取工具,但它提供了足够强大的API和数据访问能力,完全支持你自主实现这个功能。

核心实现思路围绕模型数据的获取与处理:

  • 首先,通过Viewer的model.getData()方法可以获取模型的元数据,包括各类构件的属性信息(比如材质、尺寸、构件类型等)
  • 对于几何工程量数据,你有两种路径:一是如果模型在设计阶段(比如Revit、Inventor)就已经自带工程量属性(如体积、面积、长度参数),直接读取这些属性会更准确;二是通过getFragmentList()获取构件的几何片段,再调用computeBBox()等方法计算体积、面积这类几何数据
  • 拿到数据后,你可以根据需求做统计、分类,甚至生成结构化的工程量报表
2. 基于特定条件的部分工程量提取,有没有适用的Forge Viewer扩展?

官方并没有专门针对“工程量提取”的现成扩展,但有几个实用的方向可以参考,或者自己定制开发扩展:

  • 自定义选择+提取扩展:这是最灵活的方案。你可以基于Viewer的选择API开发专属扩展,实现:
    • 矩形框选:监听鼠标的按下、移动、释放事件,构建矩形区域,调用API筛选出区域内的构件
    • 属性筛选:通过viewer.search()方法,根据指定的属性值(比如“材质=钢材”)筛选目标构件
      选中构件后,再批量提取它们的工程量数据即可
  • 基于官方测量扩展二次开发:Viewer自带的Autodesk.Viewing.Measure扩展支持手动测量长度、面积、体积,如果要实现自动化批量提取,可以基于它的底层API做拓展,减少重复造轮子的工作量
  • 社区开源参考:很多开发者会分享自己实现的工程量提取类扩展,你可以参考这些开源代码的逻辑,再根据自己的需求调整优化。

给你贴个简单的代码片段,演示如何读取选中构件的体积属性:

// 获取当前选中的构件ID列表
const selectedDbIds = viewer.getSelection();
const currentModel = viewer.model;

// 遍历选中构件,读取体积属性
selectedDbIds.forEach(dbId => {
  currentModel.getProperties(dbId, (props) => {
    // 查找名为"Volume"的属性(以Revit模型为例)
    const volumeProperty = props.properties.find(prop => prop.displayName === "Volume");
    if (volumeProperty) {
      console.log(`构件ID ${dbId} 的体积:${volumeProperty.displayValue}`);
    }
  });
});

内容的提问来源于stack exchange,提问作者Amit Mandal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 15:37:40