# FreeCAD BIM development news - April 2019 ![screenshot of a building in FreeCAD](../../images/2019/freecad-april-01.jpg) Hi! Here we are for one more monthly report about what happened this month around the development of [BIM tools](https://github.com/yorikvanhavre/BIM_Workbench) for [FreeCAD](https://www.freecadweb.org). This month we are all very happy because finally we were able to finish the release of [version 0.18](https://github.com/FreeCAD/FreeCAD/releases/tag/0.18.1) of FreeCAD. There are installers for all operating systems, Windows, Linux and Mac. If you are still using 0.17, go get yours! This time there are no backwards compatibility issues between 0.17 and 0.18, as there were between 0.16 and 0.17. Any file saved in 0.18 should still open fine in 0.17, provided, of course, you didn't add 0.18-only features such as sketcher splines. Even so, the file should yield errors but still open in 0.17. Check the [release notes](https://www.freecadweb.org/wiki/Release_notes_0.18) for the complete list of new features, and [this video](https://www.youtube.com/watch?v=85HlYXnaxbw) made by Sliptonic that showcases the most important new features in 0.18. Also, FreeCAD now has a brand-new [code of conduct](https://github.com/FreeCAD/FreeCAD/blob/master/CODE_OF_CONDUCT.md). This might seem superfluous at first sight, because until now there hasn't been any very serious situation in the project, but many of us would like the FreeCAD community to be more inclusive, and this is an important step in that direction. As always, thanks so much to all of you who help the project in one form or another, being by sponsoring me on [Patreon](https://www.patreon.com/yorikvanhavre), [Liberapay](https://liberapay.com/yorik) or [Paypal](mailto:yorik@uncreated.net), or helping the FreeCAD project directly by participating in coding, writing, translating, helping other users or donating on the project's [bountysource](https://www.bountysource.com/teams/freecad) account. Every effort helps bringing it a step further! I've been pretty [busy](https://github.com/FreeCAD/FreeCAD/commits?author=yorikvanhavre) this month fixing a lot of bugs both in 0.18 and master (most important ones get backported to 0.18, we already issued a 0.18.1 one, and there will likely be another one soon), but fortunately there was still time for a series of cool improvements. So here are the more BIM-oriented happenings of this month. Most of these new changes are now happening in the FreeCAD master branch, which will become 0.19 at some point (there are [pre-release packages](https://github.com/FreeCAD/FreeCAD/releases/tag/0.19_pre) available already!) Enjoy! ### The videos I added two new chapters to the [Barcelona pavillion](https://www.youtube.com/playlist?list=PLmKdGVtV5VnuE5U75CEORkjlVK_nzQQUh) video series: One that shows how to export a model to the [IFC file format](https://en.wikipedia.org/wiki/Industry_Foundation_Classes) for opening in other BIM applications, and another that shows a first method to produce 2D views from a model (other methods will follow):
### Shape2DViews can now fuse walls and structures I will add that functionality to TechDraw Arch views too later on, since this seems to work well now and might be a really good way to solve the famous problem of wall joining. Basically, the idea is that you wouldn't need to join walls anymore. They would be all joined automatically afterwards, when you produce 2D views. If you set the "Join Arch" property of [Draft Shape2DViews](https://www.freecadweb.org/wiki/Draft_Shape2DView) to True, walls and structures (so far only these two types) will be unioned by material before creating the view, giving quite nice results: ![Two screenshots showing walls being joined](../../images/2019/freecad-april-02.jpg) The walls and structure objects themselves are not modified, only the views you produce from them. I think this might be a very good way to proceed further, as it is really very convenient and flexible to keep different wall segments as separate objects. ### IFC type property ![The location of the new IFC type property](../../images/2019/freecad-april-03.jpg) The transition to our new vision of IFC support in FreeCAD is well under way. Part of this is the ability for any Arch/BIM object to be of any IFC type, regardless of the method used to construct it. So you can use the wall tool to build a beam, and vice-versa. For any object in your model, you just say what it is, a wall, a column, or simply leave it undefined. It will be exported to IFC as you decided. The old Ifc Role property will automatically be converted to the new IFC Type property when opening a 0.18 file in 0.19, and version 0.18 also has a hook to automatically convert back to Ifc Role when needed, so this is fully backwards-compatible. ### Compound, multiple colors and transparency support in IFC ![Transparency appearing in an IFC model viewed in IFC++](../../images/2019/freecad-april-04.jpg) The IFC exporter has been extended to support several useful things: - Transparency: Objects are now exported with their transparency value as set in FreeCAD. - Multicolor objects: Objects that have multiple colors and transparency levels, such as windows, are now correctly exported as such. - Compounds: [Part Compounds](https://www.freecadweb.org/wiki/Part_MakeCompound) are now supported by the exporter, these objects are now exported as multiple-solids [IfcBuildingElementProxies](http://www.buildingsmart-tech.org/ifc/IFC4/final/html/schema/ifcsharedbldgelements/lexical/ifcbuildingelementproxy.htm). The individual colors and transparencies inside the Compound are exported too. ### Multiple IFC properties with same name So far, FreeCAD didn't handle different property sets that contained a property with a same name (for example, some custom property sets added by Revit all contain a property named "Name"). This is now solved. As long as they live in a different set, you can have different properties with a same name. ### More work on dynamic IFC Attributes ![Dynamic IFC attributes as they appear in the FreeCAD UI](../../images/2019/freecad-april-05.jpg) Part of our new IFC infrastructure is a feature coded by Dion Moult, that when you change the IFC type of an Arch/BIM objects, several new properties required by that type get automatically added to the object. These properties don't influence the geometry of the object (otherwise if you change the type the geometry could change, which we absolutely don't want). However, we sometimes want them to be tied to the object geometry. For example, we want the "Overall Height" of a window to be the actual height of the window. So, whenever possible, these dynamic properties get automatically linked to the actual geometry of the object. For example, The "Elevation" property of a Building Storey gets automatically taken from its Z coordinate, or the "Overall Height" of a window to its "Height" property. This gives us quite an interesting level of translation between FreeCAD objects and IFC objects, that is fully transparent to the user. On any Arch/BIM object in FreeCAD, look for its "IFC Attributes" properties group. That's where they live. Try changing the IFC type, you'll see the contents of that group adapting. There is still more to be done there to increase that automatic behaviour, but I am quite happy with this feature already, now really any aspect of how a FreeCAD object is exported to IFC is available to the user: type, name and description, attributes (the "built-in" properties of an IFC object), properties (the "custom" properties of an IFC object) and quantities are all settable and controllable. ### Draft objects with Area property ![Area property in Draft objects](../../images/2019/freecad-april-06.jpg) All [Draft](https://www.freecadweb.org/wiki/Draft_Workbench) objects that can form a face (rectangles, wires, circles,polygons...) now have an Area property that is set automatically when the object has a face. So it is pretty convenient to use these objects to calculate areas. ### Ability to reorder BuildingParts children ![The reorder option of BuildingParts](../../images/2019/freecad-april-07.jpg) [Building Parts](https://www.freecadweb.org/wiki/Arch_BuildingPart) objects, which are also used underneath buildings and levels/building storeys/floors, whichever name you like most, now have a right-click option to reorder their contents alphabetically. Inside the FreeCAD tree, everything is always listed chronologically. This is something very delicate to change, although in large models it becomes increasingly useful. This feature is mostly a test to see how it behaves (quite well, I think) before trying to add that in other areas as well. ### Cloning entire levels ![Clone option in BuildingParts](../../images/2019/freecad-april-08.jpg) When working with high-rise buildings, we often have a same floor/storey being repeated several times. BuildingParts now have a right-click option to clone them up. To use that option, your building part must have its Height property defined, so the new floor will be place at that height above the one you are cloning. The new floor is an independent copy, but all objects inside are clones of the same objects in the original floor. This is not yet what we would like I think, it would be best to have the new floor as a kind of big all-in-one clone, but I wanted something which would export correctly to IFC first. This system does. Also, once a floor is cloned that way, it is pretty easy to move, delete, etc... so at the moment it works well. In a next move, I'm planning to add a possibility for BuildingParts to be clones of other BuildingParts, and automatically do the management of all cloned objects inside, in order to stay compatible with IFC. ### Space plans in TechDraw ![Spaces diagram in TechDraw](../../images/2019/freecad-april-09.jpg) When creating [TechDraw views](https://www.freecadweb.org/wiki/TechDraw_NewArch) of Section Planes, until now [spaces](https://www.freecadweb.org/wiki/Arch_Space) were displayed as only their text tag. But in BIM work spaces are usually very useful in early stages of a project, when you need to arrange different areas or rooms that compose the project. TechDraw Arch views now have a new "Fill Spaces" property that, when turned on, will show a filled area behind the text, of the color of the space in the 3D view, which enable you to quickly create nice organisational diagrams. ### Section view clipping ![A screenshot showing a clipped section view](../../images/2019/freecad-april-10.jpg) [Section Planes](https://www.freecadweb.org/wiki/Arch_SectionPlane) now have a "Clip view" properry, that, when set to True, will clip the results to the dimensions of the section plane. This work with both [TechDraw Arch views](https://www.freecadweb.org/wiki/TechDraw_NewArch) and [Draft Shape 2D views](https://www.freecadweb.org/wiki/Draft_Shape2DView). ### Rebars without host ![Example of rebars without host](../../images/2019/freecad-april-11.jpg) [Reinforcement bars](https://www.freecadweb.org/wiki/Arch_CompRebarStraight) so far could only be created inside a structure object. This is no longer the case, you can now create independent rebars outside of any host object. To host a Rebar inside an object, you just need to set its "Host" property. But you can now leave that property empty, just as it works with windows. That's it for this month I guess, thanks for reading and thanks for the support! Cheers Yorik