bonsai-syntax-spatial
Installation
SKILL.md
Bonsai Spatial Structure Syntax
Version: Bonsai v0.8.x | Blender 4.2.0+ | Python 3.11 Module path:
bonsai.*— NEVERblenderbim.*Source files:core/spatial.py,tool/spatial.py,bim/module/spatial/
Critical Warnings
- ALWAYS use
bonsai.*imports. NEVER useblenderbim.*— renamed in 2024 (v0.8.0+). - ALWAYS build spatial hierarchy via
IfcRelAggregatesusingifcopenshell.api.run("aggregate.assign_object", ...). NEVER create spatial elements without connecting them to the hierarchy. - ALWAYS use
ifcopenshell.api.run("spatial.assign_container", ...)to place physical elements in spatial containers. NEVER set containment via direct attribute manipulation. - ALWAYS pass
productsas a list (v0.8+ breaking change):products=[wall], NOTproduct=wall. - NEVER delete
IfcProject— it is the root of every IFC model. Bonsai operators enforce this constraint. - ALWAYS set a default container (typically
IfcBuildingStorey) before creating elements. Usebpy.ops.bim.set_default_container(container=storey_id). - NEVER assign an element to multiple containers via
IfcRelContainedInSpatialStructure— an element can only be contained in ONE spatial structure. UseIfcRelReferencedInSpatialStructurefor multi-storey references. - ALWAYS use
ifcopenshell.api.run("root.create_entity", ...)to create spatial elements. NEVER usemodel.create_entity()— it skips GlobalId generation and ownership assignment.