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

IFC Viewer

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

Download files

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

Source Distribution

ifckit-0.2.2.tar.gz (282.1 kB view details)

Uploaded Source

Built Distribution

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

ifckit-0.2.2-py3-none-any.whl (295.0 kB view details)

Uploaded Python 3

File details

Details for the file ifckit-0.2.2.tar.gz.

File metadata

  • Download URL: ifckit-0.2.2.tar.gz
  • Upload date:
  • Size: 282.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ifckit-0.2.2.tar.gz
Algorithm Hash digest
SHA256 809ed0a0a81916623fd19855e617f4e690d376fbb993ed8757e8a6190b42076d
MD5 cac493af9fda945ec51133e2f7d96072
BLAKE2b-256 89f36903b5bd26f0024c60477cbbe04a91f0a0635b9f0a7a6d0a9b82070ba71d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifckit-0.2.2.tar.gz:

Publisher: publish.yml on maucworks/ifckit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ifckit-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: ifckit-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 295.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ifckit-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bcab3d00eb374964711b0e936fe9d0bb7a3b248d15e5d2284ba9e0f45f366175
MD5 9fc22459555cb9e1abd584394d9536a4
BLAKE2b-256 3779dc9830a813b71f930de73ae02952bc27e69b55fa4168e1c1f595cb967ea0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifckit-0.2.2-py3-none-any.whl:

Publisher: publish.yml on maucworks/ifckit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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