Skip to main content

IFX core

One Rust IFC engine for native Python and browser WebAssembly. It reads IFC4 and IFC4X3 models. Geometry, properties, quantities, placements, units, materials, spatial data, and relationships come from this core.

import ifx_core

model = ifx_core.extract_ifc(open("building.ifc", "rb").read(), "high")
mesh = model["geometry"]["elements"][42]
properties = model["entities"]["entities"][42]["property_sets"]
spatial = model["model"]["spatial"]

extract_ifc uses the same Rust extraction function as WASM. It tessellates once. Python receives f64 vertex and u32 face buffers for NumPy. Separate model_data, model_data_json, entity_data, geometry_data_buffers, and geometry_data_json methods are available when only one part is needed.

Geometry and placements use absolute IFC world coordinates in metres, with Z up. The recorded RTC offset is already included. Do not add it again. Properties and quantities keep their source units. Use the reported unit scale for each dimension.

Layout

Path Purpose
src/ IFX semantic extraction, unified entry point, Python and WASM bindings
crates/step/ Local STEP parser
crates/geometry/ Local geometry and CSG kernel
crates/processing/ Local mesh pipeline
crates/entities/ Local properties, quantities, attributes, and placements
pkg/ Generated browser WASM module
tests/ Core, geometry, and IfcOpenShell parity checks

No external IFClite package is used. IFX includes an adapted source port. See ACKNOWLEDGEMENTS.md, UPSTREAM_SOURCE.json, and LICENSE. Keep the MPL terms, attribution, and matching source when you distribute a native or WASM build. Property extraction currently covers single-value properties; complex property forms are not yet supported by the imported reader.

Build and check

Python 3.10 or later and the pinned Rust toolchain are required.

uv sync --group dev --no-install-project
uv run --no-sync maturin develop --uv --release
.venv/bin/python -m pytest -m 'not corpus and not integration'
cargo test -p ifx-core
cargo clippy -p ifx-core --all-targets --all-features --no-deps -- -D warnings
./scripts/build-wasm.sh

The WASM build exports extractIfcJson(bytes, quality) and modelDataJson(bytes). The IFX TypeScript loader calls it in a Web Worker. The JSON boundary is the first implementation; large models can use more memory than the native buffer path.

Use maturin build --release --out dist for a native wheel, and maturin sdist --out dist for its matching source archive. The source archive includes the local crates and provenance file.

Metadata

Release files for ifx-core 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ifx-core 0.1.0
File Size Uploaded Provenance
ifx_core-0.1.0.tar.gz 2.6 MB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for ifx-core 0.1.0
File Interpreter ABI Platform
ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 7.1 MB

Release files / ifx_core-0.1.0.tar.gz

Download URL ifx_core-0.1.0.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
c0a76a7a1cccc7771ab28b1d80f9ffb3f12937b248db9069ec758d5176c93693
BLAKE2b-256 checksum
How to use checksums
532897887b534f7e97df68dd69efd133f475ccb5a299519d71d09baafb0a0532
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release files / ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
a90dc38a6b898d465a8a6792ab1a5db3caec9824657621cc80afd951ce44957c
BLAKE2b-256 checksum
How to use checksums
0d20658d0fb7f9e0a23ab3a90e038a80bb73954a0113641e118759fd257a1f8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release files / ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl
Size 2.2 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
85ee623a56abafb05e47a090b42d912b2a2551080b1a8423bb411223cc0240b9
BLAKE2b-256 checksum
How to use checksums
1161f7e3c542b17bae2d4c6925288c2889c8388390a4dc7e9f03253303373369
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Security for ifx-core 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

3 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page