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(Industry Foundation Classes) 파일을 파싱, 쿼리, 편집, 검증, 렌더링 및 내보내기할 수 있게 해주는 오픈소스 라이브러리 및 도구 모음입니다. 무거운 작업(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.2GB/s; 전체 파싱 ~50MB/s.
  • 풋프린트 – 지연 로드되는 WASM 모듈 약 2.6MiB gzipped 및 작은 JS 래퍼.
  • 전체 스키마 커버리지 – IFC4(776개 엔티티) 및 IFC4X3(876개 엔티티)의 100%.

누가 혜택을 받을 수 있나요?

대상 중요성
웹 개발자 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으로, 일반적인 카피레프트 요구 사항과 함께 상업적 사용을 허용합니다.

요약

IFClite는 브라우저에서 STEP 파일 파싱부터 서버 측 배치 처리, IDS 검증, 기하학 내보내기, AI 에이전트 통합까지 전체 IFC 워크플로를 다루는 실제 프로덕션 등급 오픈소스 BIM 툴킷입니다. 모듈식 설계(Rust-WASM 코어 + npm 패키지)는 웹 뷰어, CI 품질 게이트 또는 Python 데이터 과학 파이프라인을 구축하든 필요한 부분만 쉽게 선택할 수 있게 합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트