Link IFCWalls with IFCBuildingStorey
Hey everyone,
I’ve been struggling for a while now with something that I thought should be pretty simple in Bonsai BIM, but it’s turning into a rabbit hole. Basically, I just want my walls to move when their building storey moves — no Blender drivers, no scripts, just proper IFC relationships doing what they’re supposed to do.
I have a master IFC with several IfcBuildingStorey objects — P00, P01, P02, each with its elevation set correctly. When I change the elevation of a storey, I would expect all the elements contained in that storey (walls, slabs, etc.) to move accordingly. But that’s not happening at all.
At first, I thought it was something about containment, so I checked: every wall is properly assigned to its corresponding storey. The relationships (IfcRelContainedInSpatialStructure) are there, and everything looks right both in the schema and in the property panels. But when I modify the storey elevation, the walls just stay in place. They don’t follow the level.
Then I noticed that when I try to edit the LocalPlacement of a wall, Bonsai won’t let me — the placement fields are greyed out, and I see something labeled “Inherited: AXIS2”. I assume that means the wall is using the storey’s placement or coordinate system somehow, but I can’t actually modify or override it. It feels like the placement is hard-linked but not actually dynamic.
I even went down the Python route using IfcOpenShell inside Blender. I opened the file, got all the storeys, and checked their placements and elevations. Then I tried reassigning each wall’s PlacementRelTo so it points to the corresponding storey’s placement, and updated the relative Z coordinates manually. The IFC data looks fine when I inspect it — but still, the geometry in Blender doesn’t move. Even after reloading the IFC, the walls stay where they were before. So either Bonsai isn’t updating the mesh representation when placement changes, or the IFC hierarchy isn’t being interpreted correctly.
At this point I’m kind of stuck between two worlds:
The UI side, where everything looks connected but isn’t actually dynamic.
And the Python/IFC side, where I can edit data but it doesn’t reflect visually.
I also noticed that I can’t edit LocalPlacement even if I unlink the wall temporarily — it just keeps the “Inherited” tag. Maybe that’s related? I don’t really understand what Bonsai means by “Inherited AXIS2”, but I suspect it’s connected to the local coordinate system being shared between objects.
What I want is pretty straightforward: when I move a storey, the elements that belong to it should move too. I don’t want to use Blender drivers or hard-coded constraints, because I want to keep everything IFC-native and interoperable. Just plain IfcLocalPlacement referencing the storey’s placement, the way it’s supposed to work.
So my questions are basically:
Is this workflow actually supported in Bonsai right now?
Should walls automatically follow their storey’s elevation when the storey moves?
What does “Inherited AXIS2” really mean? Is there a way to make it local or editable?
Or is this just not implemented yet in the current build?
I’ve already tried reloading the IFC, updating it, reassigning the storeys, checking the schema, even scripting it manually — nothing makes the geometry move. Everything looks right on paper, but not in the model.
I’d really appreciate it if someone could clarify whether this is a limitation, a bug, or if I’m just missing something obvious in how Bonsai handles placements and elevations.
Thanks a lot in advance,
Edit:
Blender version: 4.4
Bonsai version: 0.8.3-Post1
Windows version: 11
Comments
I don't think so
That would be nice.
But I think it is more complicated and would need a Story System, which when editing a single Story (moving or shrinking) will ask you how to deal with the neighbored Stories (Shrink ? Move all ?, ...)
And then we would want something to parametrically link our Wall Tops and Bottoms to Stories, or better "Levels" bound to Stories. And better have different Height Levels for each Wall Component. Like outer finish/insulation will extend the Slab below while Wall structure/core will set on top of that Slab.
I think for now we have to do such modifications to Stories by manually editing each related Entity.
I would be totally fine if we could do this without parametric, if we could just select all related Meshes at a time and marquee select the related vertices to move large parts of the building in Z (in this case) and the IFC updates. But I think this is still far from being possible either.
Would be a good feature request.
thank you for your response, hope in the future we would able to achieve this
definitely!
See this on why some people don't think it's a good idea:
https://community.osarch.org/discussion/456/blenderbim-constraining-wall-heights-to-floor-elevations-and-slab-thickness-with-blender-drivers
This on what's the proper ifc way:
https://community.osarch.org/discussion/727/blenderbim-locking-parent-children-objects-to-a-ifcbuildingstorey#Comment_8846
You also mentioned placements and spatial containment - this should work for moving , not stretching, contained elements are ment to be placed relative to the container and therefore move with it:
https://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/schema/ifcgeometricconstraintresource/lexical/ifclocalplacement.htm
thanks, i'll definetly take a look