ifcos-core-runtime
IfcOpenShell Python Runtime
Quick Reference
Critical Warnings
- ALWAYS use
==for entity comparison, NEVERis. Each query returns a new Python wrapper object. - ALWAYS set entity references to
Noneafter callingmodel.remove(). The C++ object is deallocated regardless of Python reference count. - ALWAYS keep a reference to the
ifcopenshell.fileobject alive while any entities from it are in use. If the file is garbage-collected, all entity wrappers become dangling pointers (segfault). - NEVER write to an
ifcopenshell.filefrom multiple threads. The C++ backend has no locking. Concurrent writes corrupt the model or crash. - NEVER iterate all entities and filter manually when
by_type()exists.by_type()uses an internal index and is 10-100x faster. - NEVER use
get_info(recursive=True)on large models. It materializes the entire entity graph into memory. - ALWAYS use named attribute access (
wall.Name) instead of positional index access (wall[2]). Positional indices vary by entity type and schema version. - ALWAYS check
model.schemabefore accessing schema-specific attributes.
Decision Tree: Entity Reference Safety
Working with entity references?
More from openaec-foundation/computational-design-day-delft-march-2026
blender-core-api
Guides Blender Python API usage including bpy module structure, RNA data access, context system, dependency graph, and operator invocation. Activates when writing bpy scripts, creating Blender addons, or accessing Blender data blocks programmatically.
1blender-syntax-panels
Defines Blender UI panel creation including bpy.types.Panel, draw() method, UILayout API (row/column/box/split), bl_space_type, bl_region_type, bl_category, sub-panels, draw_header, menus, and UIList. Activates when creating custom Blender panels, building addon interfaces, or working with UILayout elements.
1ifcos-syntax-api
Documents the ifcopenshell.api module system with all 30+ API modules, invocation patterns via api.run() and direct module calls, parameter conventions, and module categorization. Activates when creating IFC entities, modifying properties, managing spatial structure, or using any ifcopenshell.api function.
1bonsai-impl-bcf
Guides implementation of BIM Collaboration Format (BCF) workflows in Bonsai including creating BCF topics, adding viewpoints with camera snapshots, managing comments, importing/exporting BCF files (v2.1 and v3.0), and integrating BCF issue tracking with IFC element references. Activates when working with BCF files, BIM issue tracking, clash report management, or collaboration workflows in Bonsai.
1ifcos-impl-mep
Guides MEP (Mechanical, Electrical, Plumbing) modeling in IFC using ifcopenshell.api.system including IfcSystem, IfcDistributionElement, ports, connections, flow segments, fittings, and MEP-specific property sets. Activates when creating HVAC systems, piping networks, electrical circuits, or MEP elements in IFC models.
1ifcos-impl-cost
Guides IFC cost management using ifcopenshell.api.cost including cost schedules, cost items, cost values, cost quantities, and 5D BIM workflows. Activates when implementing cost estimation in IFC models, creating cost schedules, or linking quantities to cost items.
1