Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoBridge-CAD

用自然语言对话,生成经过结构校核的参数化桥梁方案 —— 从跨径布置到 3D 模型、BIM(IFC)、施工图纸、Word 报告一键产出。

Tests Python License Streamlit

AutoBridge-CAD 是一个开源的参数化桥梁设计 + LLM 智能体系统。你用中文描述需求("三跨连续梁桥,每跨 30 米"),AI 会把它翻译成结构参数;如果截面承载力不满足要求,AI 不会自己"编"一个答案,而是调用背后真实的矩阵位移法内力分析、GB50010 截面承载力校核和确定性搜索算法,在梁片数 / 梁高 / 主筋直径的组合空间里找到一个真正满足要求的方案,并且如实报告"找不到解"的情况——LLM 只负责理解意图,所有工程计算都由可测试、可复现的 Python 代码完成。


效果预览

AI 对话式设计 + 承载力校核

左侧用自然语言描述需求或反馈问题("现在承载力不够,能不能帮我自动调整"),AI 调用 auto_adjust_reinforcement 工具函数,在参数空间中搜索出满足承载力的方案,右侧结构分析表格与承载力校核结果同步刷新为绿色"满足"。

3D 模型预览与工程量统计

参数变化后,立面图、横截面配筋图、3D 实体模型三个视图与工程量统计(混凝土体积、桥面面积等)全部联动重算。


核心设计理念:LLM 负责理解,代码负责计算

这是本项目区别于"套壳 ChatGPT"类工具的关键。常见的 LLM+CAD 方案容易让模型自己算弯矩、算配筋,一旦模型幻觉出一个数字,用户很难察觉。AutoBridge-CAD 采用严格的 Function Calling 架构:

flowchart LR
    U["用户: 自然语言需求 / 反馈"] --> LLM["LLM 意图路由\n(GLM-4 / DeepSeek,OpenAI 兼容)"]
    LLM -- "更新参数意图" --> T1["update_bridge_params\n(Pydantic 校验/纠偏)"]
    LLM -- "自动调整配筋意图" --> T2["auto_adjust_reinforcement\n(确定性网格搜索)"]
    LLM -- "跨径布置意图" --> T3["suggest_span_layout\n(等跨/边跨缩短方案搜索)"]
    T1 --> CALC["结构计算引擎\n矩阵位移法 · GB50010 截面校核"]
    T2 --> CALC
    T3 --> CALC
    CALC --> RES["结构化 JSON 结果\n(不允许 LLM 转述为已完成的操作)"]
    RES --> UI["Streamlit 界面\n参数 / 图纸 / 3D / 报告"]
Loading
  • LLM 只做两件事:把自然语言映射成工具调用参数、把工具返回的结构化结果转述给用户。
  • 所有力学计算(内力、承载力、配筋反算)在 structural_analysis.py / fem_analysis.py / design_search.py 中用纯 Python 实现,每个函数都有对照教科书算例的 pytest 用例。
  • 搜索找不到可行解时,返回结果会明确标注"未对当前方案做任何改动",避免 LLM 把"尝试过"转述成"已完成"这类误导性表达。

功能特性

模块 说明
AI 对话式设计 中文自然语言描述跨径/截面需求,或反馈"承载力不够",AI 通过 Function Calling 调用真实计算引擎
跨径布置智能推荐 给定桥梁总长和跨数范围,在等跨/边跨缩短两类布置方案中搜索满足承载力且混凝土用量最省的方案
参数化图纸生成 基于 ezdxf 自动生成立面图、横截面配筋图(DXF,可用 AutoCAD/浩辰CAD 打开)
连续梁结构分析 矩阵位移法(FEM)求解连续梁内力,已用两跨/三跨等跨教科书算例(qL²/8、qL²/10)验证
截面承载力校核 按 GB50010 矩形应力图法计算抗弯承载力,并支持由弯矩需求反算所需配筋面积
确定性配筋搜索 承载力不足时,在梁片数 × 梁高 × 主筋直径的组合空间中搜索最小改动的可行方案,纯本地计算、不发起网络请求
3D 实体模型 基于 MeshBuilder 拉伸生成主梁/桥墩/桥台三维实体,Plotly 交互式展示(旋转/缩放/图层开关)
IFC(BIM) 导出 通过 ifcopenshell 导出 IFC4 格式模型,可导入 Revit / BIMVision 等 BIM 软件
工程量统计 自动计算桥梁总长、桥面面积、主梁/桥墩混凝土体积等
Word / Excel 报告 一键生成设计说明 Word 报告与工程量 Excel 清单
78 个 pytest 用例 结构分析、配筋搜索、跨径布置搜索、3D 建模、IFC 导出均有对照手算/教科书结果的自动化测试,CI 自动跑

本项目的结构计算基于简化假定(均布活载近似、矩形应力图法、各片梁均分内力等),仅用于方案阶段的快速试算和教学演示,不能替代正式规范校核,不能作为实际工程设计依据


快速开始

git clone <this-repository-url>
cd AutoBridge-CAD
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
streamlit run app.py

浏览器打开 http://localhost:8501 即可使用。不配置 API Key 也能正常使用参数滑块、图纸生成、3D 预览等全部功能——只有 AI 对话框需要 API Key。

配置 API Key(AI 对话功能)

AI 自然语言解析功能需要一个 LLM API Key(默认对接 DeepSeek,兼容任意 OpenAI 接口协议的服务,例如智谱 GLM)。仓库中不包含任何真实 Key,请按以下任一方式自行配置:

  1. 本地开发:复制 .env.example.env,填入你自己的 OPENAI_API_KEY(以及可选的 OPENAI_BASE_URL / OPENAI_MODEL)。
  2. 直接使用网页:打开应用后,在侧边栏"使用我自己的 API Key(可选)"里粘贴你自己的 Key 即可。该 Key 只保存在你当前浏览器会话的内存中,不会写入服务器磁盘或代码仓库。

项目结构

AutoBridge-CAD/
├── app.py                    # Streamlit 主入口
├── llm_parser.py             # LLM Function Calling 编排 + Pydantic 参数校验
├── design_search.py          # 确定性配筋/梁高搜索算法
├── span_layout_search.py     # 跨径布置搜索算法
├── structural_analysis.py    # 简支梁分析 + GB50010 截面承载力校核
├── fem_analysis.py           # 连续梁矩阵位移法
├── geometry_utils.py         # 桥梁截面几何计算
├── ifc_export.py             # IFC(BIM) 导出
├── report_utils.py           # Word 报告生成
├── export_utils.py           # 工程量统计 + Excel 导出
├── components/
│   ├── grider.py              # T 形梁横截面绘制
│   ├── rebar_layout.py        # 配筋布置与力驱动反算
│   └── solid_model.py         # 3D 实体建模
└── test/                      # pytest 测试套件

运行测试

pytest -v

已知局限

  • 活载采用简化等效均布荷载,未考虑真实车道荷载分布、冲击系数、多工况组合
  • 承载力校核假定各片梁均匀分担整体弯矩,未考虑横向分布系数
  • 暂不支持预应力混凝土构件
  • 连续梁配筋暂未区分正弯矩区(下部)与负弯矩区(上部)钢筋

欢迎通过 Issue / PR 参与改进。

License

MIT

About

An open-source LLM-driven generative design & CAD automation framework for bridge engineering

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages