COVER PICTURE BIM FILE FORMAT

.bim – a new BIM file format

Can BIM be free from complex standards and concepts? Can we actually attach the data we want to the geometries that represent building elements freely and without reading hundreds of pages of documentation?

At the beginning of 2022, a new file format was released for the BIM industry. It’s called dotbim (extension: .bim). The project is 100% free and open and was created to go in a completely different direction, different from the solutions that are already existing.

Dotbim project was created to make BIM files simple. That’s why the manifesto that includes rules regarding it looks like this:¨

  • Transfer geometry and data
  • Free and open
  • Make it possible to write tools for it in a couple of hours
  • 1-page documentation
  • Make sure all others can support all of its features

So the schema of .bim files is as simple as it gets. The documentation page is 1 page long, so let’s go through it with a couple of comments.

schema of dotbim file format
Picture 1. The whole schema of dotbim file format

Geometries in a new BIM file format

Geometries that can be stored in .bim files are triangulated meshes only. There is no room for any other types of geometry. It means that any other type of geometry should be first discretized into meshes.
Mesh representation of geometry
Picture 2. Mesh representation of geometry

Such an approach makes it extremely easy from the importer’s point of view. Most of the CAD file formats support multiple different geometry types, but that means each one has to be supported by the importer. It is often a big challenge to make it possible to support all of them properly. That’s one of the reasons why every CAD/BIM user is familiar with cases when some of the elements disappeared during export/import. Or that it displays geometry in a slightly different way.

Another thing is: that meshes are probably the most straightforward geometry type that you can get in 3d. So if the importer of .bim files will support proper mesh import, which is a relatively easy task: then it will import all geometry properly! Not only some parts of it.

Some might say that sure: meshes are cool, but BREPs can describe a 3d shape more precisely. That’s true, but in my opinion in the AEC industry, in most cases, we don’t need that infinitely precise model of a wall, beam, or rebar. For coordination and often even for manufacture we will be fine with discretized geometry only. Actually, BIM coordinators can’t tell if they’re looking at the mesh or BREP most of the time. It’s different from automotive/naval industries or furniture manufacturers where these BREPs are in great demand.

Transformations in .bim format

There are only two transformations allowed in .bim files: translation and rotation. These are stored as elements’ properties, and they are called “vector” and “rotation” there. So each of the mesh stored can be simply placed using these two. Each element stores the id of the mesh which is used to describe this element and then it’s moved and rotated into the correct place. That also means that reusing the same mesh multiple times in different places in the model is possible! It’s really useful if you’d like to have a smaller file size because that means that mesh will be stored once but will represent multiple different elements. E.g. Let’s imagine a stadium with thousands of the same chairs. Then only one mesh that represents a chair will be stored in a file, and later using its id it will be referenced in these thousands of different places.

Data

You can attach some data to the file itself and to every element in the model. All data is stored as a simple dictionary. So you have just a list of keys and values that describe the element. What data can be stored there? Any data you want, that’s up to you!
data attached to Top Chord element
Picture 3. An example file with truss, data attached to Top Chord element

Example file

Let’s see a simple Teapot.bim file to find out what it looks like inside. At the top, we see the schema version which is “1.0.0” and the start of the mesh definition. You can see that mesh_id is 0, and in fact, in this file, this is the only mesh stored. You can see coordinates there, saved as one big list of all coordinates. They are in fact grouped as in the picture below:

Definition of mesh’s vertices
Picture 4. Definition of mesh’s vertices
Next you will find indices. This is another list, but this time it stores information about which points (that were defined in the first list) we should use to build the triangles (faces) that define this mesh.
Definition of mesh’s faces
Picture 5. Definition of mesh’s faces

That’s the whole definition of mesh. Let’s go to the elements then. In this example again: there is only one element. It represents a teapot indeed.

Definition of elements
Picture 6. Definition of elements

That’s the whole definition of mesh. Let’s go to the elements then. In this example again: there is only one element. It represents a teapot indeed.

File’s data
Picture 7. File’s data

And that’s all. In fact, if you get it already, it means that you fully understand the .bim file format, cause there is nothing more. Obviously typical .bim files contain much more meshes and elements and more data attached to each element, but if you get this simple example – you already understand the whole schema.

As a result, we have a model that looks like this:

Teapot example result
Picture 8. Teapot example result

More example files can be found here LINK: https://github.com/paireks/dotbim/tree/master/test/ExampleFiles

Bridge example

Marcin Woch created amazing example of a .bim file which you can explore right here:

Manipulate 3D model below by yourself! 

Once you click on the Online 3d Viewer icon – it will open in a new tab the whole model. Then you can explore all data attached to different elements once you click on them. For a few of them, you will even find some links to some websites. So you can even attach some URL as a property of an element.

