【Code With SOLO】用 TRAE SOLO 从零开发 Tekla 焊接清册自动提取插件,让钢结构焊缝统计从手工测量变为秒级输出

1. 摘要

用 TRAE SOLO 开发了一款 Tekla Structures 2023 焊接清册插件,实现了从 Tekla 三维模型中自动提取零件间焊缝数据(焊缝长度、板厚、材质),并一键写入 WPS 表格。原本需要人工逐个零件测量焊缝、手动填写表格,每条焊缝耗时 2-3 分钟,现在选择零件后 1 秒内即可完成提取和写入,准确率远超人工。

2. 背景

我是一名钢结构详图工程师,日常工作是在 Tekla Structures 中完成钢结构建模后,需要统计每个节点处零件之间的焊缝信息,包括焊缝长度、板厚、材质等,并填写到焊接清册表格中。一个普通桥梁项目通常有上千条焊缝,传统做法是:

  • 在 Tekla 模型中逐个点选零件,人工判断接触区域
  • 手动测量焊缝长度
  • 查看零件属性获取板厚和材质
  • 逐条填写到 Excel/WPS 表格

这个过程极其繁琐,一个项目往往需要 2-3 天,且容易出错。我希望能用 AI 编程工具来解决这个问题。

3. 实践过程

3.1 任务拆解

我将整个任务拆解为以下核心模块:

  1. Tekla 零件选择与查找 — 支持交互选择和按零件名批量查找
  2. 焊缝检测算法 — 两种模式:
    • 模式1:利用 Tekla API 创建四周焊缝,经去重、厚度处理后提取
    • 模式2:自研几何算法,通过边面投影法检测焊缝段
  3. 截面/材质提取 — 解析 PL16、PL8×1000 等截面字符串,提取板厚
  4. CAD 文字提取 — 从 AutoCAD/中望 CAD 中提取零件编号
  5. WPS 表格写入 — 通过 COM 接口自动写入焊接数据
  6. 内存数据库 — 缓存模型数据加速零件查找

3.2 使用 SOLO 的能力

在整个开发过程中,TRAE SOLO 发挥了关键作用:

代码生成与架构设计

  • SOLO 帮我设计了策略模式架构来处理模式1的多种焊缝场景(全闭合、单组保留厚度、单组去除厚度、多组),让代码清晰可维护
  • 自动生成了 WPF 界面的 XAML 布局和后台代码
  • 帮助实现了 BFS/DFS 图算法用于焊缝路径的连通性检测和最长路径查找

API 文档查询与适配

  • Tekla API 的 Weld、PolygonWeld、Solid 等对象用法复杂,SOLO 通过查询项目 help 文件夹中的 XML 文档,准确使用了 GetWeldGeometriesGetCoordinateSystemGetCutPart 等方法
  • AutoCAD 和中望 CAD 的 COM 接口差异,SOLO 帮我实现了双平台兼容
  • WPS 的 COM 接口(KET.Application/KWps.Application)也是 SOLO 查阅文档后正确调用的

复杂算法实现

  • 厚度边识别算法:通过夹角 + 三角函数判断,角和约 180° 且长度约等于板厚/sin(角度) 的边即为厚度边
  • 环状合并算法:移除厚度边后,检测链的首尾几何连接关系,合并环状链
  • 两次 BFS 树的直径算法:在模式2中用于找最长简单路径
  • GDI+ GraphicsPath 多边形包容测试和交点裁剪

调试与问题修复

  • SOLO 帮我排查了坐标系转换问题:Tekla Weld 使用局部坐标系,需要通过 TransformationPlane 转换到全局坐标
  • 解决了 COM 对象释放问题,避免内存泄漏
  • 修复了 protobuf-net 序列化在数据库持久化中的兼容性问题

3.3 关键 Prompt 示例

请帮我实现模式1的焊缝处理流程:
1. 对选中零件创建 +X -X +Y -Y +Z -Z 共6条四周焊缝
2. 对6条焊缝进行路径签名去重
3. 根据去重后的焊缝组数和闭合状态,使用策略模式选择不同处理逻辑
4. 去除厚度焊缝时,需要识别长度≈板厚/sin(角度)的边并移除
5. 移除后分割链,检测环状连通性并合并
帮我实现模式2的焊缝段检测算法:
遍历次零件的边和主零件的面,判断边端点到面的距离是否在容差内,
使用GDI+ GraphicsPath做多边形包容测试和交点裁剪,
将边裁剪到面范围内作为焊缝段

