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 数据科学管道。

相关

  • 项目
  • 项目
  • 项目
  • 项目