Skip to main content

ifckit

Framework-agnostic IFC builder library for architecture and infrastructure.

Tests PyPI Docs

Build valid IFC files in pure Python — no CAD host required. Works standalone, from Grasshopper, or via the JSON/CLI interface.

Files created can be viewed in its companion IfcViewer

Live: maucworks.github.io/web-ifc-viewer

alt text
IfcKit integrated with Grasshopper via the JSON pipeline.



alt text
IfcKit as the pythonic gernerator core of a configurator.

Install

pip install ifckit[ifc]    # with ifcopenshell (full functionality)
pip install ifckit         # without ifcopenshell (JSON/schema tools only)

Requires Python 3.10+.

Quick start: building

from ifckit import IfcModel, IfcSchema, PendingWall, Vec, Plane

model = IfcModel(name="My Project", schema=IfcSchema.IFC4, author="you")
floor = model.add_site("Site A").add_building("Building 1").add_storey("Ground Floor", elevation=0.0)

wall = PendingWall(
    footprint=[Vec(0, 0, 0), Vec(10, 0, 0), Vec(10, 0.3, 0), Vec(0, 0.3, 0)],
    plane=Plane.world_xy(),
    height=3.0,
    name="North Facade",
)
floor.add(wall)
model.save("project.ifc")

See examples/quickstart.py and examples/simple_building.py for fuller examples.

Quick start: bridge

from ifckit import IfcModel, IfcSchema, LengthUnit, PendingBeam, Vec, Line, BridgePartType, IBeamProfile

model = IfcModel(name="Bridge", schema=IfcSchema.IFC4X3, author="you", unit=LengthUnit.MILLIMETRE)
deck = model.add_site("Site A").add_bridge("Main Bridge").add_bridge_part("Deck", BridgePartType.DECK.value)

profile = IBeamProfile(height=600, width=300, web_thickness=10, flange_thickness=10)
beam = PendingBeam(axis=Line(Vec(0, 0, 0), Vec(3000, 0, 0)), profile=profile, name="Main Girder")
deck.add(beam)

model.save("bridge.ifc")

See examples/quickstart_bridge.py and examples/simple_bridge.py for fuller examples including alignments.

Supported schemas and element types

Element Class IFC4 IFC4X3
Wall PendingWall ✓
Slab PendingSlab ✓
Column PendingColumn ✓
Beam PendingBeam ✓ ✓
Space PendingSpace ✓
Alignment PendingAlignment ✓

Profiles: IBeamProfile, LBeamProfile, SteelProfile, and arbitrary polygon profiles.

JSON build

Build an IFC file from a JSON description — useful for CLI pipelines and REST APIs:

from ifckit.json_build import build

build("model.json", "output.ifc")

Or from the command line:

python -m ifckit model.json output.ifc

The JSON schema mirrors the Python API. See examples/example_building.json for a full example.

Grasshopper

Grasshopper Script components are in grasshopper/src/. Each component is a standalone Python file with @component / @input / @output annotations.

To regenerate the .gh file from source, run grasshopper/script/build_gh.py inside the Rhino ScriptEditor with Grasshopper open.

Installing ifckit in Rhino 8

Rhino 8 ships with its own CPython 3.9 environment. Install ifckit into it from the Rhino ScriptEditor (EditPythonScript) or a Script component:

import subprocess, sys
subprocess.run([sys.executable, "-m", "pip", "install", "ifckit[ifc]"], check=True)

ifcopenshell is bundled with Rhino 8, so the [ifc] extra will install it only if it is not already present.

To install a local development checkout instead:

import subprocess, sys
subprocess.run(
    [sys.executable, "-m", "pip", "install", "-e", r"C:\path\to\ifckit"],
    check=True,
)

After installing, restart Rhino once to make the package available in all Script components.

Development

pip install -e ".[dev]"
pytest tests/          # run tests
ruff check ifckit/     # lint

Metadata

Release files for ifckit 0.3.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 ifckit 0.3.0
File Size Uploaded
ifckit-0.3.0.tar.gz 344.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ifckit 0.3.0
File Interpreter ABI Platform
ifckit-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 718.4 kB

Release files / ifckit-0.3.0.tar.gz

Download URL ifckit-0.3.0.tar.gz
Size 344.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a39dd9aad6ac5cb029fe20d618abf0780cf3e37d6b2fa7b568083e8aa2f4fd7a
BLAKE2b-256 checksum
How to use checksums
afaaaee40587c805be90a49f47efbc8b6abd2d81962edff25a185bcffe327207
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / ifckit-0.3.0-py3-none-any.whl

Download URL ifckit-0.3.0-py3-none-any.whl
Size 373.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9242b4b8071b05e7ad47c5baebb4251f37ec8d65d2c499d15b77a3e525c60e1e
BLAKE2b-256 checksum
How to use checksums
dfc43df88276f251aaf3fed1cca1965c398359319287b7c02f94465718545909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

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