FreeCAD BIM development news - May 2020

Hi everybody!

This is our monthly development log for the BIM tools for FreeCAD. This month again we have quite some cool stuff to show, and we now have Carlo Pavan on board as new BIM developer! Some of his experiments are already available for testing, see below!

As always, thanks to everybody who contributes to my Patreon or Liberapay campaigns!

Curtain wall improvements: frame walls

The Curtain wall tool we introduced last month has received a couple of tweaks so it can now be used to make the framing of frame walls. Frame walls are those lightweight walls where the structure is not made of a uniform, filling material such as brick or concrete, but a light supporting frame made of metal or wood studs, on which panels (wood or gypsum, usually) are fixed on both sides. The inner spacing between the studs is sometimes filled with insulation material.

Now, you can build a curtain wall from the same baseline as a normal wall, and make it construct only vertical mullions, and no panels. By combining this and a standard wall with a void space inside, you can build a perfect frame wall. The procedure is explained in detail in the Curtain wall documentation.

With the method above, the "host" wall is kept independent from the framing, so it is easy to turn them on or off independently, which is good for large models.

This all still needs a bit more polish, the ability to create everything in one go, better display switching between different wall representations (with framing, with wall layers, etc), but I think the structure is there already and quite solid and flexible.

Draft grid border

The Draft grid, which represents the current working plane, has received a bit of styling, it now has an additional border and shows the size of a large grid square in the corner.

Not the most important update of course, but it always feels good to have a bit of additional blink in one's work space... I'm wondering if other useful things could not be added there... A standing human figure, maybe?

Install IfcOpenShell automatically

IfcOpenShell is the main component responsible for IFC import/export in FreeCAD. It is now also used extensively in BlenderBIM too. Up to now, we have been shipping IfcOpenShell with the install package of FreeCAD, but some users, specially on Ubuntu, still struggle with finding an appropriate version of IfcOpenShell.

Now, when entering the setup screen of the BIM workbench, if IfcOpenShell is not installed on your system, you will be offered to download and install it automatically. It will be installed in the Macros folder of FreeCAD, so it won't disturb anything on your system.

You can still install IfcOpenShell manually as well.

Rhino 3dm import

Rhinoceros is a popular 3D modelling platform. It is very similar to FreeCAD, and I like it a lot. Although it is proprietary, its developers make a lot of efforts to play the game nicely: It is far less expensive than other similar tools, and they publish many components as open-source, as, for example, the openNURBS library, a component that allows other applications to read and write Rhino's native 3DM file format.

So far, openNURBS was only available as a C++ library, but it is since some time available as a Python module too via pip. Keith Sloan has packaged it under a FreeCAD addon named ImportNURBS which you can install via the FreeCAD addons manager.

If you have Rhino files, come and help us test!

Carlo Pavan's experimental wall and opening tools

Welcome one more BIM developer in FreeCAD! Carlo has started experimenting with new concepts, mostly based on recent FreeCAD developments such as Realthunder's App Link functionality. This slowly introduces more PartDesign-like workflow to BIM.

Basically we have two new experimental tools, already available in the BIM workbench (you need to run it with a recent FreeCAD 0.19 to test). A wall tool and a window/door/opening tool (Existing wall and window tools are still there, and will be kept at least until the new ones would replace them perfectly, in fact I'm thinking of integrating both together at some point).

The wall tool has the main advantage over the existing one to support automatic joining. Each wall holds a list of other walls it needs to connect to, and it always "knows" its central axis line, which is used to calculate intersection angles. However, much is still not supported, such as layers or IFC export.

The opening/window tool makes use of App Links, which allows a much better handling of complex windows made of several subcomponents. You can design a very complex window with other workbenches, make an App Part, elect that as a window type, and have inserted windows behave as simple, lightweight copies of the type object. This also works with local coordinate systems.

Here too many features of the original window tool are not yet there, but I'm really excited by the experiment. Have a try!

Facebinder improvements

The Facebinder tool is a handy little feature that allows you to pick up faces from different objects and create a new object from that, that can also be extruded. I added two new properties to the Facebinder object: Offset, that allows you to give a spacing distance between the original faces and the facebinder object, and Area which shows the total area prior to extrusion.

Ladybug integration

This is for me the most exciting news from this report. Ladybug is a set of tools (of which ladybug is only one of the components), that provide climate and environment analysis tools to BIM projects, in order to help you to design better environment-integrated projects. It has tools to analyze climate data (ladybug), to produce analyses with energy-analysis software (honeybee), fluid/winds simulations (butterfly) and more.

The ladybug tools are fully open-source, but so far they have been mostly used in proprietary environments and visual programming systems such as Revit's Dynamo or Rhino's Grasshopper.

However, being programmed fully in Python and having an excellent API, they are very easy to use in FreeCAD as well. I started with ladybug itself (I documented my explorations here if you are interested), but the plan is of course to go further and integrate the whole suite. So far what works:

  • If Ladybug is found on your system (it is easy to install via pip), it is used instead of the pysolar library to generate solar diagrams for your Site objects. There is no visible difference between both, but it will in the future reduce dependency on other libraries.
  • Site objects gained an EPW file property, which you can load with an EPW file corresponding to your region. EPW files contain climate data such as wind directions and temperatures for a whole year, for a given location.
  • If an EPW file is loaded, the Site object can display, aside from the solar diagram, a wind rose diagram.

Next developments on the roadmap are generating series of shadows studies for different times of the year, and start implementing honeybee.

Having a strong and well-maintained open-source environmental tools suite such as ladybug is really a blessing for BIM development, I don't know why we didn't start this sooner!

Profile command

Structure tools in FreeCAD did already allow to choose a profile from a list of presets. But so far it was not possible to create these parametric profiles alone, outside of the Structure tools. Now a new Profile tool was added, which allows you to do just that. So these parametric profiles can now be used with other tools as well (an obvious candidate is of course the curtain wall tool).

The profile tool contains already a big list of presets of standard metallic and wooden profiles, and you are able to add your own custom list as an additional CSV file too. If you know some categories of profiles that you think might be good to add, why not contribute

IFC support for rectangle/circle based profiles

Following up the roundtrip experiments we've been doing with Ryan and others at osarch, I've added a couple of improvements to the IFC importer and exporter of FreeCAD. Aside from bugfixes, it now correctly imports and exports and recognizes rectangle- and circle-based profiles, which were previously exported and reimported as simple polylines or non-parametric curves.

These small adjustments really don't weight much in the general handling of IFC files, but they bit by bit turn the use of IFC files sounder in a project development workflow, as they better the editability of objects, and turn the whole file more parametric.

That's it for this month I guess, stay tuned for more next month!