Definition - types and occurrences
In an IFC file a wall type and a wall are two different objects. The type is IfcWallType; the wall standing in your building is an IfcWall, and a relationship in the file says that this wall is an occurrence of that type.
Fifty walls of the same construction are fifty occurrences pointing at one definition. Change the definition and you have changed all fifty.
What the type carries is whatever is true of the construction rather than of any particular wall - properties, and materials. The occurrence keeps what is genuinely its own: where it stands, what it is called, which storey it is on, and any properties you have attached to that one wall.
Types are two different kinds of thing
That division sounds tidy until you ask where a wall’s thickness lives, or a stair’s number of treads. And the answer is not the same in the two cases, because the word type covers two quite different arrangements.
A type can be a reusable block. The traditional CAD idea: the type carries geometry, and every occurrence is that geometry, placed somewhere. A chair, a bollard, a light fitting. Bonsai’s parametric objects work this way too - a window, a door, a stair - and the consequence is the one people trip over. The parameters belong to the type, not to the occurrence. A stair type holds one number of treads, one going and one rise, and its occurrences take their geometry from it. Change the number and you have changed every stair of that type in the building. If you want a stair with a different number of treads, what you want is a second type.
A type can be a definition of a construction. Here the type carries no explicit geometry at all. It carries a material layer set - the layers, their materials and their thicknesses, in order - or a material profile set, which is a cross-section, possibly a composite one. A 300mm cavity wall type. A 254x146 universal beam type.
Here the type fixes the section, not the extent. Every wall of that type has that build-up and therefore that thickness, while each is its own length and its own height. Every beam of that type has that profile, and each is as long as it needs to be. The type says what it is made of; the occurrence says how much of it there is.
That second kind is most of a building, and it explains something noted in What is parametric and what is not - that a door carries a full set of dimensions while a wall carries rather less. The wall’s remaining dimensions are not missing. They belong to each wall.
And a type can be neither. Carrying no geometry and no material, it constrains nothing: a name with some properties attached, whose occurrences are free to be any shape. Two occurrences of such a type can look nothing like each other and the file is not wrong.
So look at the type before assuming what it does. Nothing in its name tells you which of the three you have, and they behave completely differently.
Where the family analogy stops
If you are coming from Revit, types are the nearest thing to families, and the analogy is close enough to be worth using - definition separate from instance, edit the definition and the instances follow, occurrences keeping their own placement. The three kinds above are the first thing it does not prepare you for. Here is the other.
A type is optional. An IFC object does not have to be an occurrence of anything. A wall with no type is a perfectly legal wall: it carries its own properties and its own materials and stands there being a wall. That is unlike the world you are used to, where everything is of a family whether you thought about it or not, and it is worth knowing when a model somebody sends you appears to have no types in it. It may genuinely have none.
The other thing called “type”
Two different ideas in IFC are both called type in ordinary conversation, and it is worth separating them once.
The predefined type is the second half of an object’s classification - an IfcWall may be PARTITIONING or SHEAR, from a list the schema publishes. That is described in The model is a graph of standard objects, and it is an attribute of the object.
A type object is what this page is about: a separate entity in the file, which other objects point at. One is a word from the standard’s own list. The other is a thing you make, name, and edit. An IfcWall can perfectly well have a predefined type of PARTITIONING and no type object at all.
Where content comes from
There is no vendor content library inside Bonsai and no marketplace you have to buy into. Two things fill the gap, and the second is better than it sounds.
The first is that you build the types. For the parametric kinds this is quicker than it sounds - a wall type is a stack of layers with thicknesses, a door type is a set of dimensions - and it has the considerable advantage that the result says what your practice actually builds rather than what somebody’s marketing department modelled.
The second is that you append them from another IFC file, and here is the whole of it: a library in Bonsai is just an IFC file. There is no separate content format to be locked into, no proprietary container, nothing to convert. You point Bonsai at a .ifc file, browse what is in it, and bring across the types you want - one at a time, by a query, or the lot.
Bonsai ships nine of them, and the list tells you the intended shape of the thing: steel section libraries for Australia, Europe and the United States, plus furniture, entourage and landscape.
The consequence is the one that matters. Your last project is a library. So is the model a consultant sent you, so is a manufacturer’s published model of their product, and so is anything else anybody puts out, because it is all the same format. You can also mark up types in your own file as library items and save it out for the office to share. The standard office library that most practices spend years failing to build is, here, a file on a shared drive.
That is The file is the document arriving from a different direction. Content is not a separate kind of thing that needs its own machinery. It is a model, and you already know how to open one.
Last updated 4 September 2026.