FreeCAD BIM development news - December 2018

generic screenshot of

Hi all,

Finally to the last report about BIM development for FreeCAD for this year! This is already the 21st of these reports I'm writing (I'm keeping a copy of all of them on the wiki of the BIM workbench's github repo if you are interested).

It's been a pretty amazing journey so far, as always, thanks so much to you who is sponsoring this effort by donating on my Patreon, LiberaPay or Paypal accounts. At some point in time I'll need to setup a special credits page for the BIM Workbench where you'll all appear! And if you aren't, join us!

Most of the images shown in this report are from a project we are currently working on in the open with Ryan and Regis, with a pretty interesting FreeCAD/Revit workflow. Check the files there if you're interested!

The end-of-year balance

This year I really could spend quite a lot of hours working on FreeCAD and BIM tools, and I hope you'll agree with me that it rendered pretty decent results already. Really at this point I consider that we begin to have a very stable and powerful open-source BIM solution. I do almost all my architecture projects with it nowadays, and in many areas it already does better than the commercial alternatives we all know of. For example:

  • No other BIM app as so many and so powerful modelling tools than FreeCAD (apart from Rhino maybe). Try modelling a car or a mouse or a cellphone in another BIM app... But it is the bread and butter of FreeCAD
  • The BIM paradigm is very lightweight. You are not forced to use the wall tool to build walls. Walls don't need to be made in a certain way. You can use the wall tool to build a beam. Anything you model can be made into a wall, a beam or anything else. It's basically a thin layer of semantics on top of your model, or in other words, "agnostic" objects become "building-meaningful". This allow you to import almost any kind of 3D data into FreeCAD and use it in BIM models
  • The parametric system of FreeCAD has become amazingly deep over the last year, and even if we don't have a visual programming interface like Dynamo or Grasshopper (yet!), the possibilities to plug one piece of data into another are wild
  • The 3D view is comfortable enough to model directly in it. You have very fine control over what to turn on or off, you can see your working plane in the 3D view, etc. I'm always surprised at how much this is difficult in many BIM applications, while in non-BIM 3D modelling apps (SketchUp, Blender, 3DSMAx,...) it is absolutely normal
  • All individual objects are easily searched and found, and can be named and grouped as you like, making the model extremely organizable, and maybe even more important, freely organizable (just like you decide how to organize your files and directories)
  • This might be hard to believe, but comparing the IFC export of FreeCAD to other BIM apps, I dare to say in more and more cases we do far better. The model structure is more consistent (all organizing structures of FreeCAD such as levels, groups, assemblies/components are supported), and thanks to our friends at IfcOpenShell, when most other BIM apps desist and pitifully triangulate complex shapes, FreeCAD's IFC support can go pretty far and handle complex geometry with ease and faithfulness. It even supports NURBS surfaces, but as no other BIM application does so, I still couldn't test that very far.
  • I won't talk about the advantages coming from being free and open-source, that wouldn't be fair game

generic screenshot of

There are of course areas where we still lag seriously behind, for example:

  • User-friendliness: Since I began to work on the BIM workbench, I realized this is a far more complicated issue than we use to think. What is user-friendliness exactly? How do you measure it? Very often our notion of user-friendliness is based on how well we know an application. A Revit user will find Revit very user-friendly but think ArchiCAD is not, while an ArchiCAD user will think the contrary.

    Another difficulty is that applications more universally considered user-friendly are very often so by limiting options. A very good example of this is TinkerCAD which really has a wonderfully intuitive interface, but try to do anything complex there, you will quickly reach the limit, or SketchUp, where you can gain power by adding plugins, but then you quickly loose the user-friendliness.

    At this point I believe there is no miraculous recipe we can apply to instantly turn FreeCAD into a pleasure garden for the newcomer. One concept I really think could help us a lot, though, is making things progressive. You start with a simple set of concepts, and expand as your knowledge of the application grows. That's where I'm heading now with the BIM workbench.

generic screenshot of

  • 2D output: While we can produce BIM models of the same level of complexity and refinement as other BIM applications already, the same cannot be said of producing 2D drawings yet. The TechDraw workbench is mostly oriented towards mechanical design, and currently fails short to handle huge BIM models with all their details and annotations.

    However, there are ways out of this, and I started experimenting with it already (see below).

generic screenshot of

No video?

Nope, this month I'm officially in video-holiday! Next month we're back with one.

So, on with the enhancements I did this month. As FreeCAD is getting close to the 0.18 release and still in feature freeze mode, all the new features of this month are in the BIM workbench itself:

BIM library enhancements

screenshot showing the library

I have added a couple of enhancements to the BIM Library tool. It now supports IFC and SAT formats (this last one needs the CadExchanger add-on), and there is now a search function. There are also buttons that search on 3 well-known online resources of BIM objects,, the and This is mostly to test the usefulness so far. Most IFC models available on these websites are of awful quality (all curved surfaces triangulated, etc) so it didn't seem worth to me making a better integration, at least for now.

Personally, my best source of good quality models is still If you limit results there for STEP/IGES files, you'll often get files of excellent quality, readily and perfectly importable into FreeCAD, and which are perfectly usable as BIM objects and appliances. BIM is not the main focus of grabcad, so the offering is limited, but there is more than enough of the basic stuff (basic furniture, sanitary/kitchen appliances, etc).

I'm not sure which direction to go with this tool now. What do you think? Integrate grabcad better than the others? Do some lobbying with the other BIM objects providers? Other ideas?

BIM material

screenshot showing the material

The BIM workbench gained a brand-new material tool which I believe makes it much, much handier to work with materials. It has one main button that either offers to create a new material if nothing is selected, or, if any object with material support is selected, shows you a new, big, searchable material list, that you can operate fully from the keyboard (start typing, press arrows up and down, press enter) that makes it very quick to attribute materials to selected objects when you have a very big list of materials.

The materials also have icons that show their diffuse color. Later on I'll use this code to generate the tree icons of materials too.

From the same window, you can also create a new Material or Multimaterial.

BIM Views enhancements

screenshot showing work in a 2D

These are all improvements to the BIM Views tool. That tool is still in infancy, but the final aim is really to have a clean and easy way to manage all the different views and working planes of your document, and mimic, so to speak, how other BIM apps like Revit or ArchiCAD manage their views. The idea of this tool is basically that all the Building Parts and Working Plane proxies are shown there, so you don't need to search for them when they are buried deep inside the tree view. Double-clicking any of them will 1) set the working plane to it, and 2), if their "Restore View" (and provided you stored a view angle in them by right-clicking them in the tree view and storing the current view), restore the stored view.

So basically it works like views in other BIM apps: Double-click one, and find yourself looking into that view, with the working plane set where it needs to be. Building Parts and Working Plane Proxies now work almost identically, only the former can hold objects too.

Building Parts also now have a new "Auto Working Plane" property which, if set, keeps the working plane in "Auto" mode. So if you change the view to something else, the working plane will change to that view too automatically.

Responsive unit tag

screenshot showing the units

The unit indicator in the status bar is now properly clickable and sets the unit on the fly. No more back-and-forth to the preferences setting!

BIM sketch tool

screenshot showing a sketch being

Instead of using the default sketch tool from the Sketcher workbench, the BIM workbench now has its own "new sketch" tool. The difference is very simple: New sketches start in the current working plane. So using sketches feels much more like Draft tools, and everything is much better integrated. Also, it doesn't change the view when entering sketch edit mode, so it escapes from the Sketcher's "introspective" mode, where when you enter the sketch, you sort of "forget everything else" to focus purely on the sketch. Here, you just draw sketches more seamlessly into your model.

If you prefer the standard behaviour, don't forget how easy it is to add a tool from another workbench (menu Tools -> Customize), but I found this really comfortable for BIM work, try it!

Status bar toggles

generic screenshot of

The BIM Views button has moved to the status bar, next to the button that shows/hides output panels, and both became toggle buttons (they have a pressed/non pressed state). They have similar default shortcuts (Ctrl+9 and Ctrl+0), I think it makes much more sense.. The BIM Views tool is not really a management tool, it makes more sense here IMHO.

