This is the November edition of our monthly report about the development of BIM tools for FreeCAD. As you know already if you read last month's report, we are (increasingly) busy preparing FreeCAD for its next 0.18 release, which is scheduled to happen before the end of this month/year. So far so good, we are busy ironing out the last bugs and getting everything ready.
By the way, one of the areas that always needs a lot of help from the community of FreeCAD users, is translation. With each release, we achieve a bigger number of languages in which FreeCAD is fully translated. This year, we have many that are above 90% already, and a couple of others that lag behind, that would really deserve some care. Do you know any of the languages on our translations framework? Please help! Just create yourself an account there and you are ready to go. No need to compromise yourself to reach any goal, if you just have 5 minutes and can translate 5 sentences, you will already have helped the project a lot! (And if you reach 500 sentences, you will have your name in the credits in FreeCAD -> Help -> About FreeCAD )
Last month I announced I would spend more time on the BIM workbench itself this month, as it is not tied to the pre-release "feature freeze" in which FreeCAD is at the moment. I did that, but I also underestimated the amount of bug-fixing needed in FreeCAD, so I ended up still spending a lot of time on FreeCAD bug fixing. In any case, one thing is as important as the other, and I think with this release the whole BIM ecosystem inside FreeCAD is reaching a level of maturity and stability that we never had before, and that it is becoming ready to enter the big player's courtyard.
As always, many, many thanks to all of you who contributed to this effort by donating money on Patreon, Liberapay or Paypal so I can spend more time working on FreeCAD. Next month, since it will be the last report of 2018, I'll do a small recap of these nearly two years of "campaign", it has been steadily increasing over the time, and so far it is a really motivating and, I hope, productive experience.
So, enough boring bla-bla already, let's go to what interests us:
This month's video is about the expressions engine of FreeCAD:
This is a small change, but curiously something I never really gave some thought before. As I am working more on the User Experience (UX) side of things with the BIM workbench, these questions take more importance. Until now, I tried to fit all the new interface panels inside the Task panel of FreeCAD. This is the good old idea that interface elements should not block your 3D view, and stop you from working. However, some tasks do require you to stop working and work on the task only. These should not be squeezed into the sidebar but get a larger dialog that occupies the central part of your screen. So the Project setup dialog now has a nicer and more comfortable dialog and it works much better.
The other BIM tools from the Manage menu should, I think, stay in the Task area, as they allow you to interact with the contents of the model. I think we have a good rule from now on to decide what should be in the Task area and what should get its own separate, blocking dialog. I will try to assess which areas of FreeCAD are not following this rule correctly.
This was one of the first ideas I had for the BIM workbench, and the system is now implemented and running, although the tutorial itself is still incomplete. The concept is largely used in games: After you install it and start a new game, you are often offered to take a tutorial first, to familiarize with how the game works. That tutorial is often itself the first chapter of the game, so you play a first chapter that is specially designed to help you learn what needs to be learned, and you are guided through it by tips boxes, explanations, small "goals" you need to achieve, etc.
I find that brilliant, very different than a video or text tutorial. You are already playing, and the game explains you how to play it. After you finish the tutorial chapter, you are on your way.
The idea here is to do as much as possible the same: Have a tutorial that "unfolds" right inside your FreeCAD window, and that guides you through a series of steps designed to show you how things work. Each page of the tutorial explains you something, and has goals to be achieved.
The tutorial is entirely written on the FreeCAD wiki, so it is easy to get fixed and bettered by community members. Each goal has a simple, one-line python test, that returns True or False. I hope this will become a killer feature that no other BIM application has, and might also be of a big help to overcome the steep learning curve of FreeCAD.
You can now change the working units on-the-fly, directly in the status bar.
The BIM workbench documentation is finally complete. Although many of the tools can still evolve, we now have an up-to-date documentation, which is a very fundamental piece of the game too.
I also started a parity table which I believe will be a very precious resource to learn FreeCAD and its BIM workbench when coming from another application. Please help me to complete it with other concepts and applications!
The BIM workbench now has what we in FreeCAD call Task Watchers, which takes place inside the Task panel when no command is active. These watchers can change according to the context, so we can really use them to guide the user through logical sequences of actions. At the moment, they will simply display creation tools when no object is selected, and modification tools when something is selected. However, I plan to refine that when we see opportunities for it.
I also spent some time fixing a few issues in the IFC importer and exporter, and we begin to get a satisfying experience when exchanging models between Revit and FreeCAD. It is now possible to model in FreeCAD with a reliable 100% of your exported objects appearing correctly in Revit and being editable, by 1) using only extrusions (Part Extrude, Arch Structure or Arch Wall) and 2) Setting the IFC role of all exported objects to "Undefined", which will export them as IfcBuildingElementProxy, which imports into Revit as Generic Components. This is not mandatory, of course, all IFC types are supported, but the reason is that some other types have additional rules that sometimes override the way the object is stored inside the IFC file. To say it another way, if some object doesn't appear correctly in Revit, set its IFC role to "Undefined" in FreeCAD. Although not ideal (yet), at least it is reliable.
That's it for this month, I'm not listing here the small bugfixes and polishes I've been doing a bit everywhere, be sure to check the commit log of FreeCAD and the BIM workbench if you are interested in the details. Thanks for reading!