FreeCAD BIM development news - February 2019

Hi everybody,

This is the February issue of our monthly report about BIM development in FreeCAD.

Sorry for the slight delay in producing this article, you know, when  you live in Brazil, Carnival is kind of sacred... Jokes apart (half  jokes, to be honest), I've been pretty busy on many different plans this  month, apart from our BIM development road itself, and there are  exciting things coming from several other sides, I'll explain below.

Also, we are now on the final stretch of the path to the version 0.18  release of FreeCAD. It took way more time than planned, as usual, but  we are almost there. No more blocking bugs, we are just ironing out  minor issues in translations, documentation and packaging, and we're  ready to go. It will be by far the most stable and usable version of  FreeCAD ever. 

As usual, many thanks to all of you who sponsor me on Patreon, Liberapay or Paypal,  I am really glad and honoured you guys still judge this effort  worthwhile after almost two years, I think we are more than halfway  already. Modelling is already working very well in FreeCAD, I would say  at least as well as other BIM apps, even commercial ones, we are already  well underway on the second issue which is working with large models,  and the third issue, which is outputting quality 2D drawings, will be  the big focus of this year.

So, let's see what we have this month:

The videos - introducing the  Barcelona pavillion series

This month we don't have just one video but a larger series. A MUCH  larger series. I have recorded them all, but I still need to do sound  and editing on several of them (it takes quite a lot of time). So I'll  start publishing the first three parts here today, and the next ones  will come along in the next days. The total will be 10 or 12 videos  (still not sure how to cut). I'll release the final FreeCAD file with  the last one too.

These videos show a small but complete BIM project made entirely in  FreeCAD: The reconstruction of the Pabellón de Barcelona, by Mies Van  Der Rohe.

I tried to go around a bit all aspects of working with FreeCAD, hope you'll like! The DXF file used as a base is here.

Blender importer ported to 2.80

The FreeCAD importer for Blender  has been ported to the forthcoming 2.80 release, which hasn't  officially been published yet, but will be soon. Blender 2.80 is really a  small revolution in the  Blender universe, with many impressive enhancements. Our FreeCAD  importer allows to directly import FreeCAD files in Blender, without the  need to go through other exchange formats such as OBJ or 3DS. This is  specially important for who works with ArchViz and wants to produce  gorgeous renderings out of FreeCAD models.

As the Python3 version of FreeCAD stabilised a lot and is now being  pushed out everywhere and also integrated in Linux distributions. the  Python2/Python3 difficulties between FreeCAD and Blender are becoming a  thing of the past. So as soon as the 0.18 release is out, I'll register  this importer on the Blender add-ons repository, which will make it a  lot easier to install and use by everybody.

If you use FreeCAD already, I highly recommend you to give a go at  the 2.80 version of Blender. With a few tweaks your work in the 3D view  itself (no "rendering" needed anymore) looks gorgeous...

BIM Tutorial

I've worked further on the integrated tutorial of the BIM workbench,  and it is coming close to completion. Modelling part is complete, only  missing parts are exporting to IFC, producing 2D drawings, and  extracting quantities.

Be sure to give it a try, and please report (or fix yourself!) anything you think is unclear.

Human reference

This is a very small thing, but of a big meaning I think. Two applications I know of, Sketchup and BricsCAD Shape,  place this stylised human figure inside the 3D space when starting a  new model. Coincidentally, these two applications are targeted not so  much at very technically skilled people, but try a more intuitive and  human approach. And as you know, a big part of what we're trying to do  here is make FreeCAD more intuitive.

So now when creating a new project with the BIM project tool, you have an option to add this sympathetic figure in you model, which immediately gives a very good sense of scale.

Setup screen presets

The BIM setup  tool has gained a couple of toolbars, so the panel doesn't grow out of  reasonable size, and, more importantly, presets, that fill the rest of  the settings with sensible values when working in meters, centimetres or  imperial units. It is now much easier to start FreeCAD from scratch  with everything correctly set for BIM work/

FreeCAD 0.18 progresses

Just a note to keep you updated about the forthcoming 0.18 release,  which should land in the coming days or weeks now. There will be both  Python2 and Python3 versions available, and a pre-0.18 version has been  added just in time to Debian, for the coming Debian 10 release. As it is  a long-time support version, it will be used as a base for Ubuntu and  all its derivatives. So for the fist time in history all these Linux  distributions should come natively with a pretty recent version of  FreeCAD. We have Kurt to thank for that!

We have now processed all the important bugs and most smaller ones,  the application itself is basically ready for release. We are just  finishing work on documentation, translations, etc... which should take a  couple of days more, and you'll be able to put your hands on the 0.18,  if you haven't done it yet.

