FreeCAD Arch development news

There is quite some time I don't write about Arch development, so here goes a little overview of what's been going on during the last weeks. As always, I'll be describing mostly what I've been doing myself, but many other people are very actively working on FreeCAD too, much more is going on. The best way to keep updated is to keep an eye on the Features Announcements section of the FreeCAD forum. Here is what's been going on on my side since my last post in mid october:


The Schedule tool has been completely rewritten. This is something I wanted to do since a long time, but it takes that time to figure out what to do and how to do it. The schedule tool is now basically an "extractor". You fill a table with a series of lines, each line will be a query to be executed on the model, and the data obtained from the query placed in a line of a resulting spreadsheet. You can for example count objects of a certain type, or measure lengths, areas, or extract values of properties. Everything is explained in the docs above.

When your resulting spreadsheet is ready, you can for example export it as a .csv file, and link that csv file into a spreadsheet application like LibreOffice. You obtain then a "source" sheet from where you can link quantities to a main spreadsheet. Whenever you export the .csv file again, the spreadsheet gets updated automatically.

So basically I gave up (for now) trying to build a full, final document directly in FreeCAD. You really need a much more flexible and powerful spreadsheet application than we have in FreeCAD. Rather, the schedule tool now concentrates on doing its task well and easily: gather quantities from the model. What you do with these quantities, it's now very easy to do outside FreeCAD.

Of course there is a lot of space for improvements, for example we'll at some point need to categorize and sort the data (imagine for example, gathering all the windows and group them by their size and type), but the tool should now be flexible enough to do that.

Structural nodes

The Structure tool already had structural nodes since a long time. It is basically a property that holds a series of 3D points. These points could define a line or a polyline. This is used to represent the axis, or median fiber of a structural element. The nodes are recalculated automatically when the shape changes, but you can also set them manually. The line or polyline can then be shown or hidden.

This is a first (but important) step on the road to export FreeCAD models as analytic models. You need to be able to represent your whole structure as a big wireframe.

There were some utility tools missing, which have now been added. For example, Slabs can have their nodes represent not a polyline but a surface. And there are now tools to join and trim nodes from different structural elements so you can now achieve pretty clean wireframe models from your Arch structures, with just a few clicks.

Next steps will be to try to export this to software able to do something with such models. So far, on the open-source side I only know 2D analysis apps like PyBar and FTool. There are a couple of older 3D ones on sourceforge but I haven't met anyone who usses them. Another possible output is of course the IFC Structural Analysis MVD.


The Panel tool also received upgrades. It is now possible to make wavy or corrugated panels, typically used for roofs. Users on the forum suggested we also add a way to build sandwich panels, typically formed by two metallic skins, and a layer of insulation material inbetween. This kind of panel is already possible to do, by making several panel objects from the same profile, and giving them different offset and thickness values. However, these sandwich panels often have a different profile for the top and bottom metal sheets. So the middle layer doesn't have a uniform thickness. There are also corrugated profiles that are more complex, with different wave heights or "peaks". So the whole panel tool must yet be extended to support these cases. So far I had no good idea on how to do that efficiently, but that's on our TODO list.


The TechDraw workbench, for who doesn't know it yet, is the successor of Drawing. It has more or less the same functionality as Drawing has, plus most of the stuff of the Drawing Dimensioning addon, and more advanced features such as the ability to move views graphically on the page. So far the special Draft and Arch tools that could display Draft objects and Arch Section plane contents were not available in TechDraw. This is now solved, and TechDraw can be used fully to produce 2D drawings of your models.


Another side thing I've been working on is the code documentation. Apart from our wiki documentation, which is hand-written by community members, and is mostly for FreeCAD users, there is also a documentation made specifically for people interested in programming, which describes in detail how FreeCAD is programmed, and which classes, functions and tools are available to you as a programmer (both C++ and Python). This documentation is not fully hand-written, but extracted automatically from the FreeCAD source code, by a tool called doxygen. Doxygen "reads" the code, and builds a map of the source code and all its different modules, classes, functions, etc. It also reads code comments, which are pieces of texts that developers place in their code, to help people who read that code to understand what does what. Good code always has a lot of those comments. Doxygen also reads these comments and includes them into the documentation.

So far, the whole FreeCAD code documentation extracted by Doxygen weighted more than 2Gb, which makes it too heavy to place on the FreeCAD web server. The default "theme" used by Doxygen is also rather ugly.

I'm now working on producing a thinner version of that documentation, that could fit on the server, and a better them that makes it blend into the rest of our web environment.

Good code documentation that is clean and pleasurable to read is very important to help new people interested in programming for FreeCAD, so it's worth spending a bit of time on it.

Sun diagram

The Arch Site has also received a new feature: By filling a couple of properties such as Latitude and Longitude, it can now display a solar diagram. That diagram can be scaled, oriented and centered on a specific point in the model, and of course turned on/off. So far it is just visual, you cannot do anything else with it than just looking at it. But in the future much more could be done with it. A first step I'll try to reach is enabling shadow studies.

Coin3D, the library that is used to manage the FreeCAD 3D view, is able to display shadows. So far I'm meeting some technical difficulties to make this handily and gracefully switchable on/off, but no doubt sooner or later we'll have a solution at hand.