FreeCAD BIM development news - October 2018

Hi all,

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 late :)

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.

0.18 Release

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 (  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!

The video

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!