skillfed

ifcopenshell

Python bindings, utility functions, and high-level API for IfcOpenShell

ifcopenshell v0.8.5 694.9K downloads/30d#5,311 on PyPI2,705
Copyleft license Active released

What it is and what it does

IfcOpenShell is a Python binding to an open-source C++ library for reading and writing IFC (Industry Foundation Classes) files—the standard format for Building Information Models (BIM) in architecture, engineering, and construction. The package provides both low-level schema access and high-level utility functions for extracting, querying, and modifying building geometry and metadata. It supports multiple IFC schema versions and includes geometric processing for spatial analysis.

Typically used by BIM software developers, data analysts, and researchers who need to programmatically access or transform building model data. The library integrates with shapely and numpy for geometric operations, and its runtime dependencies are lightweight and widely available. Active development and a large repository community (2705 stars) indicate ongoing maintenance and real-world adoption in the AEC (architecture, engineering, construction) industry.

Use it for:

  • Extract wall, door, and window properties from IFC models for energy analysis or cost estimation.
  • Automate clash detection or spatial conflict analysis between building systems.
  • Convert IFC models to other formats (via IfcConvert) for interoperability with non-BIM tools.
  • Query and validate building model data against project requirements or standards.
  • Programmatically generate or modify IFC files for parametric design workflows.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

IfcOpenShell is a Python library for parsing, manipulating, and working with Industry Foundation Classes (IFC) building information models across multiple IFC schema versions.

Yes. IfcOpenShell is actively maintained, carries no known vulnerabilities, and has strong adoption in the BIM community. The LGPL license is permissive for most use cases. Install friction is moderate but manageable thanks to prebuilt wheels. Choose this if you need to work with IFC files programmatically; it is the de facto standard Python library for that task.

Install

ifcopenshell on PyPI

pip

pip install ifcopenshell

uv

uv add ifcopenshell

poetry

poetry add ifcopenshell

Installing ifcopenshell

Before you install

Installation is straightforward with prebuilt wheels for Python 3.10–3.13 across macOS (Intel and ARM), Linux, and Windows. The package carries medium install friction due to its compiled nature and six runtime dependencies including shapely and numpy, but wheels eliminate the need to compile from source.

License in practice

IfcOpenShell is licensed under LGPL-3.0-or-later (copyleft). You may use it freely in your own projects, but any modifications to the library itself must be shared under the same license; proprietary applications can link to it as a library without disclosing their own source.

Quickstart

import ifcopenshell

model = ifcopenshell.open('model.ifc')
for wall in model.by_type('IfcWall'):
    print(wall.Name)

Requires Python 3.10 or later; IFC file must be in a supported schema (IFC2x3 TC1, IFC4 Add2 TC1, IFC4x1, IFC4x2, or IFC4x3 Add2).

Verify before relying

  • Extent of geometric support for IFC4x1, IFC4x2, and IFC4x3 Add2 schemas (description states extensive support for IFC2x3 TC1 and IFC4 Add2 TC1 only).
  • Performance characteristics when working with large or complex IFC models.
  • Availability and maturity of the Python API relative to the C++ API.

Package facts

License not declared (copyleft)
Python support supports the current Python release (<3.15,>=3.10)
Install friction medium — platform-specific wheel
Runtime dependencies 6 — shapely, numpy, isodate, python-dateutil, lark, typing-extensions
Maintenance actively maintained — 123 days since the last release
Last repo commit
First released
Downloads 694,928/month — #5,311 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: ifcopenshell-0.8.5-py310-none-macosx_10_15_x86_64.whl; ifcopenshell-0.8.5-py310-none-macosx_11_0_arm64.whl; ifcopenshell-0.8.5-py310-none-manylinux_2_31_aarch64.whl; ifcopenshell-0.8.5-py310-none-manylinux_2_31_x86_64.whl; ifcopenshell-0.8.5-py310-none-win_amd64.whl; ifcopenshell-0.8.5-py311-none-macosx_10_15_x86_64.whl; ifcopenshell-0.8.5-py311-none-macosx_11_0_arm64.whl; ifcopenshell-0.8.5-py311-none-manylinux_2_31_aarch64.whl; ifcopenshell-0.8.5-py311-none-manylinux_2_31_x86_64.whl; ifcopenshell-0.8.5-py311-none-win_amd64.whl; ifcopenshell-0.8.5-py312-none-macosx_10_15_x86_64.whl; ifcopenshell-0.8.5-py312-none-macosx_11_0_arm64.whl; ifcopenshell-0.8.5-py312-none-manylinux_2_31_aarch64.whl; ifcopenshell-0.8.5-py312-none-manylinux_2_31_x86_64.whl; ifcopenshell-0.8.5-py312-none-win_amd64.whl; ifcopenshell-0.8.5-py313-none-macosx_10_15_x86_64.whl; ifcopenshell-0.8.5-py313-none-macosx_11_0_arm64.whl; ifcopenshell-0.8.5-py313-none-manylinux_2_31_aarch64.whl; ifcopenshell-0.8.5-py313-none-manylinux_2_31_x86_64.whl; ifcopenshell-0.8.5-py313-none-win_amd64.whl

License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)Programming Language :: Python :: 3

Tags

IFC file parsing and manipulationbuilding information model processingIFC schema support pythongeometric analysis of IFC modelsBIM data extraction and editing
bimifcbuilding-models

More Scientific/Engineering packages