Parametric geometry

Parametric geometry is geometry described by numbers and built from them. A parametric door isn’t a set of surfaces somebody pushed into shape; it is an overall width, an overall height, a leaf thickness, a frame depth and a lining depth, plus an instruction for making a door out of those. Change one of the numbers and the shape is built again from the new one.

The other kind is geometry you made. A shape is a shape: it records what it looks like and nothing about where it came from. Both kinds are ordinary, both are correct, and your model will contain a good deal of each.

The same is true of relationships between objects: some are kept up to date, and some were worked out once. Two drags will show you.

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.

There is a list

Bonsai saves your model as IFC, an open standard with a named class for each kind of building element, and it keeps a registry of the kinds it will build from parameters. Among them are doors, windows, stairs, railings, roofs, walls and slabs.

A few more things can be regenerated without being on the registry at all: 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.

The list isn’t uniform. 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 - because their parameters live in different places. 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.

It is a list of kinds, not a promise about every object of a kind. Being an IfcDoor doesn’t make something parametric; carrying a set of door parameters does. A door you modelled by hand, or one that arrived in somebody else’s file, is a perfectly legal door with a shape and no numbers behind it, and Bonsai will store it faithfully and hand it back unchanged. A wall is parametric when it has an axis and a material build-up to be generated from, and a wall you drew as a mesh with Blender’s own tools rather than Bonsai’s has neither. So the question is never “is a door parametric” but “is this door parametric”, and you answer it by looking for the parameters.

Everything else in the file, which is most of the model, is described rather than generated: its properties, classification, place in the building and relationships don’t make its geometry recompute when something near it changes.

What is genuinely kept up to date

Some relationships really are maintained, and these are the ones you can stop thinking about.

Position is the main one, and it comes from IFC itself rather than being bolted on by the software. 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. That is why dragging the wall brought its windows along.

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.

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.

Joins are calculated once

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 doesn’t 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 window drag at the top is the same story: nothing is watching the window and updating the wall on its behalf.

Regen

Regen, on Shift-G, is how you bring things back in step.

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, 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; and so on for other kinds of object.

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.

The same rule runs through the whole guide: the description is the durable thing, the result is regenerable, and when the model changes you regenerate. A stored quantity against the geometry it was measured from is the same arrangement, and so is a drawing against the model you last generated it from.

You can’t tell by looking

There is no marking on the model that distinguishes the two, because both produce 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 one of them stops being right.

The habit 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 look at the result. It costs a keystroke and makes the question go away.

The trade 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.