FreeCAD BIM development news - December 2018


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 

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.

  • 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).

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

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

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

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

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

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

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

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.

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.

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.

Stretch tool enhancements

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.