ibuilder/ModelMaker
GitHub: ibuilder/ModelMaker
一个开源、IFC 原生的自托管 AEC 平台,将建筑信息建模、施工管理门户与房地产开发财务分析整合在单一模型上,覆盖从土地获取到项目移交的全生命周期。
Stars: 0 | Forks: 1
# AEC BIM 平台 — 查看器 · GC portal · proforma

[](https://github.com/ibuilder/ModelMaker/actions/workflows/ci.yml)
[](https://github.com/ibuilder/ModelMaker/releases/latest)
[](https://github.com/ibuilder/ModelMaker/releases)


[](LICENSE)
[](https://ibuilder.github.io/ModelMaker/app/)
**这是什么** — 基于单一 IFC 索引模型的三大支柱,通过 Model / Construction / Finance 工具栏切换:
- 🧊 **BIM 平台** — 在浏览器中流式传输并创作 IFC (That Open Fragments)、QA、clash、IDS、BCF、2D 图纸
- 🏗 **GC portal** — config 驱动的模块:RFIs、submittals、change orders、pay apps (G702/G703)、CPM schedule、safety/TRIR、closeout (COBie)
- 💵 **开发 proforma** — sources & uses、S-curve draws、XIRR/NPV、JV waterfall — 直接从模型中提取数据

**[▶ 在线演示](https://ibuilder.github.io/ModelMaker/app/)** · **[⬇ 下载 (Win/macOS/Linux)](https://github.com/ibuilder/ModelMaker/releases/latest)** · **[📚 指南](https://ibuilder.github.io/ModelMaker/guide.html)** · **[📄 项目页面](https://ibuilder.github.io/ModelMaker/)**
### 快速开始 — 自托管全栈
```
docker compose --profile full up --build # web → http://localhost:8080 · api → http://localhost:8000
docker compose --profile full --profile seed run --rm seed # optional: a demo project across every module
```
或者从[最新发布版](https://github.com/ibuilder/ModelMaker/releases/latest)安装已签名的桌面应用(单项目、自动更新)。
**基于** [That Open](https://github.com/ThatOpen) (Fragments + web-ifc, MIT) · [IfcOpenShell](https://ifcopenshell.org) (LGPL) · [three.js](https://threejs.org) · [FastAPI](https://fastapi.tiangolo.com) · [Tauri](https://tauri.app) 构建。IFC 是唯一事实来源 — 没有专有格式,没有按席位授权。
## 整个生命周期,集中于一个模型
市场是各种单一工具拼凑而成的 — 可行性分析在一个工具中,BIM 在另一个中,而施工管理又在第三个中。本平台将 **获取 → 移交** 的全过程跨越在单一的 IFC 索引模型上,而竞争对手通常只覆盖其中一个切片:

| 功能 | **本平台** | Procore | Autodesk Forma¹ | TestFit | ARGUS / proforma |
|---|:--:|:--:|:--:|:--:|:--:|
| 可行性分析 + 评估 (proforma, S&U, memo) | ✅ | – | 部分 | – | ✅ |
| 生成式体量建模 + Test Fit | ✅ | – | ✅ | ✅ | – |
| BIM 创作 + clash/IDS | ✅ | 查看 | ✅ | – | – |
| 施工管理 (RFIs, COs, pay apps, 4D) | ✅ | ✅ | ✅ | – | – |
| 移交 (COBie, as-built, closeout) | ✅ | ✅ | ✅ | – | – |
| IFC 原生 / 开放 / 可自托管 | ✅ | – | – | – | – |
| 免费桌面应用 · 无按席位授权 | ✅ | – | – | – | – |
¹ Autodesk Construction Cloud 在 2026 年被重新命名为 **Autodesk Forma**。比较反映了典型的产品范围;竞争对手在其各自的切片领域都很强大 — 区别在于*在一个开放模型上的全生命周期*。
## 它能做什么 (对比 Bonsai / Revit / Navisworks)
完整映射请见 [docs/capability-matrix.md](docs/capability-matrix.md)。重点如下,除非另有说明,所有功能均在此 repo 中**构建并验证**:
- **Web 查看器** — Three.js + Fragments,流式传输大型模型,完全离线运行(本地 WASM)。
- **导航与审查** — 选择→属性、空间树、图层、隔离/隐藏、ghost、
剖面框、测量、按数据着色、设置原点/CRS。
- **协调** — 模型融合;**clash detection** (AABB broad phase + mesh
boolean narrow phase,精确穿透体积) → BCF clash topics。
- **问题** — 基于 BCF 模型的 topics/RFIs/punch/clash、视点、评论、附件、
pin;`.bcfzip` 导入/导出(与 Solibri/ACC/BIMcollab 往返交互)。
- **QA** — **IDS 验证** (ifctester),并高亮显示不合格元素。
- **4D / 5D** — 进度表↔元素映射;工程量提取 + 成本映射(几何回退)。
- **数据导出** — QTO、COBie、空间进度表 → XLSX。
- **2D 文档** — 带有尺寸标注的网格 **平面图**(网格由柱子推导得出)、**剖面图**、
**立面图** (N/S/E/W)(带有楼层线),以及包含图框的合成 **PDF 图纸**。
- **创作往返(查看器内建模)** — 包含完整工具栏的创作操作,每项操作都是一个
服务器端的 `ifcopenshell` 配方 → 后台重新发布(重新转换 + 重新索引)。GUID 稳定,
因此 pins/RFIs/clashes 得以保留。**创建:** 墙、板、柱、梁、屋顶(在模型/网格上绘制草图)。**洞口:** 门/窗挖空主体墙并填充。**编辑:** 删除、
移动、旋转、复制、逐元素 Pset 编辑。**绘图辅助:** 网格 + 角点捕捉、6 面
section box、楼层标高 overlay。已完成端到端的实际验证(上传 IFC → 添加墙 →
重新发布 → 更新 `.frag` + 重新索引)。桌面 GUI 创作通过 Blender + Bonsai 桥接实现。
- **生成式设计 — 分区 → 完全开发的 IFC 建筑 + proforma** — 针对 TestFit/Forma 的 IFC 原生
替代方案:输入市政分区包络线(地块、FAR、覆盖率、退让线、高度
限制、层高),平台会计算可建设方案(占地面积、楼层数、GFA、
单元数、**具有约束力的限制条件**),并在一次调用中 **生成真实的 IFC4 模型** — 可选择带有
**混凝土结构框架**(柱 + 位于柱网上的梁)、**每套公寓的单元布局**、
**外墙包络**(墙 + 带有一定 WWR 的带形窗,为能耗模型提供数据),以及一个
**服务核心筒**(电梯 + 楼梯 + MEP 竖井)— 然后发布该模型并求解一个
**初始获取 proforma**。由于输出是 openBIM,生成的建筑可以直接进入查看器、
图纸、能耗分析、QTO、**基于装配体的估算**(+ GFA 基准)以及评估 — 从地块 → 交易 → 移交的
单一链条。通过完整的生命周期测试工具进行了端到端驱动 (63/63)。
- **配置与装备(入门级 IFC 族库)** — 精选的 16 个族目录(家具 /
卫生器具 / 电器 / 植物)通过参数化方式生成,可作为真实的 **GUID 稳定、已定义类型**的 IFC 实体,通过 `type.assign_type` 放置到 *任何* 模型中(包括生成的体量模型)。
- **登录 (SSO) + 免费层级,无需管理员** — 使用 **Google / Microsoft / Procore** (OAuth2) 登录;
SSO 用户均为普通的 **免费层级** 账户,并且 **最终用户端没有管理员层级**(项目
所有者管理自己的团队;平台配置由运维/env 负责)。一个 `tier` 接缝 (`entitlements.py`)
使得最终的付费计划只需在一处进行修改。
- **首次运行引导 + AI 助手** — 为新用户提供可跳过的欢迎界面 + coach-mark 教程,以及
一个 **“Ask AI”** 对话框,可基于实时快照(配置 Key 时使用 Claude;未配置 Key 时平稳回退)回答有关项目的自然语言问题(待处理 RFIs、逾期情况、成本等)。
- **现场/移动端采集(离线优先)** — 移动端底部菜单的快捷采集功能:拍张照 →
只需点击几次即可记录为 punchlist / 安全观察 / 进度照片。离线状态下采集内容会进入队列(包含
照片),并在重新连接后 **自动同步**(带有排队计数徽章);与 PWA/Capacitor 构建配合使用。
- **移交** — 一键生成 **closeout package** (`/closeout/package.zip`: as-built IFC +
COBie/QTO/spaces + 状态 PDF + 移交清单)、**模块日志 PDF** (RFI/submittal/CO
记录)、**多周期 pay apps**(周期推进 + 自动 **lien waivers**)、丰富了
保修/资产/调试信息的 **COBie 标签页**,以及 **保修到期** 跟踪。
## 总承包 Portal
一个位于查看器之上的施工管理 portal — 详细说明位于
[docs/gc-portal.md](docs/gc-portal.md)。重点如下:
- **模块引擎** — 每个流程(RFIs、Submittals、PCO/Change-Order 链、Daily
Reports 等)都是一个 `module.json` → 对应自动创建的数据表。**71 个模块 / 12 个分区**,
无需为单个模块编写代码。每个模块都有 CRUD、基于角色的 workflow、评论、CSV/PDF、pins、时间轴。
- **双重角色维度** — 能力角色 (查看者→管理员) + 参与方角色
(GC/Owner/OwnersRep/Consultant/Subcontractor),用于控制 workflow 状态转换。
- **Change-order 链** — PCO ▸ NOC ▸ Directive ▸ Proposal ▸ COR ▸ eTicket,相互关联且
有审计日志;批准的 COR 会汇入合同总额。
- **财务** — AIA **G702/G703** pay apps (+ PDF)、**Cost Summary** 汇总、根据
费率表定价的 **eTicket T&M builder**。
- **进度计划** — Gantt 图 + 帝国大厦式的 **Line-of-Balance** 图表。
- **角色定制仪表板** — 按参与方划分的 KPI + “ball-in-your-court” 待办行动项。
- **模型 pins** — 任何锚定的记录(RFI/PCO/COR/punchlist/inspection/…)都会显示在
3D 模型上;点击即可选中元素并打开记录。同一个 GUID 关联几何图形、
BCF 和 GC 记录。
## 房地产开发与可行性分析(Finance 工作区)
一个面向开发商/业主的平台,涵盖 **地块 → 建筑 → 交易 → 投资者资料包**,全部基于 IFC 原生。
**生成式设计与 Test Fit**(TestFit 风格,但基于 openBIM — 每一个布置都是真实的 IFC 模型):
- **从分区生成** — 地块 + 分区包络线(FAR、退让线、高度、覆盖率)→ 可建设
方案 + 从零构建的 **IFC4** 模型(结构框架、按单元划分的空间、外墙 + 窗户、
服务核心筒)+ 求解后的获取 proforma,一键完成。真实的 **地块多边形**(利用鞋带公式计算面积)。
- **Test Fit** — 在 **双内廊走廊**(真实的单元 + 走廊)上布置单元组合、一个 **停车
求解器**(车位/单元 → 数量/面积/成本)、**方案比较**(单元/效率/NSF/停车数排名),
以及 **生成式优化** 功能,可遍历单元组合 × 停车方案,并按 **yield-on-cost**(“寻找能盈利的交易”)进行排名。`POST /test-fit/{compare,optimize}`。
**开发商成本 portal** — 机构评估模块:
- **逐项硬/软成本预算**(描述 × $/单位 × 数量 + 按类别的应急费用),可
汇总到 proforma 成本树中。
- **Sources & Uses** — 分组的资金用途 对比 已确定规模的优先债务(受 LTV/DSCR/debt-yield 限制的 LTC)+ 股本。
- **房地产与税务假设** — 地块/面积/购买 + 税务表 → OPEX;按每平方英尺 (SF) 计算的比率。
- **专项资产** — 场地内的 **能源**(太阳能/风能/电池/雨水 → capex + 能源抵消)以及
**垂直农场/PFAL**(塔楼数量 → 农产品收入 + 照明运营成本),并汇入交易评估中。
- **投资备忘录 (PDF)** — 一份机密的备忘录(执行摘要、S&U、成本预算、回报、
风险),基于实时的项目数据生成:“带有财务数据的演示文稿”。
**评估引擎:**
- **Sources & uses**,包含建设贷款 **利息准备金循环计算**,求解至不动点。
- **S-curve draws**、**XIRR / NPV / equity multiple / yield-on-cost**、一个 **JV waterfall**(优先回报 +
promote 层级、美式/欧式、clawback)、**债务规模确定** (LTC/LTV/DSCR/debt-yield)、**敏感性**
分析表和 **Monte Carlo** 风险分析。
- **评估的真实性** — 专项/运营收入经过 **风险调整**(不作为已去风险的租金入账),并且
**guardrails** 会标记超出市场区间的回报率(IRR / equity-multiple / dev-spread /
DSCR),从而使 IRR 真实可信,并显示在固定的回报率工具栏上。
- **实际发生额/提款桥接** → 基于相同的成本树重新预测 IRR 并生成 AIA G702/G703 pay apps。
- **多交易投资组合** 汇总(真实的 XIRR)以及 **LP 共享** 的只读方案。
Finance 工作区被组织成多个子标签页 — **可行性分析 · 预算与资本 · 评估 ·
交付物** — 带有一个固定的实时求解回报率工具栏。
## 近期平台工作
- **渲染、族库与计算化设计 (M-主题)** — 一个查看器 **渲染模式**(平行
太阳光 + 软阴影、ACES/PBR、IBL)、一个 NOAA **日照与阴影研究**(日期 · 时间 · 纬度/经度),以及一个
Matterport 风格的第一人称 **漫游**;Revit 风格的 **`IfcMaterialLayerSet` 装配体**应用于
墙/板/屋顶;族库已扩展至 **37 种参数化类型**(新增了 照明/MEP/结构/
运输),具备 **类型变体尺寸设定** 和 **导入外部/制造商 IFC 族**
(`project.append_asset`) 的功能;以及 **Studio**,这是一个可视化的 **计算节点图**(Dynamo/Hypar 风格),运行在
服务器计算引擎上 — 无需代码即可串联 分区 → 结构 → 进度计划 → 成本 → 收益率。
- **强化与运维** — 分布式 **基于 Redis 的速率限制**(多进程、fail-open)、更快的
**仪表板**(GROUP-BY 计数,仅对活动记录解析 JSON)、一轮 **可访问性**
优化(tab roles/`aria-selected`、labels、live region)、对 admin modals 的
**stored-XSS** 扫描,以及 `main.ts` 模块化(连接 UI 现在是一个懒加载的 chunk)。COBie 移交
增加了模型推导出的 **面积 / 制造商 / 保修 / asset-id** 字段 + 一个 **Attribute** 表;融资
演示文稿增加了 **Market** + **Timeline** 幻灯片。评估了库的互操作性(IFClite / pyRevit /
FreeCAD / Pascal)— 详见 `docs/roadmap.md` §L 和 dependency/update ADR。
- **建筑环境技术(基于研究)** — 指导方向来自 Carol Willis (*Form Follows
Finance*、*Building the Empire State*)、Salvadori (*Why Buildings Stand Up*) 以及 CM/RE 研究:
**form-follows-finance** 体量建模(受采光限制的可租赁进深 + 核心筒效率)、一个
**结构系统顾问**(按高度/跨度选择 flat-plate · shear-core · outrigger,并进行构件尺寸计算)、
**takt / line-of-balance** 进度编排(包含 JIT 交付计划)、**4D 序列化**(带有
查看器时间轴擦洗功能)、**精益 / Last-Planner PPC**,以及可引用的 **基准测试与可比案例**。
- **评估的真实性 + Finance 重构** — 专项/运营收入在计入交易之前现在会进行风险调整,且
`underwrite.guardrails()` 会标记超出市场区间的回报率(垂直农场场景中曾经被
虚高的 IRR 现在变得可信)。Finance 视图被重新组织为多个子标签页,带有
固定的回报率栏,其中包含实时的 guardrail 徽章。
- **开发商 portal + Test Fit** — 逐项硬/软 **成本预算**、**Sources & Uses**、
**房地产/税务** 假设、**专项资产**(现场能源 + 垂直农场收入)、一份
**投资备忘录 PDF**,外加 **Test Fit**(走廊单元组合布局、停车求解器、方案
比较、基于 yield-on-cost 的生成式优化)以及 **真实地块多边形** — 详见
“房地产开发与可行性分析”部分。每一项功能在 CI 门禁中都有测试支持。
- **AI 助手** — 基于实时项目快照的自然语言 **“Ask AI”**(配置 Key 时使用 Claude,
否则进行平稳的规则回退),同时提供 AI 风险摘要 + AI 起草的 RFIs。
- **账户与引导** — **SSO**(Google / Microsoft / Procore)、无管理员的免费层级模型、
首次运行 **欢迎 + 可跳过教程**,以及针对移动端/施工现场路径的 **现场
采集**(离线拍照 → punchlist/观察记录,重连后同步)。
- **生成式体量建模 + 族库** — `aec_data.massing` 将分区包络线转化为可建设
方案 + 一个从零构建的 **IFC4** 模型(`POST /projects/{id}/generate/massing`,外加一个
无状态的 `/generate/massing/preview`)并生成求解后的获取 proforma;`aec_data.families`
生成一个包含 37 个族的参数化类型库(`GET /families/catalog`),可通过 `add_family`
创作配方进行放置。两者都在查看器中渲染(在此过程中修复了两个 web-ifc 的
已知问题:生成的模型现在使用 **米** 为单位,并且每个 `IfcProfileDef` 都带有 `Position` —
如果没有它,web-ifc 会静默跳过几何图形)。已由 CI 套件中的 `test_generate` 进行门控。
- **4 区 UI**(顶部工具栏 + Model/Construction/Finance 工作区 + 左侧图标侧栏 + 底部
设置栏),带有 **懒加载的 3D 查看器** — 大约 6 MB 的 three/@thatopen 包仅在
Model 工作区打开时才会加载,因此 portal/finance 用户的首屏加载 gzip 后仅约 16 KB。
- **模块关系** — `reference` 字段 + 反向查找 + 数字 **rollups** 在整个
portal 中串联起领域链(RFI/Submittal→Drawing、RFI→ChangeEvent→PCO→COR→Subcontract、
budget/SOV/timesheet→CostCode cost-coding、Meeting→ActionItems、Inspection→NCR/Deficiency、
bidding、daily/field、closeout 等)— 44 个引用 + 16 个 rollups,全部由 config 驱动,因此
表单记录选择器、“相关”面板和 rollups 都是自动生成的。此外还有 **kanban board**、
**跨模块搜索**、**批量操作**、**内联列表编辑**、**保存视图**,以及
实时的 **SSE 通知** — 全部在引擎层级实现,因此每个模块都能获得这些功能。
- **后台转换** — IFC 转换/重新索引在离线线程中运行;客户端会轮询发布状态。
- **查看器内建模** — 包含 18 个工具的创作工具栏(墙/板/柱/梁/屋顶、
门/窗、删除/移动/旋转/复制、Pset 编辑)+ 网格/角点捕捉、section box、标高
overlay — 全部通过 `ifcopenshell` 在服务器端进行创作,并经过实际验证。
- **互操作性** — 一个数据源 **Connections** 框架:注册外部
**Postgres/Supabase**(只读表浏览 + 受保护的 SELECT 控制台)、**Procore**
(双向同步 — 将 RFIs/submittals/change-events 导入 portal,将已解决的 RFI
状态/答案推回,定时自动同步)、**Autodesk Construction Cloud**(项目/问题
读取),以及 **accounting/ERP** — **QuickBooks** + 通用-REST **Sage/Viewpoint**
(读取账户 / 供应商 / 账单)— 全部隐藏在一个适配器模式之后。管理员
**字段映射编辑器** 可以为每个连接重新映射每个外部字段 → 模块字段;密钥是只写的,并在读取时进行掩码处理;受管理员权限控制。
- **施工与财务深度** — **CPM scheduling**(正向/反向推演,总的+自由的
**float**,关键路径);**基于模型的估算与提取**(IFC 工程量 × 单价 →
定价估算);**模型→proforma**(面积生成硬成本 + 租金);**bid leveling**;一个 **风险
登记册** + 跨项目的 **施工项目组合**(带有成本超支标记);
**TRIR/DART 安全分析**;**可重用模板**(保存模块的记录,应用到
任何项目);以及 **模型版本历史 + diff**(每次发布带有 GUID 快照)。GC portal +
proforma 可以在 **空白项目上运行 — 无需 IFC**;一旦打开了 IFC 文件,基于模型的
工具就会被激活。
- **免费的单项目桌面应用 (.exe)** — 整个平台运行在 **一个进程** 中(FastAPI
提供 API + SPA 服务,SQLite + 本地文件,单操作员本地模式,无需登录),使用
PyInstaller 打包为完全独立的程序(`services/api/desktop.py`、`build-desktop.ps1`)—
一个 Bluebeam 风格的本地应用;数据存放在 `%LOCALAPPDATA%\AEC-BIM` 下,卸载 = 删除
该文件夹。项目是可移植的 **`.mmproj` 包**(几何图形 + 所有数据 + 附件),可通过
Open/Save 菜单操作。Tauri 2 外壳将此后端作为 sidecar 启动,以实现 **原生窗口**;
移动端(Capacitor/Tauri-mobile)是下一步计划。
- **UX** — ⚙ Tools 面板是一个可折叠的、按 **角色排序**的、具有状态感知的 accordion,并带有
**可读的结果弹窗**(成本/能耗/IDS/clash);**73 个模块的 portal 目录**增加了 ★
收藏功能 + 可折叠的、具有角色感知的分区 + 过滤器;查看器工具栏已进行分组。
项目选择器会标记每个项目的模型类型(`.frag`/`.ifc`)。(参见 `docs/ux-findings.md`。)
- **可安装 + 离线** — PWA(manifest + Workbox service worker;精简的 ~97 KB 预缓存,
查看器库/WASM/tiles 在运行时缓存)。
- **身份验证** — 用户名/密码账户(PBKDF2 哈希加密)+ 签名的 bearer token
(标准库,无依赖)位于 `/auth/{register,login,me}`。该 token 是 RBAC
层信任的身份标识(取代了开发环境使用的 `X-User` header);项目级别的
授权保留在 `ProjectMember` 中。第一个注册的账户将成为管理员。Web 应用
具有登录控件 + token 存储。登录时还会设置一个 **httpOnly cookie**,以便
SSE 通知源和直接下载链接(无法设置 header)可以通过 `/api`
代理进行同源身份验证;`/auth/logout` 会清除它。*(开发环境中的跨源
`:5173→:8000` 使用 header 路径;该 cookie 适用于已部署的同源技术栈。)*
- **身份与 RBAC 管理** — 管理员用户管理(创建 / 列出 / 设置角色 / 激活 /
停用 / 重密码),并带有“最后一个活跃管理员”保护;通过管理员签发的
一次性 token 进行 **自助密码重置**(无需邮件基础设施);停用操作会立即
使现有 token 失效。Web UI **根据项目角色进行权限控制** — 创作工具、
创作面板、“+ RFI” 以及 portal 中的 “+ New” 会根据调用者的角色超过权限时隐藏(API 仍会强制执行)。
- **风险 + 债务规模测算 (Proforma)** — **Monte Carlo** 模拟(采样驱动因子 → P5–P95、
P[IRR ≥ 目标值]、直方图),以及确定性的敏感性分析表,并且债务规模
根据 **LTC / LTV / DSCR / debt-yield** 约束中的较小值进行测算。
- **图纸** — 平面图上的元素 **带有引出线的说明**(默认为门/窗),
补充了房间标签(`plan.svg?callouts=true`)。
- **运维与可观测性** — `/metrics`(Prometheus:按路由模板统计的请求
计数/延迟、处理中的请求、正常运行时间)+ 结构化的 JSON 访问日志;针对
每个成员工作队列的 **邮件摘要**(标准库 SMTP,未配置时为空操作但会记录
日志);一份 **备份/恢复操作手册** + 脚本(`scripts/backup.sh` /
`restore.sh`:pg_dump + MinIO/IFC 卷)。
- **桌面版发布 CI** — 基于 tag 驱动的 GitHub Actions 构建已签名的 Win/macOS/Linux Tauri
安装包(`.github/workflows/desktop.yml`);每个 runner 首先构建 Python 后端
sidecar(PyInstaller),以便安装包能够提供完整的应用程序,而不仅仅是
查看器。一个仅含查看器的 **GitHub Pages** 演示程序从 `pages.yml` 进行部署。
- **CI 门禁** — `services/api/run_tests.py` 运行所有 Python 套件(包括
interop/bundle/desktop/local-mode);GitHub Actions 运行该脚本以及 Web 构建
(tsc + vitest + 生产环境构建)。
## 画廊
**生成式设计 — 地块 → IFC 模型 → 获取 proforma**(TestFit/Forma 的差异化
优势,但基于 openBIM):分区包络线生成真实的 IFC 体量模型,您可以随后从入门级
族库中为其配置家具。(重新设计 UI 的矢量渲染图;数字是实际求解的结果。)
| 从分区生成 → IFC + proforma | 配置与装备(入门级 IFC 族库) |
|---|---|
|  |  |
由数据服务 (BIM) 直接从 IFC 生成,以及 GC schedule 图表:
| 带有尺寸标注的网格平面图 | 合成图纸 (A3) | 北立面图 (HLR) | 房间标签 |
|---|---|---|---|
|  |  |  |  |
带有尺寸标注的平面图根据柱子位置推导出结构网格(无需 `IfcGrid`),
添加编号/字母轴网圆圈和网格间距尺寸标注;合成图纸在图框下
合成了各楼层的平面图 + 一个剖面图(也可导出为 PDF)。
GC portal 进度可视化图表(来自 `schedule_activity` 模块):
| Gantt | Line of Balance |
|---|---|
|  |  |
平台界面(重新设计 UI 的矢量渲染图 — 请查看[在线演示](https://ibuilder.github.io/ModelMaker/app/)以获取正在运行的应用程序):
| 工具面板 + 可读的结果 | 73 个模块的 portal 目录 |
|---|---|
|  |  |
⚙ Tools 面板是一个按角色排序的、可折叠的、具有状态感知的 accordion(辅助工具折叠在
“More tools”下;分析结果在可读的弹窗中打开);GC-portal 目录通过 ★ 收藏、可折叠的
角色感知分区和过滤器,管理了 71 个模块。
## 架构
```
IFC (source of truth)
author ▲ │ convert + tile
│ ▼
Blender + Bonsai services/converter (Node) IFC → .frag tiles
(Bonsai-MCP) │
services/data (Python, ifcopenshell) props index · QTO/COBie/4D/5D ·
clash · IDS · drawings/sheets · authoring recipes exports · validation · 2D drawings
│ │
└──────► services/api (FastAPI) ◄──────► apps/web (Vite + TS, Three.js + Fragments)
BCF issues · pins · viewpoints · properties · exports · clash · validate ·
drawings/sheets · edit/publish (Postgres/SQLite + MinIO/local storage)
```
## 布局
```
apps/web/ Vite + TS viewer (Three.js + @thatopen/*), integrated app shell
apps/editor-bridge/ Bonsai-MCP config + authoring recipes (desktop path)
services/converter/ IFC→.frag (Node) + optional RVT→IFC via APS (paid, flagged)
services/api/ FastAPI: BCF, properties, exports, clash/validate, drawings, edit/publish,
GC portal (modules, cost, schedule, dashboard)
services/api/modules/ 71 module.json definitions (GC portal — one table each)
services/data/ IfcOpenShell: index, QTO, COBie, spaces, schedule, clash, IDS, drawings, edit,
massing (zoning→IFC), families (starter IFC type library)
packages/ shared types
families/ IFC type libraries (versioned) — curated/manufacturer content drop-in
docs/ status, capability matrix, gc-portal, deploy, images
```
## 运行全栈 (Docker — 最简单的方式)
```
git clone https://github.com/ibuilder/ModelMaker.git && cd ModelMaker
cp .env.example .env # set secrets + AEC_RBAC=1 for anything but local dev
docker compose --profile full up --build # web → http://localhost:8080 (api → :8000)
# 可选:在所有 relation chain 中填充一个 demo project
docker compose --profile full --profile seed run --rm seed
```
Web 容器将 `/api` 反向代理到 API(同源,无 CORS),为
查看器提供跨源隔离(这是 web-ifc 所需的),并持久化 Postgres/MinIO/IFC 卷。
有关每个配置项,请参见 [`.env.example`](.env.example),有关桌面版
(Tauri/Electron)和移动版(Capacitor)的打包计划,请参见 [docs/roadmap.md](docs/roadmap.md)。
## 快速开始 (开发环境)
```
# 1. web viewer(离线;自动复制 WASM)
cd apps/web && npm install && npm run dev # http://localhost:5173
# 2. backend API(首选 Python 3.11+;3.10 也可用)
cd services/api && python -m venv .venv && .venv/Scripts/activate
pip install -r requirements.txt
PYTHONPATH=src uvicorn aec_api.main:app --reload # http://localhost:8000
# 3. 将 IFC 转换为 Fragments(Node converter)
node services/converter/src/cli.mjs model.ifc model.frag
# 4. 数据导出 / 图纸(CLI)
cd services/data && pip install -r requirements.txt
PYTHONPATH=src python -m aec_data.cli qto model.ifc qto.xlsx
```
初始化一个项目,然后 Web 应用会自动连接:带有 `source_ifc` 参数的 `POST /projects`,上传
属性索引,并打开查看器。已验证的流程请参见 [docs/status.md](docs/status.md)。
## API 表面 (精选)
```
POST /projects create project (name, source_ifc, origin)
GET /projects/{id}/elements[/{guid}] properties index (Phase 1 data)
GET/POST /projects/{id}/topics ... BCF topics/RFIs/pins, comments, viewpoints, attachments
GET/POST /projects/{id}/bcf/export|import .bcfzip round-trip
GET /projects/{id}/exports/{qto,cobie,spaces,schedule}.xlsx
POST /projects/{id}/clash clash detection (→ BCF clash topics)
POST /projects/{id}/validate IDS validation
GET /projects/{id}/drawings/{plan,section,elevation}.svg
GET /projects/{id}/drawings/sheet.{svg,pdf}
POST /projects/{id}/edit | /publish authoring round-trip (recipes incl. add_family)
POST /projects/{id}/generate/massing zoning → IFC massing model + acquisition proforma
POST /generate/massing/preview stateless zoning → program + proforma (no model written)
GET /families/catalog starter IFC family library (furnish & equip)
# GC portal(完整列表见 docs/gc-portal.md)
GET /modules module catalog
GET/POST /projects/{id}/modules/{key}[/{rid}] config-driven CRUD (+ /transition /link /comments /pdf /export.csv)
GET /projects/{id}/module-pins anchored records → viewer overlay
GET /projects/{id}/cost/{g703,g702,summary} financials (+ g702.pdf, POST /cost/tm)
GET /projects/{id}/schedule/{gantt,lob}.svg Gantt + Line-of-Balance
GET /projects/{id}/dashboard role-tailored dashboard
# interoperability + portability
GET/POST /connections[/{id}] data-source connections (Postgres/Supabase/Procore/ACC)
GET /connections/{id}/tables | POST .../query read-only browse + SELECT (SQL sources)
GET/PUT /connections/{id}/mappings admin field-mapping editor (external → module fields)
POST /projects/{id}/sync/procore[/push] Procore import + two-way push (+ /sync/schedules)
GET /connections/{id}/acc/projects/{pid}/issues Autodesk Construction Cloud issue read
GET /projects/{id}/bundle | POST /projects/import-bundle portable .mmproj save / open
DELETE /projects/{id} delete a project (rows + geometry + attachments)
```
## 验证
这里的每项功能都是针对示例模型运行的。最新的端到端证明:IDS 标记了
299 个缺失 `LoadBearing` 的板 → 创作往返过程对其进行了编辑 → 重新发布 → IDS
重新验证 **通过 (299/299)**,且该板的 pin GUID 保持不变。回归测试:web `tsc`、
API 冒烟测试和 Python 编译全部通过(绿灯)。
## 许可
开源技术栈(That Open 采用 MIT 风格,IfcOpenShell 采用 LGPL)。Blender + Bonsai 桌面编辑器是
**GPL** 授权的 — 保持作为一个您 *使用* 的独立进程,而不进行代码链接。可选的 Autodesk APS RVT→IFC 是
付费/标记的。详见 [LICENSE-NOTES.md](LICENSE-NOTES.md)。
## 作者
由 **Matthew M. Emma** 创建 — 使用 [Claude Code](https://claude.com/claude-code) 作为 AI 助手构建。
标签:BIM, IFC, Web端3D, 工程管理, 建筑施工, 开发运维, 请求拦截, 逆向工具