FreeCAD BIM update 21

Hi all!

Sorry for the lack of news these last weeks (darn, I'm realizing it's been more than a month), but on the plus side a lot of work has been done and I have big news!

Good bye Arch, hello BIM (with built-in NativeIFC)!

screenshot of the new BIM workbench

It is finally done, the built-in Arch workbench has been merged with the BIM Workbench and the NativeIFC addon and everything is integrated in FreeCAD.

That means basically, in the next release, when you open FreeCAD, you will be presented with the BIM workbench, which has all the tools of Arch, plus the NativeIFC functionality enabled. IfcOpenShell is also included by default in all official FreeCAD installers now, so there is basically nothing more to worry about, nothing more to install.

The BIM workbench is basically and mostly an extended and refined version of Arch, so for Arch users there shouldn't be any disruption. And for the BIM workbench users, well, you'll be at home already, with the comfort of not having to install anything yourself anymore

If you are wondering, the above screenshot is me playing with a "minimal" tool bars setup. There is an ongoing discussion about reorganizing the BIM menus and tool bars, feel free to participate!

If you already have the BIM add-on installed, you will see a pop-up window telling you to uninstall the BIM add-on before venturing forth. Unfortunately I couldn't find a way to do it automatically, but it's also a good thing because so will people be aware of the change.

Just a last note about NativeIFC: We sped up on this Arch/BIM/NativeIFC merge for very good reasons (see below), but the planned work is far from finished and NativeIFC functionality is not complete yet. So tread there with care, and excuse the bugs! Don't hesitate to report them, though, or, even better, help fix them

Built-in IfcOpenShell updater tool

That's another piece of our roadmap. Although it might hopefully be obsoleted at birth because IfcOpenShell is not integrated in FreeCAD installers, in the BIM -> Utils menu, there is now a tool that allows you to install and update your version of IfcOpenShell. It uses the add-on manager under the hood, and installs it at the same place where your FreeCAD add-ons get installed, so all the hassle of choosing the right version for you is taken care of automatically.

This should help fixing and reducing remaining difficulties related to IfcOpenShell, and hopefully help more people start using IFC.

FreeCAD release 1.0 scheduled

That's probably the most epic news since a long time, we are finally, after more than 20 years work, ready for the mythical 1.0 release of FreeCAD. The feature freeze should begin on June 1st, 2024, and the release date is estimated around mid-July. Of course, as always, this could delay, as bugs have the nasty habit of appearing at the last minute, and we'll take the necessary time to fix things as best as possible before releasing.

Although it's just a number, and does not per se mean anything like "FreeCAD is production-ready" (It has been for years already), the 1.0 number means a lot to us. It is a milestone we have since very early in the project, when Jürgen was still there leading the project. It is understood since then that we would reach 1.0 when 1) we have a good, built-in assembly workbench, and 2) Toponaming problems are solved, or at least solved enough. Well, I'm happy to announce that these two goals can now be considered reached.

The Assembly workbench

Point 1, a built-in assembly workbench, is now done, we now have a very good, even if still brand-new Assembly workbench in FreeCAD. Did I tell you the incredible story behind that workbench yet? (Sorry if the answer is yes, please skip!) Well, sit and listen, kids:

Once upon a time, in the years 2000 an something, there were two FreeCAD. Two projects named FreeCAD. One is ours, the other one, that at that time we called "the other FreeCAD", was a kinetic simulation application made by a single person, Dr. Aik-Song Koh. For some time, both were evenly recognized and referenced on the internet, which led to quite some interesting mix-ups and confusions. After a time, our FreeCAD grew a lot bigger, and development on the "other FreeCAD" stopped. It was also not open-source.

Last year, Sliptonic, a FreeCAD maintainer and also now CEO of Ondsel, bumped into Dr. Koh, and raised the idea: "Say, we need something like that in FreeCAD. wouldn't you be interested in working on it?" Dr. Koh jumped in, and ported his FreeCAD over to our FreeCAD, which is now the "engine" behind the new Assembly workbench. After all these years, in an epic, mythical, sublime move of the universe, the two FreeCAD have united, and our world is no longer the same!

Although Dr. Koh's kinetic solver was developed for and thanks to Ondsel, and not originally part of the FreeCAD project, it's important to know that it's still fully and totally free and open-source (it uses the same LGPL license as FreeCAD). We wouldn't have it any other way, of course.

What about the several other assembly add-ons that FreeCAD offers via the add-ons manager then? Well nothing changed there, they still work fine, and you're still more than encouraged to keep using them. So far there is no compatibility between all these and the new built-in assembly, but the new solver/assembly API offers new possibilities and add-on developers are looking at it, so maybe in the future much could be done in that regard.

Toponaming mitigation

Point 2, that we got used to call "the Toponaming problem", is a well-known and very old problem of FreeCAD, that I talked a lot about on this blog. When recomputing the shape of an object, the order of its subelements (faces, edges, vertices) might change. Face1 might become Face6, Edge18 might become Edge4, etc. This is due to how many of the underlying components of FreeCAD (the sketcher solver, the OpenCasCade engine) work. These components have a complex way to build their geometry, and that's how both can reach the good results they yield.

Unfortunately that order is of paramount importance for referencing subparts of a shape. For example, when a sketch is placed on a face of an object, or uses an underlying edge. So if that order changes, the sketch can break, which is a common scenario in FreeCAD.

Many people have worked and tried to build solutions to the problem in the past, until finally one emerged as a solid and working solution, which is the base of Realthunder's linkstage3 branch, a FreeCAD fork developed by developer Realthunder, where he developed and put to work his Toponaming mitigation algorithm. The linkstage3 version of FreeCAD has now been used for a long time by many people, and the feedback has been excellent. Fro many people, the problem is solved (this is not an absolute truth, more about that below).

A very long and hard work has been needed by a lot of FreeCAD developers toghether with Realthunder, to bring the Toponaming mitigation functionality of linkstage3 to FreeCAD's main codebase, tie and test everything, and it is now done. Since a few weeks, that functionality is enabled by default and running, and the results we have are thrilling. It works, and the effect on FreeCAD's performance, that we all dreaded, is so far almost negligible.

It's important to understand how this works: Every shape used in FreeCAD now has a conversion table. Every time a shape is recalculated, the different components are analyzed, and remapped as best as possible. In other words, the engine tries to find which of the new edges is the old Edge4, and remap everything so everything keeps the same name as before. So every time a shape changes, there is a little additional calculation. the result is, when calling for Edge4, you should always get the same edge now.

A few things are interesting here:

1) Although we all think the results are excellent so far, the calculation could fail or give wrong results in more specific or rare cases, so there can still be Toponaming problems. There will certainly be refinement and further work needed down the road.

2) Models don't break only because of Toponaming. Parametric models offer large opportunities for wrongdoing or fragile connections, so good modelling is still important.

3) The renaming and the conversion table system offer new possibilities: It's now possible to not only use default names like Edge4 or Face6, but also custom names like TopFace. Although this is not yet used by FreeCAD tools, it offers very interesting possibilities, where subcomponents could be referenced not by their order in a list, but by more meaningful characteristics. This might lead to very interesting developments in the future.

That's all I have for now I guess, thanks for reading, and more than ever, thank you to everybody who sponsors my FreeCAD BIM work on Patreon, LiberaPay or GitHub!