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は、開発者がIndustry Foundation Classes(IFC)ファイルを解析、クエリ、編集、検証、レンダリング、エクスポートできるようにするオープンソースのライブラリとツールのコレクションです。 重い処理(STEP解析、正確な算術ジオメトリ、エクスポート形式)はWebAssemblyにコンパイルされたRustコアにあり、薄いJavaScript/TypeScriptラッパーがモジュール式のnpmパッケージとして機能を公開します。 WebGPUベースのビューアは完全にブラウザ内で動作し、CLI/サーバーレイヤーにより、ターミナル、CIパイプライン、AIエージェントから同じ機能を利用できます。
コアコンポーネント(「パッケージ」)
| コンポーネント | 機能 | 典型的な用途 |
|---|---|---|
@ifc-lite/parser |
IFC2X3、IFC4/4X3、IFC5(IFCX)の高速STEPトークン化と列演算解析。 | ブラウザまたはNodeスクリプトでモデルを読み込む。 |
@ifc-lite/geometry |
正確な算術CSGカーネル。メッシュバッチをストリーミングし、glTF/GLB、CSV、JSON-LD、Parquetをエクスポート可能。 | 生のIFCデータをレンダリング可能なメッシュに変換する。 |
@ifc-lite/renderer |
メッシュを読み込み、エンティティを選択し、3Dシーンを表示できるWebGPUビューア。 | スタンドアロンのブラウザビューア(create-ifc-lite)。 |
@ifc-lite/query |
高レベルBIMクエリAPI(bim.query())とオプションのDuckDB-WASM SQLインターフェース。 |
ドアや壁を検索したり、アドホックな分析を実行したりする。 |
@ifc-lite/ids |
IDS(Information Delivery Specification)XMLを解析し、モデルを検証する。 | BIM納品の品質管理。 |
@ifc-lite/mutations |
元に戻す履歴付きの編集可能なプロパティビュー。 | プログラムによるBIM編集。 |
@ifc-lite/export |
STEP、IFC5/IFCX、glTF/GLB、CSV、JSON-LD、Parquetへのエクスポート。 | 他のツールとの相互運用性。 |
@ifc-lite/cli |
フルツールキットのコマンドラインラッパー(info、query、schedule、clash、diff、merge、convert、viewなど)。 | スクリプト、CI、AIエージェント統合。 |
@ifc-lite/mcp |
外部エージェントがBIMデータをクエリ/編集できるようにするModel Context Protocolサーバー(stdioまたはHTTP)。 | 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ラッパー。
- 完全なスキーマカバレッジ – IFC4(776エンティティ)とIFC4X3(876エンティティ)の100%。
誰が恩恵を受けるか?
| 対象 | 重要性 |
|---|---|
| Web開発者(BIMビューアを構築) – 既製のWebGPUビューアを使用するか、ジオメトリをThree.js/Babylon.jsにプラグイン。 | |
| バックエンドエンジニア / CIパイプライン – CLIまたはヘッドレスSDKを使用して、GUIなしで品質チェックを自動化、スケジュールを生成、クラッシュ検出を実行。 | |
データサイエンティスト / Pythonユーザー – ifclite-geomホイールがNumPy内で同じRustジオメトリカーネルを実行し、大規模分析を可能にします。 |
|
AI/エージェント開発者 – mcpサーバーにより、LLMベースのエージェントが自然言語の質問(ifc-lite ask model.ifc "how many walls?")をしたり、BIMデータをプログラムで編集したりできます。 |
|
コラボレーションプラットフォーム構築者 – リアルタイムのマルチユーザー編集のためのオプションのCRDTベースのコラボレーションパッケージ(@ifc-lite/collab)。 |
コードの入手と貢献
- ビルド前提条件 –
wasm32-unknown-unknownターゲットのRust nightly、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で、通常のコピーレフト要件を条件に商用利用が可能です。
TL;DR
IFCliteは、ブラウザでのSTEPファイルの解析からサーバーサイドのバッチ処理、IDSに対する検証、ジオメトリエクスポート、AIエージェント統合まで、IFCワークフロー全体をカバーする本格的で本番グレードのオープンソースBIMツールキットです。 モジュール式の設計(Rust-WASMコア+ npmパッケージ)により、Webビューア、CI品質ゲート、Pythonデータサイエンスパイプラインなど、必要な部分だけを簡単に選択できます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト