FreeCAD BIM development news - October 2018
High time for a new article about what I've been doing this month with FreeCAD related to BIM development. Sorry for being late! This month again, there are not many new features, basically because 1) I've been to the Google Summer of Code mentors summit at Google, in San Francisco Bay Area, and 2) FreeCAD has entered "feature-freeze mode", that is, a special time scheduled before an official release, where everybody agrees to not introduce any new feature (which might always introduce new bugs), and instead, solve all possible bugs to make the release as bug-free as possible.
That is no less important, of course. Bug fixing is an important part of the development cycle, even if less enjoyable. Developers always prefer to code new stuff, which is far more exciting, and, as any other human being, tend to leave the boring stuff for later So it's good to have a time where we force ourselves to concentrate on bugs. Also, it makes it much more enjoyable and motivating when your friends are also busy fixing bugs, it turns the whole thing into a kind of game.
Once again, thanks a lot to all of you who contribute to this whole effort by sponsoring me on Patreon or Liberapay or who directly sent some bucks on my PayPal account. Sorry for leaving you probably hungry for new features this month, but I'm sure everybody understands the importance and necessity of this bug-fixing phase. Since the BIM workbench is not part of the FreeCAD code base, though, it is also not part of the feature freeze. So expect some new stuff there in the coming months anyway, as soon as I get the bulk of the bug-fixing effort done.
The plan is to have a new release of FreeCAD ready for the end of this year or early 2019, in time for the next Debian freeze cycle (they also have one, during which they don't accept any new package). This is important because if we get the new version of FreeCAD into Debian in time, it will cascade back on Ubuntu and all other derivative distributions such as Mint or Elementary, and all the next versions of these distributions will automatically get that new version.
This release will not bring a very big amount of new features, but rather be dedicated to stability. We've been busy this year with porting FreeCAD to the latest versions of Python (Python3) and Qt (Qt5). This makes FreeCAD basically future-proof for a reasonable time. Not that FreeCAD still supports Python2 and Qt4, so it can still safely be built on older platforms. We will probably continue to support these until they get really obsolete.
Another reason to make this release is that we have big things coming in. The new Assembly3 workbench is close to completion, but it represents a big change to the FreeCAD code, and introduces a lot of new bugs. However, while it is not merged into the main FreeCAD code, very few people actually test it, and therefore bugs are slow to get spotted. And the Assembly3 code is so huge that it has become very difficult to assess and split into more easily manageable parts. So we are pondering if it would not be best to merge it and let the bugs happen, and fix them as they come. In any case, for that, we need to have an official release just before, so people can stay with a stable version until things calm down.
By the way, if you haven't seen it, we now also have a third way to makes assemblies in FreeCAD, with a new plugin workbench called A2Plus which is now an official FreeCAD add-on](https://github.com/kbwbe/A2plus) that can be installed via the Addons Manager. So now we are starting to have a whole family of solutions to deal with assemblies in FreeCAD. Choose what suits you best!
This month's video is about producing 2D drawings from your model, and placing dimensions, hatches and annotations.
Google Summer of Code Mentors Meeting
As I mentioned above, I've this year again attended the GSOC Mentors Meeting, which happened at Google headquarters in California. Since we participated to the GSOC program this year again, together with our FOSS CAD friends, we earned a couple of slots to go to California. This year, I went to represent FreeCAD, together with Sean Morrison and Daniel Rossberg from BRL-CAD.
The mentors summit is an incredible experience, unlike any other open-source-oriented event I've been lucky to go. A part of the Google campus is open during one weekend, to receive around 300 developers from the whole world. There is plenty to eat, drink, do and watch at any time of day and night, plenty of goodies for you to grab, and they provide several spaces for people to gather and discuss what they like. That's basically it. And it works amazingly. You end up talking a lot to everybody else, contacts are made, brains work, ideas are discussed, projects get born.
This year I had pretty long discussions with both Sean and Daniel, about two interesting subjects: Integration of FreeCAD and BRL-CAD, and a general effort to do more integration with all other FOSS CAD projects.
The BRL-CAD and FreeCAD integration is something we've been discussing with Sean for some time: BRL-CAD is in need of a better modelling interface, which FreeCAD can provide, and on the other hand the BRL-CAD system is a very powerful modelling engine, and it would only serve FreeCAD to make use of it. Besides, FreeCAD being so modular and extensible, we made an habit to try to plug anything we can into it..
We are still thinking as to how this integration would/could happen, but it would likely be on the form of an additional FreeCAD workbench/addon, a bit like the OpenSCAD workbench. BRL-CAD has a nice C++ API, to which Daniel is one of the main contributors, which is very likely what we would use. The aim would be first to be able to use FreeCAD to model and save the result as a BRL-CAD file, then see all we can get from this that could benefit FreeCAD. One of the big advantages of BRL-CAD is its capacity to manage extremely large models. And it can do all the important parts that we need in FreeCAD: Geometry calculations and triangulation.
The other idea is actually a series of ideas we have been discussing, to encourage the interaction between all the different FOSS CAD projects out there, such as LibreCAD, STEPcode,OpenSCAD, LinuxCNC ro Slic3r. There are many others specially in the BIM area (IfcOpenShell, IfcPlusPlus or BIMServer for example), that could be interested in this as well. Unlike the commercial world, where each similar application to yours is seen as a concurrent, that you should try to beat (or buy, or kill, or, even better, both), in the open-source world we can help each other, and help users with a family of tools that work well with each other. Each individual application benefits from this, as it integrates and can count on a more solid ecosystem.
Our ideas ranged from a common forum, structures to be able to collect and redistribute donations, definition and sponsoring of common projects, etc. There is much to be defined and done there yet, but we now have several people committed to make this happen. As soon as we have something ready, you'll be the first to know
Ah, as usual, there was an impressive table of chocolates that everybody brought from all corners of the world. I had also brought a load of FreeCAD stickers (very poor ones that I made at the last minute, will do a new batch of better quality ASAP) that got entirely distributed. Quite a lot of people know FreeCAD nowadays!
Arch Reference improvements
Besides this, I've also added another feature to the Arch Reference, which is the support for colors. When reading an object that has individual face colors defined, the Reference object will adopt those colors (and, if its UpdateColors property is set, will keep those in sync if the base file changes). The Arch BuildingPart has also be updated to store the colors of its children, so from now on you can create a whole BuildingPart made of several objects, reference it in another file, and have its aspect look exactly like in the referenced file.
I am already experimenting with the next step, which is to introduce a "lightweight" mode, which will allow us to work with way larger models. This will probably only be merged after the 0.18 release, but we'll make sure to have everything ready by then.
That's it for this month, expect more focus on the BIM workbench itself next month, thanks for reading, and thanks again to everybody who supports this effort!