Extract structural RC models from IFC files into the elemental-engine JSON contract.
Project description
elemental-ingest
Extract structural reinforced-concrete models from IFC files into the elemental-engine JSON contract.
Status
v0.1.0-mvp — Phase-1 IFC ingest complete. DXF / DWG / PDF support and LLM-assisted classification deferred to Phase-2+.
Install
uv tool install elemental-ingest
Or from source:
git clone https://github.com/trancer1987/elemental-ingest
cd elemental-ingest
uv sync
uv run elemental-ingest --help
Quick start
CLI
elemental-ingest extract --input model.ifc --output project.json --verbose
elemental-ingest validate project.json
elemental-ingest schema | jq '.properties'
Library
from pathlib import Path
from elemental_ingest import IfcExtractor, ExtractionOptions
extractor = IfcExtractor(ExtractionOptions(
include_rebar=True,
min_classify_confidence=0.5,
provenance_log=Path("project.provenance.jsonl"),
))
result = extractor.extract_to_file(
Path("model.ifc"),
Path("project.json"),
)
print(f"{result.stats.n_elements} elements, {result.stats.n_bars} bars")
print(f"errors: {result.stats.n_errors}, warnings: {result.stats.n_warnings}")
What it does
| Subsystem | What it produces |
|---|---|
| IFC reader | Opens any IFC file, detects units, exposes spatial structure |
| Classifier | Tier 1 IFC type -> Tier 2 Pset -> Tier 3 geometric heuristic |
| Geometry | Parametric ExtrudedProfile primary, mesh fallback |
| Rebar | Bars + meshes with 3-tier host resolution |
| Provenance | Issue codes (E001-E301, W001) + JSONL sidecar |
| API + CLI | IfcExtractor orchestrator + extract/validate/schema commands |
Architecture
See docs/architecture.md for the subsystem overview.
Schema regeneration
Schema is mastered in the Rust elemental-engine workspace. To regenerate Pydantic models after a Rust-side change:
ELEMENTAL_ENGINE_PATH=../elemental-engine python scripts/regen_schema.py
CI checks for schema drift on every PR.
Development
uv sync --dev
uv run pytest # all tests
uv run pytest -m corpus # opt-in corpus smoke
uv run ruff check .
uv run ruff format .
uv run mypy src/
License
Apache-2.0. See LICENSE and NOTICE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elemental_ingest-0.2.0.tar.gz.
File metadata
- Download URL: elemental_ingest-0.2.0.tar.gz
- Upload date:
- Size: 257.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53c1f3bb084d7796350d69d9d40e3d6e5eaa442b798ba10ce6921575265296e9
|
|
| MD5 |
4877bb79600910b44c9015254b686d01
|
|
| BLAKE2b-256 |
27d9549012a500dc5f99db69ac9fc1d98e95dc7af155063aae557cf764282889
|
File details
Details for the file elemental_ingest-0.2.0-py3-none-any.whl.
File metadata
- Download URL: elemental_ingest-0.2.0-py3-none-any.whl
- Upload date:
- Size: 79.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f11716fc2b5262dd3549527511a3a823ea2fe7a48f7ed3f42189197bf22d735e
|
|
| MD5 |
2a3c94b4cb2ab8ceca7a306f5ad70116
|
|
| BLAKE2b-256 |
59a2552444c446dd4a96b2e585d6c20309d71cd909aaa038acfe7cd202549bdf
|