3.4 踩过的坑

  1. Tekla Weld 坐标系问题:Weld.GetWeldGeometries 返回的坐标是局部坐标系,需要通过 weld.GetCoordinateSystem() 获取变换矩阵转换到全局坐标,否则所有点坐标都是错的
  2. 四周焊缝去重:6 个方向创建的焊缝中,很多方向实际上是几何相同的(质心距 < 1mm),需要基于路径签名去重,否则会产生大量重复数据
  3. 厚度边判定:不能简单用长度==板厚来判断,因为斜面的厚度边长度 = 板厚/sin(角度),需要结合夹角信息综合判断
  4. COM 接口兼容性:WPS 不同版本的 ProgID 不同(KET.Application vs KWps.Application),需要逐个尝试
  5. 模型数据库性能:56824 个构件、290468 个零件的全量加载太慢,改用 protobuf-net 序列化 + 按需加载方案

4. 成果展示

项目规模

  • 49 个 C# 源文件,约 7500+ 行代码
  • 6 个功能模块:Tekla 操作、CAD 操作、WPS 操作、通用工具、ZWcad 封装、主程序
  • .NET Framework 4.8 + WPF 架构

核心架构

┌─────────────────────────────────────────────────┐
│              MainApplication (WPF UI)            │
└──────────────────────┬──────────────────────────┘
           ┌───────────┼───────────┐
           ▼           ▼           ▼
   ┌──────────────┐ ┌────────┐ ┌──────────┐
   │ TeklaSelector│ │ 模式1  │ │ 模式2    │
   │ 零件选择/查找 │ │ 策略模式│ │ 几何算法 │
   └──────┬───────┘ └───┬────┘ └────┬─────┘
          │             │          │
          ▼             ▼          ▼
   ┌──────────────────────────────────────┐
   │     Common (Logger/Database/Data)    │
   └──────────┬──────────┬───────────────┘
              ▼          ▼
     ┌────────────┐ ┌──────────┐
     │ WPS输出    │ │ CAD提取  │
     └────────────┘ └──────────┘

运行效果

模式1运行日志示例(PL8×1000 板与 PL56 板焊接):

  • 创建 6 方向四周焊缝 → 路径去重后保留 1 组
  • 识别出 2 条厚度边(8mm 和 10.3mm)
  • 移除厚度边后分割为 2 条连续链(1647mm + 1568mm)
  • 自动创建 2 条多边形焊缝并写入 WPS

模式2运行日志示例(同组零件):

  • 边面投影检测出 36 段焊缝
  • 去重后分离出 1 条厚度段
  • BFS 最长路径查找出 2 个连通组(1568mm + 902mm)
  • 两次 BFS 树直径算法找到最长简单路径
  • 自动创建焊缝并写入 WPS

数据库能力

  • 首次构建:扫描模型中 56824 个构件、290468 个零件
  • 持久化:protobuf-net 序列化为 .bin + .idx 文件
  • 二次启动:从文件加载索引仅需 100ms,按需加载零件详情

5. 效果与总结

提效效果

对比项 人工操作 使用插件
单条焊缝统计 2-3 分钟 < 1 秒
批量焊缝(确认按钮) 需逐个查找 自动查找+接触检测+批量处理
1000 条焊缝项目 2-3 天 约 30 分钟
准确率 依赖经验,易出错 算法精确,日志可追溯

SOLO 在流程中做了什么

  1. 架构设计:策略模式、模块分层、接口定义
  2. 算法实现:BFS/DFS 图算法、几何投影、多边形裁剪、厚度边识别
  3. API 适配:Tekla/CAD/WPS 三个 COM 接口的正确调用
  4. 调试修复:坐标系转换、COM 释放、序列化兼容性
  5. 代码质量:日志系统、异常处理、DPI 适配

可复用的方法

  1. 策略模式处理多场景:焊缝处理的 4 种策略(全闭合/单组保留/单组去除/多组)可以推广到其他多场景业务逻辑
  2. Tekla API 坐标系转换:Weld → PolygonWeld 的坐标转换方法是 Tekla 二次开发的通用技巧
  3. COM 接口多平台兼容:WPS/AutoCAD/中望 CAD 的 ProgID 自动检测和连接模式
  4. protobuf-net 按需加载:大型模型数据的索引+按需加载方案

开发感悟

这个项目让我深刻体会到 AI 编程的威力。Tekla 二次开发本身门槛很高——需要理解三维几何算法、COM 互操作、坐标系变换等专业知识。传统方式下,一个有经验的开发者完成这个项目至少需要 2 周。而借助 TRAE SOLO,我只需要清晰地描述业务逻辑和算法思路,SOLO 就能生成正确的代码,并且能够查阅 API 文档确保方法调用的准确性。

最让我惊喜的是 SOLO 对复杂算法的实现能力——两次 BFS 树直径算法、环状链合并、厚度边三角函数判定,这些都不是简单的 CRUD 代码,而是需要深入理解图论和计算几何的算法。SOLO 不仅实现了,而且代码结构清晰、注释完整。

**一句话总结:TRAE SOLO 让专业领域的二次开发从"能不能做"变成了"怎么描述清楚需求"——只要你能想清楚,SOLO 就能帮你实现。

**
忘说了,其实这个帖子也是SOLO写的