We also have a load of new features waiting for the 0.18 release to  be merged, so as soon as it's done, FreeCAD development will resume at  full speed. And we have [big changes coming in the BIM/Arch area], with  deep and meaningful changes to adapt much better to the IFC schema, free  ourselves from concepts stupidly copied from other BIM apps. I believe  we will find ourselves with a BIM application that is much better  adapted to IFC, and at the same time gives much more freedom to BIM  modelling.

View and 2D output experiments

I've started to work on my main plan for this year, which is to  produce quality 2D output from BIM models. There is not much result to  show so far, because many experiments failed ;)  but it is interesting anyway to go through the different options and  see what works, what not, what's worth pursuing, etc. What I have  started to explore:

Threaded computing of TechDraw views

The result of this so far is in [this branch], if you fancy having a  look, but it's unsatisfying so far and not working at all. The idea was  to make TechDraw views not recompute immediately, but in the background,  in a separate thread. As TechDraw views are almost always "terminal"  objects (only the Page depends on them), and given that they can take a  lot of time to calculate, I thought it might be interesting to make them  calculate in the background, while you can continue working on other  things in FreeCAD. When the computation is ready, the view would get  notified and display the new contents.

However, it turns out working with threads is very complex and  delicate. A separate thread must really be thought as a completely  self-contained environment. If it uses functionality implemented outside  of itself, this functionality will most of the time run on the main  thread. So making things multi-threaded really requires a lot of  previous thinking and planning, and in the case of FreeCAD there is also  a lot that is not in our hands, such as how the OpenCasCade kernel works.

To resume, not much progress on this side. I'll keep toying with it,  though, but I don't think impressive things can come from there.


SIMVoleon is an  extension for Coin3D, out main 3D display engine in FreeCAD, that allows  to do volumetric rendering. In other words, it can automatically "fill"  meshes being cut. Since Coin3D can generate very fast sections through  models, but these sections appear "hollow", so the have little use so  far, this could be a very useful addition.

I had to make a few changes to be able to compile it with recent Coin versions, which are in this repo.  The next step will be to try to build pivy with it (it seems to have  support for it already), so we can play with that from Python.

SVG views generated from Coin

I've also started playing with generating SVG views directly from the  main 3D view of FreeCAD, and this seems so far the most interesting  path. It is very fast, produces pretty good results, and if we can make  SIMVoleon work with it, might be an excellent solution. There a re many  changes required to the SVG-producing system in FreeCAD, to control   things like scale and line types, I'll start working on that as soon as  the release is out.


BIMbots is a new idea developed by the people behind BIMServer.  Basically the idea is that you don't need to install and manage a  BIMServer yourself, you'd be able to use services provided by a  BIMServer somewhere, directly form your BIM application. For example,  validate an IFC file, or do all kinds of queries on it, such as counting  windows, computing walls area, etc. Together with them, I've started  working on a BIMbots plugin for FreeCAD, which is almost ready now, and will be integrated to the BIM workbench as soon as it is ready.

I'll also have a look at the developer docs and try to develop (and  document) a BIMbots service, to help us assess how we can use it in BIM  projects. The way I see it so far, it could be the perfect open-source  replacement for rules-based systems like Solibri model checker.

Curtain wall

I also started working on a curtain wall tool for the BIM workbench.  However, it is a crazily complex problem! The idea is that you could  take any surface (such as one generated with the Surface workbench), decide yourself how you want to "cut" through it (for example using Part MultiSections),  then use the produced lines to generate flat panels. The last operation  being to generate different kinds of mullions from the edges and glass  panels from the faces.

Alas, taking non-flat faces and trying to make a continuous series of flat faces from it is not simple :) I haven't found a satisfying way so far. But ultimately we'll get there.

If you want to play with it already, select a series of edges (in one direction only), and do:

<code>import BimCurtainWall

Where edges is a list of edges, subdiv is the number of subdivisions.  If detach is True, each generated face is independent from the others,  which yields much better results, but is not really what we want...

Google Summer of Code 2019

This year again we are part of the Google Summer of Code with our friends at BRL-CAD, LibreCAD, OpenSCAD and Slic3r. This time we're trying to concentrate all our project ideas together,  and encourage cross-project ideas. If you want to code for FreeCAD  during the norther hemisphere summer (June to August), talk with us!  It's open to anybody, and you earn nice Google money!

New Arch/BIM developers around...

If you follow the forum and the github  repo, you'll notice that several new people started contributing  actively to the  development of the Draft/Arch/BIM areas of FreeCAD. And  there is much more to come after the 0.18 release. That's thrilling, I  feel we are at a kind of turning point. The future looks bright for  0.19!