面向「AI 翻模 → 人工修正 → BIM 模型 → 工程量 + 现场管理」全链路的开放式 BIM 工作流平台。
上传 DXF 图纸 → 自动识别墙柱板梁 → 生成 3D IFC 模型 → 二三维联动在线修正 → 导出算量就绪 IFC。
- Node.js ≥ 18
- Python ≥ 3.11
- Supabase 账号(用于多端同步,可选本地模式)
git clone <repo-url>
cd bim-platform
# 前端
npm install
# Python 后端
pip install -r requirements.txt如果不需要云端同步,跳过此步。本地 localStorage 仍可正常使用。
cp apps/web/.env.example apps/web/.env.local
# 编辑 .env.local 填入你的 Supabase URL 和 anon key然后按 supabase/README.md 运行数据库迁移。
# 终端 1:Python 后端
python3 scripts/serve_ifc.py --port 8765
# 终端 2:前端开发服务器
npm run dev- 点「打开 DXF」上传图纸
- 后端自动识别墙体、柱、板、梁,生成 IFC 3D 模型
- 左侧 2D 图纸 + 右侧 3D 模型双视口联动
- 在线修正:
- 属性编辑:施工段、类型引用、实例覆盖
- Gizmo 拖拽:W 移动 / E 旋转 / R 缩放
- 2D 画墙:点「画墙」在平面图上绘制
- 墙端点编辑:选中墙按 T,拖拽红/蓝球体
- 删除:Delete 键或属性面板按钮
- 点「导出 IFC」输出修正后的 IFC
apps/web/ 前端 SPA (Vite + Three.js + web-ifc)
├─ shared/ 跨工作台共享 (数据模型、视图器、IO、持久化)
└─ workbenches/ 工作台 (studio / assemble / changes / qto / field)
scripts/ Python 后端 (FastAPI)
├─ dxf_to_ifc.py DXF→IFC 转换管线
├─ export_ifc.py IFC 修正导出
└─ serve_ifc.py HTTP 服务
supabase/ 数据库迁移 (PostgreSQL + RLS)
| 层 | 技术 |
|---|---|
| 前端框架 | Vite + vanilla JS (ES modules) |
| 3D 渲染 | Three.js 0.184 |
| IFC 读写 | web-ifc (前端) + IfcOpenShell (后端) |
| DXF 解析 | dxf-parser (前端) + ezdxf (后端) |
| 后端 | FastAPI + uvicorn |
| 认证/数据库/存储 | Supabase |
| 协同 | Supabase Realtime (远期) |
| 工作台 | 路由 | 状态 |
|---|---|---|
| 图纸修正 | #/studio |
✅ 可用 |
| 项目合模 | #/assemble |
🚧 开发中 |
| 变更管理 | #/changes |
⏳ 计划 |
| 工程量引擎 | #/qto |
⏳ 计划 |
| 现场同步 | #/field |
⏳ 计划 |
- 共线段合并:按角度分桶 → 垂直距离 < 2mm → 投影间隙 < 500mm → 合并
- 平行配对:合并段两两比较 → 平行 + 重叠 > 50% + 间距 20−600mm → 配对
- 单线墙:未配对线段按长度+碎片数推断厚度 (250mm/200mm)
闭合多段线 (4−5 点, 长宽 < 2m) + INSERT 块引用
BEAM 图层 LINE 实体 → IfcBeam (300×600mm)
闭合多段线 → 面积 > 1m² → IfcSlab
MIT