Skip to main content

Extract structural RC models from IFC files into the elemental-engine JSON contract.

Project description

elemental-ingest

CI

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elemental_ingest-0.2.0.tar.gz (257.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elemental_ingest-0.2.0-py3-none-any.whl (79.5 kB view details)

Uploaded Python 3

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

Hashes for elemental_ingest-0.2.0.tar.gz
Algorithm Hash digest
SHA256 53c1f3bb084d7796350d69d9d40e3d6e5eaa442b798ba10ce6921575265296e9
MD5 4877bb79600910b44c9015254b686d01
BLAKE2b-256 27d9549012a500dc5f99db69ac9fc1d98e95dc7af155063aae557cf764282889

See more details on using hashes here.

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

Hashes for elemental_ingest-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f11716fc2b5262dd3549527511a3a823ea2fe7a48f7ed3f42189197bf22d735e
MD5 2a3c94b4cb2ab8ceca7a306f5ad70116
BLAKE2b-256 59a2552444c446dd4a96b2e585d6c20309d71cd909aaa038acfe7cd202549bdf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page