ifcopenshell
Python bindings, utility functions, and high-level API for IfcOpenShell
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later; IFC file must be in a supported schema (IFC2x3 TC1, IFC4 Add2 TC1, IFC4x1, IFC4x2, or IFC4x3 Add2).
- 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 · maintenance · safety
copyleft license (copyleft) — 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.
last release 2026-04-13 (123 days) · last repo commit 2026-08-14 · 2,705 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 694,928 downloads/mo, #5,311 on PyPI
Alternatives
Verify before relying
import ifcopenshell
model = ifcopenshell.open('model.ifc')
for wall in model.by_type('IfcWall'):
print(wall.Name)- 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.
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 on it.
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
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.
Requires Python 3.10 or later; IFC file must be in a supported schema (IFC2x3 TC1, IFC4 Add2 TC1, IFC4x1, IFC4x2, or IFC4x3 Add2).
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)
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 | copyleft license copyleft |
| Python support | Supports the current Python release <3.15,>=3.10 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 6 packagesshapelynumpyisodatepython-dateutillarktyping-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 |
| Classifiers | License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)Programming Language :: Python :: 3 |
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
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “IFC file parsing and manipulation”
- ifcopenshellIfcOpenShell is a Python library for parsing, manipulating, and…
- fluent.syntaxParse, write, and transform Fluent localization files with built-in…
- pyProvides cross-platform path objects, INI file parsing, code…
Give your agent the search over MCP, or paste the wish link into any chat.
More Scientific/Engineering packages
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
pandas provides fast, flexible data structures (Series and DataFrame) for loading, cleaning, transforming, and analyzing labeled or relational data in Python.
scipy provides numerical algorithms for mathematics, science, and engineering—including optimization, integration, linear algebra, Fourier transforms, signal and image processing, and ODE solvers—built on numpy arrays.
scikit-learn provides a comprehensive Python library for supervised and unsupervised machine learning, including classification, regression, clustering, dimensionality reduction, and model evaluation tools built on NumPy and SciPy.
Install it if you need to train, evaluate, or deploy supervised or unsupervised learning models.
dill extends Python's pickle module to serialize and deserialize a much wider range of Python objects, including functions, lambdas, classes, and interpreter sessions, to byte streams for storage or network transmission.
Multiprocess is an enhanced fork of Python's standard multiprocessing library that uses dill for better serialization, allowing you to spawn processes with a threading-like API and share complex objects between them.
Install it if you use multiprocessing and encounter pickle serialization limits with lambdas or complex objects.
See also coal-library · libcoal · skforecast · cyvcf2 · scapy · coal · lazr.config · cf-units · contourpy · colcon-cd