People and tree symbols

screenshot showing people and tree

I added a series of simple 2D symbols to the Parts Library (installable via the Addons manager) that look like those found in other apps like SketchUp or BricsCAD shape (which is quite interesting BTW, try it, it's free and multiplatform, a kind of "solid modelling SketchUp". It still crashes often and there is no easy way to import its results into FreeCAD, but it is definitely an interesting thing). Although they are 2D, they are meant to be used in 3D models. It's just that they are symbolic instead of fully modelled. But for that reason, they are very lightweight. And I kind of like that aspect...

If you think of anything else that would be useful to have modelled that way, let me know!

Coin-based 2D view experiments

As stated above, one of the areas of FreeCAD that really lags behind for BIM use, is producing complex 2D documents such as construction documents. The TechDraw, although pretty powerful already, is more focused on mechanical design, which are typically much smaller models.

screenshot of an internet search for construction

There are several problems there for us who work with BIM: One is the time that it takes to produce a 2D view of a large model, because there are several heavyweight Boolean operations involved, and the 2D drawing itself is done by OpenCasCade (the geometry engine of FreeCAD) itself, on which we have no control, another is that, as you can see on the image above, there are usually many things on such a drawing that is not geometry but annotations: Texts, dimensions, labels, symbols, etc.

All this is old story, I've written a lot about this on this blog already.

But I've recently found one more hidden gem inside FreeCAD: the ability to export very faithful vector graphics from the 3D view of FreeCAD. There is a quite interesting system provided by Coin3D, the display library used by the FreeCAD 3D view, that walks through the different entities (lines, triangles,..) displayed on screen and allow you to do something with each, such as exporting them as SVG. It already works amazingly well, you can try it simply by issuing the following command in the FreeCAD python console:


It need a bit more work, for example to support line thickness better, of image textures, but it works already amazingly well and is blind fast and precise. And the algorithm could probably easily be adapted to produce QGraphics entities that are used in TechDraw, and therefore obtain a result where dimensions and pattern fills work.

We could do quite a lot of annotation work directly inside the 3D view, this works quite well already, and we could have blazing fast, virtually unlimited amount of 2D views inside a FreeCAD document.

detail of the FreeCAD 3D

same detail rendered to

All this needs some thought and work, but it seems to me a more than interesting path to go. There are several issues to solve, for example the scaling (the output is dependent on the view size and proportions), and also the fact that currently the view needs to be displayed on screen for this to work, but these problems certainly have several possible solutions.

same detail inserted in a TechDraw

Stretch tool enhancements

The stretch tool used on a BIM

This is I think the most exciting change of this month. The Stretch tool, that so far only worked with 2D objects, now works with BIM objects as well, provided they are based on a 2D object. This seems like a small change, but it is actually a massive step in direction to direct modelling: BIM objects can now be deformed and stretched graphically.

So far this will only apply to the 2D shape that is used as a profile or baseline of a BIM object, so it cannot be used for example to change the extrusion height of an object, but we'll get there in time.

This is not really like Revit, more like old-school AutoCAD, when you had no object handles, but it seems to work amazingly well, and if it proves solid (I think it is), we can extend that a lot, to other tools too such as Draft Edit, and slowly get there.

BIM update mechanism

The BIM workbench now has a mechanism that will check for your installed version against the most recent one on GitHub, and pop up a notification if an update is available. You need the python-git package installed for this to work, but it's on my to-do list to make this work regardless of this package (and actually extend that to all add-ons).

BIM WorkingPlane View

There is now also a new view shortcut, (key 9 or menu Utils->Working Plane view) that sets the view to the current working plane or, if the BIM Views window is open, to the last item double-clicked there. So you can now pretty easily navigate between your current Building Part and other standard views such as Front, Top, etc.. using the keyboard only.

Thar's it for this month, thanks for reading until here, I wish all of you a happy new year, and see you next month!



PS - Only recently I realized that I never put the appropriate captions on the images of these articles... If you are blind, I really apologize, from now on that will be done with care.