Bits of

As I (more or less) decided last week, I'll try to post here more often about FreeCAD. There is not much new this week (at least from my part, other have been busy!), but nevertheless a couple of things are worth mentioning.

For who is new to this open-source thing, you must know that all the developement is open. You can check what is being done at any moment, all the discussion about anything going on is always public (you are very welcome to participate), and you can also get yourself a development version to try new things for yourself. There is also a bug tracker where you can report bugs, and also follow the resolution of a certain bug.

Development versions are built manually by kind community members from time to time, using the latest code, and can usually be installed side-by-side with stable versions of FreeCAD. So you can test, and if there are too many bugs (unusual, but it can happen), oyu can always get back to use the stable release. Since the development goes very fast, I really encourage you to try the latest development build available for your platform.

For the adventurous, of course, it is always possible to grab the source code and compile FreeCAD yourself. This allows you to use the latest features immediately. Compiling requires a bit of work on Windows and Mac, but on Linux it is pretty easy.

Among what I I have been doing this week, are a couple of bugfixes, and a couple of improvements in two specific areas:

IFC import

One of the msot interesting improvements is the ability to import 2D objects that are "attached" to 3D objects in IFC files. In IFC, each "building object" (that is, each descendent of the IfcProduct class, which is the "master" class of all specific building objects, like IfcWall or IfcBeam) can have a series of representations. The most commonly used representation type is the "body", which is the 3D representation of an object. But they can also have additional representations, such as "footprint" or "axis". The footprint representation is used, for example, by Revit to add door opening symbols:

FreeCAD cannow import these additional representations. At the moment, since we stil ldon't have a good way to do these door openings in FreeCAD, the imported footprint are added as separate 2D objects. But this gives us a couple of ideas and adding proper support for these opening symbols is on my todo list.

Another thing being worked on is to improve the transfer of IFC files between FreeCAD and Revit. Opening a file produced by one app on the other already works quite well, with the OpeningDesign folks we begin to get quite a bit of experience in that area. The main problem is to turn the objects exported by FreeCAD into usable data in Revit. Revit is very picky about what kind of data can be editable and become a family. It relies on a lot of features that don't exist (yet) in FreeCAD, such as common object types and material layers. This is a complex area, not very well documented, that you must explore step by step.

We are trying to document our findings in a public repository, don't hesitate to come and give us a hand.

Among the improvements to the IFC importer of FreeCAD I did this week, is a better rendering of extruded objects, and a better search for materials attached to an object (that can sometimes be buried under layers and layers of "material layer sets").

Arch object properties

I also went forward on extending the Arch (BIM) objects of FreeCAD with more properties useful for quantity retrieval. All Arch objects now have new Vertical Area and Horizontal Area properties that are calculated automatically when the shape of the object changes. Vertical Area is the sum of the areas of all the vertical faces of the object, which can be useful to calculate for example the area of concrete forms. In the case of walls, divinding that area by 2 gives you the vertical area of the wall as we usually need (because each "pane" of the wall has two faces, but we usually want only one side). This might seem clumsy, having to divide by 2, but calculating the vertical area this way is very solid. Any kind of crazy shape of wall, with no matter how many unconventional openings, will yield correct area values. I thought about dividing this value by 2 always, in case of walls, but that would make the walls behave differently than other Arch objects, which could induce errors too.

But there is still room for discussion of course. More than anything, it will need some testing.

The horizontal area is the area of the object when projected vertically onto the ground plane. So to get the area of form of a beam, you would simply add its vertical and horizontal areas.

Roof objects also have two additional properties, Ridge Length and Border Length. Border length is the sum of the lengths of all the border (or "open") edges of the roof, while ridge length is the sum of the lengths of the inner edges (ridges and hips). This will make it easy, when calculaying quantities, to know how much ridge cover element you need, or how much water drain.

Finally, I also added a new utility tool that simply shows/hides all the invisible subcomponents of an Arch object, such as openings. This makes it easy to select them, for example to move or modify them.