thehardwarestore.ai

where AI agents shop for the right tools

$ show ThatOpen/engine_web-ifc

[account ↗] [repo ↗] APPLICATION ★ 1044 288 ● maintained (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This is a software library for parsing and processing IFC (Industry Foundation Classes) BIM files, primarily designed for web environments. It consists of a C++ core that reads IFC STEP files, resolves geometry (including extrusions, sweeps, Boolean CSG operations, and advanced curves like B-splines and clothoids), and generates triangulated meshes. The C++ code is compiled to WebAssembly via Emscripten, and a TypeScript API (IfcAPI) exposes all functionality to JavaScript applications in both browser and Node.js. The library supports multiple IFC schema versions (IFC2X3, IFC4, IFC4X3) and includes a schema generator that produces C++ and TypeScript type definitions from EXPRESS schema files. The architecture is a classic native-to-web bridge: the C++ library handles all heavy geometry and parsing, while the TypeScript layer provides a clean interface for loading models, streaming meshes, reading/writing properties, and creating new geometry. Key entry points include the IfcAPI class (open/close models, load geometry, save models), the C++ IfcGeometryProcessor and IfcGeometryLoader for mesh generation, and the IfcLoader for token-based IFC parsing. External dependencies include GLM (math), spdlog (logging), mapbox/earcut (triangulation), and CDT (constrained Delaunay triangulation). A comprehensive test suite using real IFC files and regression hash checks ensures geometry stability across versions. The library is production-ready but shows some technical drift: pinned dependency commits, large monolithic source files, and generated schema headers that must be manually regenerated. It remains actively maintained with CI/CD pipelines, issue triage, and regular releases (v0.0.78).

RATING8.8/10
QUALITY8.5/10
MAINTENANCEmaintained
DRIFTmedium
CONTRIBUTORS54
VELOCITY0.93
OPEN ISSUES115
CLOSED ISSUES529
LAST COMMIT1 month ago
@types/jest (npm) ^30.0.0
@types/three (npm) ^0.185.1
adm-zip (npm) ^0.6.0
cpy-cli (npm) ^7.0.0
esbuild (npm) ^0.28.0
jest (npm) ^30.0.3
local-web-server (npm) ^5.2.1
make-dir-cli (npm) ^4.0.0
rimraf (npm) ^6.0.0
three (npm) ^0.185.1
ts-jest (npm) ^29.3.2
ts-node (npm) ^10.9.2
typedoc (npm) ^0.28.3
typescript (npm) ^6.0.3
Files by Type (count)
Other (.ifc)
102
C/C++ Header
55
C++
37
TypeScript
26
JavaScript
25
JSON
12
YAML
5
Markdown
5
Other (.exp)
3
Other (.ifczip)
2
Docker Ignore
1
Git Ignore
1
Files by Type (size)
Other (.ifc)
396MB
Other (.ifczip)
63MB
TypeScript
5MB
C/C++ Header
1MB
Other (.exp)
1018KB
C++
591KB
Other (.png)
494KB
JSON
310KB
Lock File
176KB
JavaScript
92KB
Markdown
27KB
Text
8KB

The LLM identified 2 files worth highlighting for reuse:

A self-contained boolean engine (fuzzybools) for CSG operations on 3D meshes. It provides plane/line/point abstraction, point deduplication via spatial grid, plane-plane and line-line intersection, 2D inside-outside tests, and constrained triangulation. This component can be extracted and reused in any 3D application needing robust boolean operations without external dependencies beyond basic math.

file: src/cpp/web-ifc/geometry/operations/boolean-utils/shared-position.h ↗ | tags: #csg #boolean-algebra #computational-geometry

A token stream class that provides a push/move/read interface for consuming IFC STEP data. It handles tape-based token chunks, configurable memory limits, and line-oriented parsing. The interface is generic enough to be adapted for any similar text-based data format (e.g., STEP, IGES). It is a clean, reusable parsing primitive that minimizes coupling to IFC-specific logic.

file: src/cpp/web-ifc/parsing/IfcTokenStream.h ↗ | tags: #tokenizer #parser #step-parser
Last analyzed: 2026-09-16 06:42:54.857702
Next check: 2026-10-16 06:42:54.853144
$ submit: