About FreeCAD, architecture and workflows

Quite some time I didn't post about FreeCAD, but it doesn't mean things have been dead there. One of the important things we've been busy with in the past weeks is the transfer of the FreeCAD code and release files to GitHub. Sourceforge, where all this was hosted before, is unfortunately giving worrying signs of deprecation, many projects are fleeing like rats, and so did we...

The move to github

It's sad because SourceForge, in its glorious days, has been an amazing incubator for open-source projects, it gave a very powerful platform where you could host not only your code, but everything that goes around (website, user forums, anything) with a very liberal "we provide the space, do what you want with it" philosophy. Over the years, the platform has been sold and re-sold from one company to another, each one cutting further into that spirit and adding more aggressive marketing and advertising, until we came to the bloat it is today, with adware bundled into downloadable files, the whole platform minimally maintained and prone to huge failures, etc.

Of course nothing guarantees that the same thing won't happen with github. But at least our whole stuff is now more portable, and we can hop again much more easily if needed. Until we get a proper structure ourselves, obviously.

So from now on, watch this space, this is where you can download new releases of FreeCAD from. Specially the Windows pre-release is now updated pretty often thanks to sgrogan who does all the work.

Architecture workflow and 2D

Another thing I've started to work on, is to recode the DXF importer. Until now, we were using a DXF import structure inherited from Blender, which is coded in python, and another, different one, for export. Although it works pretty reliably, there are annoying problems, namely the different license, that forced us to not bundle the code with FreeCAD anymore, but to offer it through a separate, complicated additional download, and the fact that it is very slow, which makes the import of big files almost impossible.

This lead me to a reflection about the paper of 2D workflows in a modern BIM-based workflow. Altough we all wish that everything would be done with BIM, the reality around us is that BIM workflows are only used until a certain point of the project, and then the development invariably switches to 2D, for several reasons, the most common being that if one of the actors of the project still works in 2D, it basically forces all the others to switch to it too.

There are other reasons, some actually good ones, for example the fact that drawing details is actually less work in 2D than 3D, for the same result, or that construction drawings are usually made of much more symbols and indications than geometry itself.

This is a typical architecture construction document (the very final one, that goes to the construction site and is used by builders):

This is the part of it that is actual geometry (walls, columns, slabs, etc), that is, what is going to be built. Such data is easy to extract from a BIM model:

This is the part of it that is made of symbols, annotations, indications, etc, that is, things that won't be built themselves, but indicate how to build. Such information can be stored into a BIM model, and be extracted, but usually, in order to compose a nice, readable drawing, and not an unreadable mess, you'll still need to do a lot of 2D work manually:

So if we agree that we will still need to do 2D for some time, be it only to be able to process and incorporate the huge DWG files that your HVAC engineer sends you, I decided to try to make things a bit better in FreeCAD.

A first step is to redo a proper DXF importer. If you read this blog already, you probably know my position about DWG (basically that it is way too much work to support to be realistic, it would take ALL our time and resource, for a more than feeble result that would never be good enough, and, besides, that a DXF file is a reliable, 1 to 1 mirror of a same DWG file), so I'll concentrate on DXF and leave the conversion to/from DWG aside. FreeCAD does it automatically, if a conversion utility is installed.

I started using the dxf import/export structure from HeeksCAD whih is very simple, very fast and easy to use and extend. This is already working in the current development code (only accessible from python at the moment), and gives very promising results (30Mb files swallowed in a couple of seconds, instead of 20 minutes with the old importer).

The main problem with these 2D CAD files is what will need to be addressed next: They are made of thousands of little, dumb entities (lines, arcs, etc). FreeCAD objects are complex, intelligent structures, and it is simply not realistic to create one of these objects for each DXF entity. It would clog FreeCAD completely ater a couple of hundreds. If we group them together, however, FreeCAD can manage huge sets without problems.

Grouping geometry into compound objects is already possible. What is still needed is the ability to do so for non-geometric objects (texts, dimensions, etc), and extend the current 2D tools so they are able to work on these compound objects too. This will also make working with the Draft module a bit more like the Sketcher.

This will not turn FreeCAD into an AutoCAD clone, if that's what you are thinking. Nobody here is interested in spending all his time in doing that, besides, the world is already full of AutoCAD clones. What I'm looking for is the point that lies in the middle of the distance between full BIM workflow (the ideal) and full-2D workflow (often the sad reality). Will this be enough? I don't know, we'll see when we get there, but I think it's doable, which is far more important.

The future might bring some good things too on the LibreCAD side, if this matter interests you, I suggest you keep an eye on this, and encourage them to go further in this direction.


In the Arch workbench itself, things have improved too. There is now proper Materials suppport, which makes use of the generic Materials structure of FreeCAD, so Arch materials can be shared with the other Materials-aware workbenches (currently only FEM). Materials are stored in a separate structure in a FreeCAD document, and are then referenced by the different objects. Colors specified in materials will override object colors.

These materials are also already imported and exported to IFC, but still not with all their properties. The way IFC defines materials is a bit weird, and we must still experiment more there.

I also recently added a couple of enhancements to the IFC importer, which is now able to correctly import and export cloned Arch objects, which, in IFC, are objects that share a same geometry. In Revit, they come up as many objects using a same family.

Finally, a new Schedule tool has been added, that allows to automatically generate quantities lists and, in the future, other kinds of schedules, such as areas lists, doors schedules, etc. It is still very preliminar, but the foundations are there.

I also started experimenting with tools to support file versioning systems, such as Git or Bimserver. I'm not sure yet where this will go, but the whole idea is to experiment to find good solutions.


The FEM boys have also been very busy recently, have a look at the FEM section of the forum, if interested. The time is close when this can begin to connect to BIM.

That's it for now, keep an eye on the forum if you want to know more...