Skip to main content

Framework-agnostic IFC builder library for architecture and infrastructure

Project description

ifckit

Framework-agnostic IFC builder library for architecture and infrastructure.

Tests PyPI

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

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

ifckit-0.2.0.tar.gz (194.9 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.0-py3-none-any.whl (201.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ifckit-0.2.0.tar.gz
  • Upload date:
  • Size: 194.9 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.0.tar.gz
Algorithm Hash digest
SHA256 931d0a4dece0802bc4b1aeaec55233d037fe008571df92d35b04bf3e5e1f9456
MD5 80dea4ae189a1d1b2cd963b9f8c2976f
BLAKE2b-256 484514f29054e13867dd4b56e1b64da8bb3d2447ebb88de6cc4b08a11b7413e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifckit-0.2.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: ifckit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 201.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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae49743a9e10f2ba15d3e1cd60cc9dbe9111b7aa9efe846029552006a761412a
MD5 b68b9186e7377bbff0e1d9c738532b99
BLAKE2b-256 3e19152a3fd050245da65b87f1cc690a121c5a40e220a8b1540261e8417fbe80

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifckit-0.2.0-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.

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