LTplus-AG/ifc-lite
Parse, view, query, edit, validate and export building models. Browser-first WebGPU viewer, TypeScript SDK, CLI, MCP server and Rust/WASM core with dual exact-arithmetic & SMlib geometry kernels.
IFClite – 用于处理 IFC 建筑信息模型的全栈工具包
它是什么 – IFClite 是一组开源库和工具,让开发者能够解析、查询、编辑、验证、渲染和导出工业基础类 (IFC) 文件。繁重的工作(STEP 解析、精确算术几何、导出格式)位于编译为 WebAssembly 的 Rust 核心中,而轻量级的 JavaScript/TypeScript 包装器将这些功能以模块化的 npm 包形式提供。基于 WebGPU 的查看器完全在浏览器中运行,CLI/服务器层使相同的功能可从终端、CI 管道或 AI 代理中使用。
核心组件(“包”)
| 组件 | 功能 | 典型用途 |
|---|---|---|
@ifc-lite/parser |
快速 STEP 分词和 IFC2X3、IFC4/4X3 和 IFC5 (IFCX) 的列算术解析。 | 在浏览器或 Node 脚本中加载模型。 |
@ifc-lite/geometry |
精确算术 CSG 内核;流式传输网格批次,可导出 glTF/GLB、CSV、JSON-LD、Parquet。 | 将原始 IFC 数据转换为可渲染的网格。 |
@ifc-lite/renderer |
WebGPU 查看器,可加载网格、拾取实体并显示 3D 场景。 | 独立浏览器查看器 (create-ifc-lite)。 |
@ifc-lite/query |
高级 BIM 查询 API (bim.query()) 以及可选的 DuckDB-WASM SQL 接口。 |
查找门、墙,或运行临时分析。 |
@ifc-lite/ids |
解析 IDS(信息交付规范)XML 并据此验证模型。 | BIM 交付的质量控制。 |
@ifc-lite/mutations |
具有撤销历史记录的可编辑属性视图。 | 编程式 BIM 编辑。 |
@ifc-lite/export |
导出为 STEP、IFC5/IFCX、glTF/GLB、CSV、JSON-LD、Parquet。 | 与其他工具的互操作性。 |
@ifc-lite/cli |
全工具包命令行包装器(信息、查询、计划、碰撞、差异、合并、转换、查看等)。 | 脚本编写、CI、AI 代理集成。 |
@ifc-lite/mcp |
模型上下文协议服务器(stdio 或 HTTP),允许外部代理查询/编辑 BIM 数据。 | 插入 AI 助手。 |
| …以及许多可选附加组件**(threejs、babylonjs、collab、bcf、drawing-2d 等)** | 为流行的 3D 引擎、实时协作、碰撞检测等提供粘合代码。 |
如何使用
1. 浏览器快速入门
npx create-ifc-lite my-viewer --template react
cd my-viewer && npm install && npm run dev
出现一个带有 WebGPU 画布的 React 应用;拖放一个 .ifc 文件,即可获得支持拾取的交互式 3D 视图。
2. 无头处理(Node / CI)
import { openModel } from '@ifc-lite/sdk/headless';
const model = await openModel(await readFile('model.ifc'));
console.log(model.bim.query().byType('IfcDoor').count());
model.close();
SDK 为您提供用于查询的 bim API,以及一个 report 对象,告知您文件是否已完全解析。
3. 自定义渲染(Three.js / Babylon.js)
使用 @ifc-lite/parser 解析 → 将 GeometryProcessor.processAdaptive 返回的网格数组输入您喜欢的引擎。README 展示了一个最小的 Three.js 集成。
4. 验证与导出
import { parseIDS, validateIDS } from '@ifc-lite/ids';
const ids = parseIDS(xml);
const report = await validateIDS(ids, createDataAccessor(store), modelInfo);
验证后,您可以导出为 STEP、glTF、Parquet 或更新的 IFC5/IFCX JSON+USD 格式。
性能亮点(如 README 中所声称)
- 流式首屏渲染 – 在文件仍在解析时,几何批次即被发送到 GPU,因此模型几乎立即可见。
- 精确算术 CSG – 保证与参考 IfcOpenShell 基准测试的 99.9% 以上一致性。
- 解析速度 – STEP 分词约 1.2 GB/s;完整解析约 50 MB/s。
- 占用空间 – 惰性加载的 WASM 模块约 2.6 MiB(gzip 压缩后)加上微小的 JS 包装器。
- 完整模式覆盖 – 100% 的 IFC4(776 个实体)和 IFC4X3(876 个实体)。
谁可能受益?
| 受众 | 重要性 |
|---|---|
| Web 开发者构建 BIM 查看器 – 获得现成的 WebGPU 查看器或将几何体接入 Three.js/Babylon.js。 | |
| 后端工程师 / CI 管道 – 使用 CLI 或无头 SDK 自动化质量检查、生成计划或运行碰撞检测,无需 GUI。 | |
数据科学家 / Python 用户 – ifclite-geom wheel 在 NumPy 内运行相同的 Rust 几何内核,支持大规模分析。 |
|
AI/代理开发者 – mcp 服务器允许基于 LLM 的代理提出自然语言问题(ifc-lite ask model.ifc "how many walls?")或以编程方式编辑 BIM 数据。 |
|
协作平台构建者 – 可选的基于 CRDT 的协作包(@ifc-lite/collab),用于实时多用户编辑。 |
获取代码与贡献
- 构建先决条件 – Rust nightly 及
wasm32-unknown-unknown目标、wasm-pack和 Node (pnpm)。仓库在每次 CI 运行中从rust/构建 WASM 包。 - 典型开发流程
curl -sSf https://sh.rustup.rs | sh # 安装 Rust cargo install wasm-pack git clone https://github.com/LTplus-AG/ifc-lite.git cd ifc-lite pnpm install && pnpm build && pnpm dev # 启动本地查看器 - 测试夹具 –
pnpm fixtures下载一组精选的 IFC 模型,用于基准测试和回归测试。 - 社区 – GitHub Discussions、Issues 和定期发布变更日志。许可证为 MPL-2.0,允许商业使用,但需遵守通常的 copyleft 要求。
总结
IFClite 是一个真正的、生产级开源 BIM 工具包,涵盖了完整的 IFC 工作流程——从浏览器中的 STEP 解析到服务器端批处理、IDS 验证、几何导出,甚至 AI 代理集成。其模块化设计(Rust-WASM 核心 + npm 包)使您能够轻松选择所需的部分,无论您是在构建 Web 查看器、CI 质量门禁还是 Python 数据科学管道。
相关
- 项目
- 项目
- 项目
- 项目