FreeCAD, Architecture and future

There is quite some time I didn't write here about FreeCAD and the development of the Architecture module. This doesn't mean it has stopped, but rather that I have temporarily been busy with another project: The Path module, plus there has been my FOSDEM talk, and finally we're on the verge of releasing version 0.15 of FreeCAD (scheduled for end of february). Now all these things are more or less behind my back, and I'll be able to get back to Arch development.

The Path module

Just a word about this new module, that is still under heavy development, but that is already stable enough for you to test (currently you still need to compile it yourself). This module is aimed mainly at producing GCode, which is a common language used by professional-grade cutting machines. Unlike 3D printers, these machines can produce objects from a wide variety of materials, such as wood, metal, etc.

These machines work mainly by moving a rotating tool, that looks a bit like a drill, around a piece of material, which carves the material and produces the final piece. The path that the tool must follow, along with other settings such as speed, must be furnished to the machine, through GCode language.

The module in its current state provides a solid base to import, display, handle and export these toolpaths to GCode. On top of this, several scripts are being developed to automate the generation of toolpath from FreeCAD objects, or convert the output/input to/from different dialects of GCode.

There is still a lot of work to do on the Path module, but we prepared all the terrain for that work to be easy, as it can be done almost fully in python.

The importance of this module for architectural work might not be obvious at first sight, but I believe it might become fundamental in the future. There are more and more experiments around the world which begin more and more to rely on machining (for ex the wikihouse, popup house, or Greg Lynn's robotic experiments). All other engineering specialties are or already have shifted from drawing to direct design-to-machine processes. Only us from the construction field are still busy with paper drawings.

There are of course a lot of spectacular predictments such as gigantic construction robots (check the cool models) or more recently 3D-printed buildings, but these are still very heavy and inflexible ideas. It is far more probable that the real revolution won't come from these but from much easier and already existing workflows such as having all the pieces of a building prefabricated and in-factory partial assemblies. This will require from architects a much higher level of control over fabrication processes, and possibly a drift from pure design to also the design of the manufacturing process.

Of course, probably some new in-between industry could appear and take place there, that would take the architect's design and generate the manufacturing processes from it. But is that a good thing? Is it really the way we want the profession to evolve, do we want to be pushed still more out of the game, to just do a job that is everyday more futile and useless?

These are very theoretical questions of course, but probably you begin to see where this whole area of machining, and the unique opportunity that FreeCAD offers to mix it with architectural work could be interesting and beneficial to architecture.

In the current Arch module, as I wrote in an earlier post, we already started implementing some tools that might in the future bridge the gap and permit architects to fully control the manufacturing process of the pieces they design. This is a fascinating new area, and I certainly plan to work a lot more on it in the future.

The development of this module was also a first experiment of sponsored development (members of the CAM community gathered to sponsor the development), and I believe it was pretty satisfactory for everybody involved. The development went very fast, and, although it didn't result in a "finished work" (that concept doesn't really exist in open-source software anyway), it provided a strong base to further development.

This module will be merged into the official FreeCAD source code after the 0.15 release, which should happen by the end of this month.


I was also invited to the FOSDEM this year, to give a talk about FreeCAD. The whole event was extremely cool, I'd highly recommend you to try to go to it one day if you are interested in open-source software. It was literally packed with people, talks, events and of course, waffles and beer!

I enjoyed a lot talking about FreeCAD, and apparently people liked the talk. The slides are available here, the video recording will be made available later by the FOSDEM people, I'll post it here when it is online.

The Arch workbench

In the coming weeks we'll release the version 0.15 of FreeCAD, and the first thing that will be merged immediately after, is a modified IFC exporter, based on the reunified version of IfcOpenShell that is being prepared right now. During the last year, IfcOpenShell development has been split into two branches, one "stable" and the other where we experimented with advanced python interface and export capabilities. These two branches are finally being merged into one single powerful version that combines the strengths of both. With this done, we will have a solid base to develop further a couple of concepts that we've been discussing with the IfcOpenShell people, basically recreate "intelligence" from IFC contents.

There is currently (as ever, actually) a lot of discussion on the net about the IFC format, and the high level of dissatisfaction that architects experience when dealing with it. The main cause for that sentiment is that IFC is a "dumb" format, that represents static objects, and discards all the higher-level "intelligence" that modern BIM software such as Revit and ArchiCAD give to users.

Our idea is that 95% of that "intelligence" is made of very simple concepts (for example, a wall "knows" its baseline, it is not only a cubic shape, so with that baseline and a couple of parameters such as width and height, you can recreate the wall), and these can very well, in a way or another, be saved in IFC files.

The main problem is that IFC files must be produced with great care, and read back into BIM applications with the same care. This is not often found among commercial BIM solutions, as their vendors have more advantage in trying to make their users stick to their own proprietary formats.

In the open-source world, however, we don't have that necessity, and IFC seems therefore absolutely interesting to us. It is open, doesn't follow what a specific vendor wants, and being able to use these 95% seems already a pretty good goal to me. We can care about the remaining 5% at another time.

Concretely, this involves being able to extract all the geometrical construction of an object from an IFC file, as to reconstruct it in FreeCAD the way it has been encoded, and also export all this construction back when exporting files.

The latter step is already implemented pretty far, and if you export a FreeCAD file where you modelled all the objects yourself with FreeCAD tools to IFC, most of it wil open in Revit as editable families. However, reimporting back in FreeCAD will currently loose modelling history, and therefore on a new export the IFC file will contain only uneditable objects. This is the main problem I'll attack.

Visual experiments

I've also been experimenting with a couple of visual goodies. One is a way to display sections in the 3D views. Coin3D, the library we use to manage the FreeCAD 3D views, already offers a simple mechanism to hide a part of the scene, but there was the problem that you can see the inner faces of objects (since in the 3D view all objects are represented as meshes). This is not very realistic for architectural objects, which are always solid.

A sketchup method gave me a good idea: combine Coin3D's clipping with a single-face lighting, so the inner faces of objects receive no light, and appear therefore as pure black. This gives pretty good results:

I'll try to add this system to Arch section plane objects, so with the switch of a button you can turn that kind of display on/off.

Another test I did recently was with shadows. To my big surprise, I discovered that Coin3D supports bitmap shadows. You need decent 3D hardware, but it works very well. In the next weeks/months I'll try to integrate this further in FreeCAD.

The 0.15 release

FreeCAD is now in "feature freeze" mode, where nothing new is added, only bugs fixed. There is no exact release date, but we plan to do it before the end of the month. The release notes are not complete yet, but will give you a rough idea of what to expect in thisnew version, in case oyu didn't try it yet. Don't forget that if you are using Ubuntu, the FreeCAD community maintains a PPA that updates automatically everyday, so you can enjoy a bleeding edge version fresh with the latest developments.

There is still some work to do on the translations, so if you want to give us a little help there, this will be much appreciated!