What is parametric and what is not

Select a wall in your model, press G, and drag it across the room. Its windows and doors travel with it, still in their openings, still glazed.

Now select just a window in that wall and drag it sideways. The window moves. The hole it was sitting in stays exactly where it was.

Both of those are Bonsai working correctly, and nothing on your screen told you which one you were about to get. That is what this page is for.

There is a list, and it is short

Bonsai keeps a registry of the object types that have parameters at all. There are ten of them: doors, windows, stairs, railings, roofs, arrays, pipe segments, duct segments, walls and slabs.

That is the registry of things Bonsai builds from a set of parameters, and a few more can be regenerated without being on it: a beam or a column takes its shape from a cross-section held on its type, and a space from the walls that enclose it. A door in your model knows its own leaf width and its frame depth, and can rebuild its geometry from them. A handrail bracket you modelled by hand knows nothing about itself - it is a shape you made, which Bonsai will store faithfully and hand back to you unchanged, forever.

The list is not uniform, either. A door or a window carries a full set of dimensions and can regenerate its whole shape from them. A wall carries rather less: a height, a length, an angle, and the layers of its material. Both are on the list, but they are not parametric in the same way, and the reason is that their parameters live in different places - see Types and occurrences. A window’s belong to its type, so every window of that type is the same window. A wall’s build-up belongs to its type but its height and length belong to the wall.

Everything else in the IFC file - and it is most of the model - is described rather than generated. It has properties, a classification, a place in the building and relationships to other objects, and none of that makes its geometry recompute when something near it changes.

What is genuinely kept up to date

Some relationships really are maintained, and they are worth knowing because they are the ones you can stop thinking about.

Position is the main one, and it is inherited from IFC itself rather than bolted on. An opening is positioned relative to the wall it is cut in, and a window is positioned relative to the opening it fills. Move the wall and the whole assembly goes with it, because in the file it was never anywhere else - its position was always expressed as an offset from its host. This is why the first gesture at the top of this page works.

Deletion is maintained in the same direction. Delete a window and Bonsai removes the opening it was filling, so the wall closes up behind it. You do not get a rectangular hole with nothing in it.

And a parametric object’s own consequences are maintained. Change a window’s width in its parameters and the opening is recut to match, because the opening was generated from the window in the first place.

What is a command you invoke

Wall joins are the clearest case of the other kind. Extend, Butt, Mitre, Merge and Split are operations you run on two walls, described in the wall tool reference. Each of them works out where the walls should meet and reshapes them accordingly.

What they leave behind is geometry. The join was a calculation, not a promise. Move one of the two walls afterwards and the mitre does not chase it - you are left with a shaped end that no longer meets anything, and it will sit there looking wrong until you deal with it.

The second gesture at the top of the page is the same story. Dragging a window along its wall does not drag the hole, because nothing is watching the window and updating the wall on its behalf.

Regen

Which is why there is a Regen, on Shift-G, and why it is worth knowing about early.

It is one key that means different things depending on what you have selected. On a wall it recalculates the wall and its joints. On a slab it recalculates the slab, and the walls running up underneath it. On a window or a door it puts the opening back where the window now is. On a beam or a column it rebuilds the shape from its cross-section. On a length of pipe or duct it adjusts the positions and lengths of everything connected to it. On a space it regenerates the space footprint from the walls that enclose it.

That single key is the honest summary of the whole page. Parametric, in Bonsai, means that an object can be recomputed from its parameters when you ask - not that it recomputes itself whenever something near it moves.

You cannot tell by looking

There is no marking on the model that distinguishes the two, because both produce the same thing: geometry, sitting where it is meant to sit. A mitre that is being maintained and a mitre that was calculated last Tuesday look identical, right up until the moment one of them stops being right.

The habit worth forming is small. When you have moved things around - shifted a wall, dragged a window, changed a level - select what you disturbed and press Regen before you go and look at the result. It costs a keystroke and it makes the question go away.

The trade is a real one and it goes both ways. You have to remember to regenerate. In exchange, nothing in your model quietly reshapes itself because of something you did at the other end of the building, and a shape you drew by hand stays exactly as you drew it. Whether that suits the way you work is your call; what matters is knowing which of the two you are dealing with, and now you do.