【Code with SOLO】领导问我为什么下班就走,我给他看了这个算量工具

一、摘要

我用 TRAE SOLO 开发了 AutoCAD Material Takeoff(AMT)——一款从 AutoCAD DXF 图纸中自动提取结构混凝土工程量的工具。传统方式用AutoCAD/ Bluebeam 手动测量,一个中型项目需要 2-3 天;AMT 将这个过程压缩到 30 分钟以内,提效 90%+,同时消除了人工漏项和计数误差。

二、背景T

我是一名建筑结构工程师(美国硕士,10 年经验),日常工作涉及大量海外项目的工程量提取复核。

传统流程:

  • 在 AutoCAD / Bluebeam / PlanSwift 中逐张打开 DXF 图纸
  • 手动测量每个梁、柱、板、墙的尺寸
  • 在 Excel 中逐项记录数据并汇总
  • 一个中型项目(约 30 张图纸)需要 2-3 天

痛点:

  • 重复性极高:数百个构件逐一手动测量,容易因疲劳漏项
  • 一致性差:不同人测量结果存在 10-20% 的偏差
  • 不可复用:图纸变更后需要全部重新测量
  • 溯源要求:项目对提量结果有强溯源要求,需要提供可溯源材料
  • 工具锁死:Bluebeam 年费 $440/seat x人数,中小团队负担沉重

三、实践过程

任务拆解

我将 ATM 拆解为 6个独立模块:

  1. 公共配置区:为多个CAD处理脚本提供统一路径管理和公共工具
  2. 数据初始化:导入必要计算库和局部配置
  3. DXF 解析引擎:读取图层名称、实体类型、几何信息
  4. 构件智能识别:根据图层关键词 + 几何特征自动分类
  5. 工程量计算:截面属性 × 几何长度/面积 → 混凝土体积
  6. 报告生成:输出格式化 Excel、输出可溯源的图纸文件

SOLO 能力应用

模块 1-2(基础设施层):

  • Prompt:「设计一个 Python 项目的公共配置模块,包含路径管理、日志配置和公共工具函数,支持多脚本复用」

  • SOLO 生成了配置管理框架,我补充了项目特定的路径规则和日志格式

  • 这两个模块代码量不大,但为后续开发奠定了可扩展的基础

模块 3 — DXF 解析引擎:

  • Prompt:「用 ezdxf 库读取 DXF 文件,遍历所有图层,提取图层名称、实体类型统计和几何实体信息」

  • SOLO 生成了完整的解析框架,包括图层遍历、实体分类、属性提取

  • 我在此基础上增加了图层过滤和白名单机制,跳过非结构图层

模块 4 — 构件智能识别:

  • Prompt:「根据图层名称中的关键词(COLUMN、BEAM、SLAB、FOOTING、WALL)自动分类结构构件,支持模糊匹配和别名词典」

  • SOLO 实现了正则表达式匹配 + 别名词典(COL、BEAM、SLB 等缩写)

  • 踩坑:精确匹配漏识率超 40% → 改用模糊匹配后降至 5% 以下

模块 5 — 工程量计算:

  • Prompt:「对梁构件,从 DXF 线段实体提取起点终点坐标计算长度,结合截面属性(b×h)计算混凝土体积,单位统一为 m³,增加异常值过滤」

  • SOLO 生成了计算逻辑,我补充了截面属性缺失时的兜底处理

模块 6 — 报告生成:

  • Prompt:「用 openpyxl 生成格式化 Excel 报告,包含分类汇总表和逐构件明细表数据保留 2 位小数」

  • SOLO 一次生成了完整的 Excel 生成代码

  • 我额外增加了可溯源图纸输出功能:在原图纸上标注每个构件的编号和计算结果,方便客户核对

SOLO处理过程(以Foundation脚本为例)

踩坑记录

  1. 图层命名不统一:精确匹配漏识率 40%+ → 改用关键词模糊匹配 + 别名词典,漏识率降至 5%
  2. DXF 版本兼容性:部分 R14/R2000 版本缺少实体属性 → 增加 try-except 兜底,跳过无法解析的实体并记录日志
  3. 截面信息缺失:部分图纸只有几何线段,无截面属性 → 增加从标注文字(MText/Text)中提取截面尺寸的备用逻辑
  4. 读取表格内容存在部分缺失:部分图纸表格的读取会出现构件表缺失的情况 → 增加按表格图层选择性解析,提高表格读取的成功率

四、成果展示

共享模块

共享模块 gif

基础模块识别

基础模块 gif

梁模块识别

梁模块 gif

柱模块识别

柱模块 gif

五、效率对比

工作内容 传统方式(Bluebeam) ATM 自动提取 效率提升
打开并加载图纸 < 1 分钟 yes
逐个构件测量 4-6 小时 yes
手动记录数据 2-3 小时 yes
汇总校核 1-2 小时 yes
总计(50 张图纸) 2-3 天 30 分钟 30-50 倍
图纸变更后重做 2-3 天 30 分钟 30-50 倍
人工漏项率 5-15% < 1% yes

六、核心价值

  • 造价工程师 / 承包商:投标阶段快速出量,提升报价效率
  • 结构咨询公司:多项目并行处理,降低人力成本
  • 中小型设计院:无需购买 Bluebeam($440/年x人数),降低工具成本
  • 国际工程项目:统一提量标准,消除不同人测量结果的偏差

技术亮点

  • 纯 Python 实现,无第三方 CAD 软件依赖(仅需 ezdxf + openpyxl)
  • 关键词模糊匹配 + 别名词典,适应不同设计院的图层命名规范
  • 截面属性多源提取(图层属性 → 标注文字 → 兜底默认值)
  • 结构化 Excel 输出,支持按楼层/区域/构件类型多维度汇总
  • 可溯源图纸输出,提量有理有据

可复用性

核心架构(文件解析 → 规则识别 → 数据计算 → 报告输出)可扩展至:

  • 钢结构提量(型钢截面 + 长度 → 重量)
  • 钢筋提量(从标注文字提取钢筋信息 → BBS)
  • 机电管线提量(按系统分类 → 长度统计)
  • 装修工程量(按区域分类 → 面积统计)

七、SOLO 在开发中的角色

环节 SOLO 的贡献 占比
代码生成 4 个核心模块的初始代码均由 SOLO 生成 ~60%
问题排查 ezdxf API 用法、openpyxl 样式设置等 ~20%
代码优化 性能优化(大文件处理)、异常处理完善 ~15%
文档撰写 Excel 报告格式化逻辑、注释生成 ~5%

最深刻的体验:SOLO 最大的价值不是「写代码」,而是「降低试错成本」。遇到不熟悉的 API 时,不再需要翻文档查 StackOverflow,直接问 SOLO 就能得到可运行的代码片段,然后把精力放在业务逻辑上。

八、后续计划

  1. 封装为 Web 版(Streamlit),降低使用门槛,
  2. 增加钢结构、砌体、机电等构件类型支持,
  3. 增加图纸批量处理和识别能力,
  4. 在国内工程群和校友群上架自动化提量服务,验证商业价值,
  5. 尝试Web版的付费商业化。

欢迎交流!如果你也从事工程造价或结构工程,或者对 DXF 解析 / Python 自动化感兴趣,欢迎在评论区讨论。