FreeCAD BIM development news - March 2018

I hope you noticed the small improvement in the title... It's not that I became suddenly a big fan of the "BIM" term, but really the word "Arch" is too narrow in todays construction field. Besides, as I explained last month, I am now starting to split the BIM stuff in FreeCAD in two parts: One is the Arch workbench that you already know, that stays integrated to FreeCAD, and that will carry all the "dirty stuff" (objects, tools, base functionality), and the other is the new BIM workbench which will contain only UI elements (wizards, managers, etc). Starting from FreeCAD v0.17, installing the BIM workbench is very easy with the addon manager.

Talking about v0.17, the release is a bit late (we wanted to do it before end of February), but bugs kept coming in, and we are fixing them all! So it got a bit delayed, but we are finally there. In the coming days we should have it released. I'm adding he latest translations from crowdin as we speak. You can already check what's new in the 0.17 release notes.

As always, thanks to everybody who is contributing to my crowdfunding campaign on Patreon or Liberapay. I am now more and more able to regularly dedicate a good portion of working hours per week to FreeCAD, that I try to balance between developing new stuff, fixing bugs, and do all kinds of maintenance tasks. The main focus, of course, is still to push BIM development forward. As soon as the 0.17 release is out, I have already a few features that are ready to merge into the main FreeCAD source code. More on this next month!

The video

Last month, I posted a first video introducing the Arch workbench. I made a new one this month, showing how to set things up and get started to do BIM with FreeCAD. Thanks for the many of you who left comments under the first video, this gives a lot of further ideas. Please keep going on!

One important thing I forgot to mention last time: There is no need to wait for me to make all these videos (Anyway, the idea is not to make a full course, rather toillustrate the concepts of how things work). There is already a lot of material on the internet, and specially the very impressive series of tutorials by Regis about FreeCAD and BIM, and other ways to do architecture and BIM work with free software like Blender. What you have there is a more than complete course of FreeCAD BIM, and for free... Amazing work Regis!

So, here is this month's video. Hope you'll like, please keep commenting!

The BIM workbench

While FreeCAD was in "feature freeze" mode this month, the new BIM workbench, being developed outside of the main FreeCAD source code, allowed me to keep working on some cool features there. There is not much of a revolution there yet, but I believe this is going in the right direction. What we have so far is this (keep in mind that all this is experimental, it can change in the future):

A welcome screen

This screen is shown to you the first time that you switch to the BIM workbench. The idea is to tell you, in a few words, "what to do next", and offer you to follow a tutorial (yet to be written). You can still show that window again anytime from menu Help -> Show welcome screen. I must think a bit more about the tutorial but the idea is to do like in games, where when you take the tutorial, you are usually playing the first chapter of the game, but with an assistance that tells you what to do.

If you pess OK, you go to the next step, which is:

The setup screen

The Preferences system of FreeCAD is becoming huge and complex. And some preferences get loaded only when the corresponding workbench is loaded. It is very hard for a newcomer to find what options he/she needs to set. So we have here a summarized and unified set of the most important preferences for BIM. Some are grouped, for example when you set your preferred text font, it will set all the places in the preferences where a text font can be configured, for example in Draft, Arch and TechDraw.

Project setup

This is a new dialog that allows you to quickly setup a BIM project. It will optionally create a new document, create a Site, a Building and a couple of Axes, Levels (the Floor object in Arch will soon be renamed to something less ambiguous, my favorite at the moment is "Level", although I would like to find a word that doesn't necessarily suggests that things must stack on top of each other, maybe Zone, or Cell?) and a rectangular outline of the building.

With that done, you have something to start building walls on. What you fill in that screen can be saved as a preset, so you can have several building templates around. The axes and outiline are linked, so moving the outline around will move the axes together, a good example of the powerful expression system of FreeCAD (check the Placement property of the axes).

Levels manager

This is a simple interface to manage the different levels (Floors currently) of your document. At the moment you can only do basic things such as changing their properties and add or remove levels, but the intent here is to add more dependent functionality to levels, like WP proxies, which would allow neat things like, upon double-clicking a level, hide all other levels, and set you in a configured view (for example a top view above the level plan). This would mimmick quite well how other BIM apps work, where you can isolate a particular level to only work in it.

Another idea I have is to have a section plane automatically associated with a level, and make it (optionally of course) cut the view above it when you select the level

Windows manager

This is a simple screen that allows you to manage all the windows and doors of your project. So far it doesn't do much more than list all windows and doors, and allow to group them by type or dimensions. But the idea of this screen is basically just that, allow you to have a clear view of all the windows and doors, see what is missing or wrong, and in the future, or course, allow you to export this to a spreadsheet.

The BIM workbench source code

If all this thrills you, I would encourage you to help me. Of course an easy way is to contribute to my Patreon or Librepay accounts, but I would also encourage you to help in other forms. There is more in several heads than in a single one, my grandmother used to say...

We have a forum thread where you can contribute to the discussion, but working directly with the source code is not hard. In a next report I will explain better how it is organized, but you have basically, for each tool, an .ui file which is the design of the dialog, made with QtDesigner (which is part of the QtCreator suite), and a corresponding .py file that has the code that runs "behind" the .ui dialog (ie. what happens when you click such button, or click on such item, etc..)

QtCreator is a complex application, but the QtDesigner inside is very simple to use, it is very easy to constructs dialog boxes with it. And when designing User Interfaces, a great deal of effort goes into thinking and constructing intuitive dialogs. This effort is often bigger than writing the code behind. So playing with these dialgos and proposing ideas with it would be helping the project tremedously, even if the code is to be written by someone else later on.

But the python code behind these BIM dialogs is not too complex either, have a look

Speckle

(image swallowed from the speckle.works blog)

Thanks to Ryan I discovered Speckle last month and got fascinated. It is a free & open-source 3D model server, a bit like BimServer, but, instead of being based on IFC, it is built for parametric 3D models. It is basically everything I wished BIMServer would be: It speaks json, a widely used transfer protocol, and it is totally system-agnostic. In it, you have collections of objects (streams), each object being a collection of properties, and that's it. The parametric "engine", that knows what to do with these, stays in the original application.

So for example, a cube would have a name, a text describing its type ("cube", for example), and length, width and height properties. That's all that would get stored on the Speckle server. But FreeCAD would know exactly what to do with such info. And so would Rhino, Blender and anything you would plug Speckle into. It is particularly well adapted to those so-called "visual programming" interface such as Grasshopper or Dynamo, of course, but a FreeCAD model could also be transferred to/from a Speckle model with almost 1:1 compatibility. This is something I experimented in IFC a while ago, that can be carried on here way further.

So I started working on a Speckle interface for FreeCAD (probably will be part of the WebTools workbench). I believe this can yield wild results...

That's it for this month, thanks again to everybody for your support, see you next month!