Goal of BIM file format

Aim was to introduce an open, free and easy to read and write file format for the BIM industry.  Simple file format = simple development of reliable software.

I believe that making it simple for developers impacts the experience of the end-user. It’s quite a challenge to build reliable tools on top of the complex file formats.

It’s also good to mention that the file format itself is meant to stay the same just as it is right now. There is no plan to increase the number of its features over time or to break the userspace somewhere. Such a decision was made in favour of developers as well. I can’t expect every developer to update every software based on .bim every time I decide that I should rename something or organise something slightly better. There is a schema_version that makes it possible to introduce some sort of an update in case we’d really need to add something, but ideally, it will stay “1.0.0”. That approach is also much different from many file formats that constantly try to improve, which forces all other software to update functionality constantly.

Comparison to IFC

You probably already can find many differences between dotbim and IFC schemas, but to sum it up:

.bim .ifc
Is it open? Yes Yes
Is it free? Yes Yes
Type Text file Text file
What it contains Geometry + data attached Geometry + data attached in the standardized way
Types of geometries allowed Triangulated meshes only A lot of different types: meshes, extrusions, b-reps, etc.
Pages of documentation 1 100+
Dion Moult created a much more extended comparison that can be found HERE.

Where to start

If you’d like to check out general information about the file format itself, check out the website:

 https://dotbim.net/

There are some developer tools, importers, exporters and converters for .bim files already. All libraries and applications that are using .bim files can be found listed here in the main repository:

https://github.com/paireks/dotbim

This main repository also contains documentation of the whole schema. If you’re a developer, there is also some guidance for you:

https://github.com/paireks/dotbim/blob/master/DeveloperTips.md

Thanks to Viktor Kovacs, Online 3D Viewer can read .bim files, so you can already drag and drop these files in the browser on that page:

https://3dviewer.net/

Example .bim file of a steel structure
Picture 9. Example .bim file of a steel structure

Future plans of file format

Obviously what makes file format truly powerful is the number of platforms that support it. That’s why I will be extremely happy if anyone would like to try it or develop tools around it for different platforms! Without the help of the community it won’t be possible to make it happen, so if you’d like to try it: just contact me, I will also try to help you with it, as much as we can.

Wojciech RadaczyńskiAuthor of the post
Wojciech Radaczyński is a programmer at Designbotic . Graduated from the Faculty of Civil Engineering at Wrocław University of Science and Technology. Author of .bim file format and creator of open-source plugins for Grasshopper like T-Rex, Pterodactyl, Brontosaurus, Megarachne.

Did you like that post ? Share it with others !

We spend a lot of time and effort creating all of our articles and guides. It would be great if you could take a moment to share this post !

Share:

Comments:

Subscribe
Notify of
guest
6 Comments
Oldest
Newest
Inline Feedbacks
View all comments
Ibrahim Almasri
Ibrahim Almasri
2 years ago

It’s amazing, the good part is when I read that there is no intention to develop it which means it’s going to make it easy for software and for engineers too.
Its like a foundation for the new future that you can not change !

Wojciech Radaczyński
Wojciech Radaczyński
2 years ago

Hey Ibrahim! Thank you for appreciating this decision! Not many people get why it is so important 🙂

Laurin
Laurin
2 years ago

Hey,
very interesting and minimalistic format.
How can one learn how to “show” a 3D model (.bim) in a blog post/homepage? Is there a guide/tutorial somewhere?

Cheers!
Laurin

Wojciech Radaczyński
Wojciech Radaczyński
2 years ago
Reply to  Laurin

Hey Laurin!

There is no tutorial I believe, but I can show you if you’re interested, mail me here: [email protected]

Best regards, Wojciech 😉

Michel Bohms
Michel Bohms
1 year ago

How can I represent relationships between objects? Or only attributes?

Wojciech Radaczyński
Wojciech Radaczyński
1 year ago
Reply to  Michel Bohms

Hey Michel,

it’s up to you 🙂 You can add such information in attributes, e.g. if you have a window and you need to say that this window belongs to this wall, you can add attribute inside the window with the value of the GUID of the wall. Generally dotbim encourage people to store data however they’d like, while IFC encourage people to do it in a standardized way. Depending on a tasks sometimes you need more this or more that 🙂

One of other ways how to link some objects together is described there: https://github.com/paireks/dotbim/blob/master/LinkingData.md. This is also some of the methods that allows to point from one object to another, so also it can represents some kind of relationships.

Author:

BIM Corner Guest

BIM Corner Guest

Download BIM CASE STUDIES:

After reading this guide you will learn:

  • How BIM is used on the biggest projects in Norway
  • What were the challenges for the design team and how were they solved
  • What were the challenges on the construction site and what was our approach to them

Newest articles: