Hi, this is my blog, and also a guestbook. I publish stuff I do from time to time. Be welcome and feel at home, have a coffee and don't hesitate to drop me a line or two. All languages are highly welcome, especially the most exotic ones (nederlands, bij voorbeeld...).

You are currently viewing only posts tagged as cad in this guestblog for this year only.

Click here to retrieve posts with same tag from other years as well.

Click here to go back the blog home page, or browse by tag: freecad, works, architecture, projects, 3d, blender, opensource, detail, talks, sketches, inthepress, animations, linux, opensurce, firefoxos, bede, idsampa, photo, gaming, wordpress, webdesign, Architecture, trilhas, orange, cooking, or search the 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, .

in categories  freecad  opensource  permalink:  297   posted on 26.11.2016 17:45
From Yorik

FreeCAD Arch development news

There is quite some time I don't write about Arch development, so here goes a little overview of what's been going on during the last weeks. As always, I'll be describing mostly what I've been doing myself, but many other people are very actively working on FreeCAD too, much more is going on. The best way to keep updated is to keep an eye on the Features Announcements section of the FreeCAD forum. Here is what's been going on on my side since my last post in mid october:


The Schedule tool has been completely rewritten. This is something I wanted to do since a long time, but it takes that time to figure out what to do and how to do it. The schedule tool is now basically an "extractor". You fill a table with a series of lines, each line will be a query to be executed on the model, and the data obtained from the query placed in a line of a resulting spreadsheet. You can for example count objects of a certain type, or measure lengths, areas, or extract values of properties. Everything is explained in the docs above.

When your resulting spreadsheet is ready, you can for example export it as a .csv file, and link that csv file into a spreadsheet application like LibreOffice. You obtain then a "source" sheet from where you can link quantities to a main spreadsheet. Whenever you export the .csv file again, the spreadsheet gets updated automatically.

So basically I gave up (for now) trying to build a full, final document directly in FreeCAD. You really need a much more flexible and powerful spreadsheet application than we have in FreeCAD. Rather, the schedule tool now concentrates on doing its task well and easily: gather quantities from the model. What you do with these quantities, it's now very easy to do outside FreeCAD.

Of course there is a lot of space for improvements, for example we'll at some point need to categorize and sort the data (imagine for example, gathering all the windows and group them by their size and type), but the tool should now be flexible enough to do that.

Structural nodes

The Structure tool already had structural nodes since a long time. It is basically a property that holds a series of 3D points. These points could define a line or a polyline. This is used to represent the axis, or median fiber of a structural element. The nodes are recalculated automatically when the shape changes, but you can also set them manually. The line or polyline can then be shown or hidden.

This is a first (but important) step on the road to export FreeCAD models as analytic models. You need to be able to represent your whole structure as a big wireframe.

There were some utility tools missing, which have now been added. For example, Slabs can have their nodes represent not a polyline but a surface. And there are now tools to join and trim nodes from different structural elements so you can now achieve pretty clean wireframe models from your Arch structures, with just a few clicks.

Next steps will be to try to export this to software able to do something with such models. So far, on the open-source side I only know 2D analysis apps like PyBar and FTool. There are a couple of older 3D ones on sourceforge but I haven't met anyone who usses them. Another possible output is of course the IFC Structural Analysis MVD.


The Panel tool also received upgrades. It is now possible to make wavy or corrugated panels, typically used for roofs. Users on the forum suggested we also add a way to build sandwich panels, typically formed by two metallic skins, and a layer of insulation material inbetween. This kind of panel is already possible to do, by making several panel objects from the same profile, and giving them different offset and thickness values. However, these sandwich panels often have a different profile for the top and bottom metal sheets. So the middle layer doesn't have a uniform thickness. There are also corrugated profiles that are more complex, with different wave heights or "peaks". So the whole panel tool must yet be extended to support these cases. So far I had no good idea on how to do that efficiently, but that's on our TODO list.


The TechDraw workbench, for who doesn't know it yet, is the successor of Drawing. It has more or less the same functionality as Drawing has, plus most of the stuff of the Drawing Dimensioning addon, and more advanced features such as the ability to move views graphically on the page. So far the special Draft and Arch tools that could display Draft objects and Arch Section plane contents were not available in TechDraw. This is now solved, and TechDraw can be used fully to produce 2D drawings of your models.


Another side thing I've been working on is the code documentation. Apart from our wiki documentation, which is hand-written by community members, and is mostly for FreeCAD users, there is also a documentation made specifically for people interested in programming, which describes in detail how FreeCAD is programmed, and which classes, functions and tools are available to you as a programmer (both C++ and Python). This documentation is not fully hand-written, but extracted automatically from the FreeCAD source code, by a tool called doxygen. Doxygen "reads" the code, and builds a map of the source code and all its different modules, classes, functions, etc. It also reads code comments, which are pieces of texts that developers place in their code, to help people who read that code to understand what does what. Good code always has a lot of those comments. Doxygen also reads these comments and includes them into the documentation.

So far, the whole FreeCAD code documentation extracted by Doxygen weighted more than 2Gb, which makes it too heavy to place on the FreeCAD web server. The default "theme" used by Doxygen is also rather ugly.

I'm now working on producing a thinner version of that documentation, that could fit on the server, and a better them that makes it blend into the rest of our web environment.

Good code documentation that is clean and pleasurable to read is very important to help new people interested in programming for FreeCAD, so it's worth spending a bit of time on it.

Sun diagram

The Arch Site has also received a new feature: By filling a couple of properties such as Latitude and Longitude, it can now display a solar diagram. That diagram can be scaled, oriented and centered on a specific point in the model, and of course turned on/off. So far it is just visual, you cannot do anything else with it than just looking at it. But in the future much more could be done with it. A first step I'll try to reach is enabling shadow studies.

Coin3D, the library that is used to manage the FreeCAD 3D view, is able to display shadows. So far I'm meeting some technical difficulties to make this handily and gracefully switchable on/off, but no doubt sooner or later we'll have a solution at hand.

in categories  freecad  permalink:  294   posted on 18.11.2016 19:50
From Yorik
More plumbing in FreeCAD... This is how it gets rendered in TechDraw

in categories  freecad  permalink:  293   posted on 18.11.2016 19:46
From Yorik

Solar diagrams in FreeCAD

New feature in FreeCAD: Arch Sites can now display a solar diagram:

More info at http://forum.freecadweb.org/viewtopic.php?f=23&p=145036#p145036

in categories  freecad  opensource  permalink:  290   posted on 02.11.2016 23:34
From Yorik
New opening symbols for Arch doors/windows in FreeCAD


in categories  freecad  permalink:  287   posted on 02.11.2016 14:47
From Yorik
FreeCAD Arch support in TechDraw at work...

in categories  freecad  opensource  permalink:  277   posted on 16.10.2016 20:59
From Yorik

#FreeCAD BIM development news

Here goes a little report from the FreeCAD front, showing a couple of things I've been working on in the last weeks.


As a follow-up of this post, several new features have been added to the Arch Site object. The most important is that the Site is now a Part object, which means it has a shape. Before, it was only a group, it had no "physical" existence in the 3D world. It now behaves like other Arch objects, that is, it has a base property (which is here called "Terrain"), that contains a base terrain object, that, at the moment, must an open Part object. Later on it will be extended to also accept meshes.

Then you have two additional properties, "Additions" and "Subtractions", same as other Arch objects. These are set by double-clicking the Site object in the tree view. With these, you can add solid objects as subtractions and additions.

When adding these objects, the result you get is this:

The difference with other Arch objects is that the site is always an open surface. It is not a solid. Other BIM apps usually require you to model a piece of solid to be the terrain, but I find that weird and arbitrary, most (all?) ways to obtain terrain data (GIS data, on-site measurements, etc) will give you only surface data. Why would the BIM app need a solid? Besides, in the long run, no doubt FreeCAD will gain tools for heavy civil engineering like roads and tunnels. These people certainly won't be satisfied with a simple block of uniform terrain. We'll need to be able to represent different geological layers. So sooner or later the solid representation would need to be changed.

It seems a safer bet to me to start slowly, and consider, for now, terrains as surfaces. Note that it is totally possible to interact with solids. In the images above, the red and blue shapes that get added/subtracted are solids. The result is a surface, but the Site object keeps track of the volumes of earth being excavated and filled in two separate properties (Addition Volume and Subtraction Volume). Additional properties will give you the terrain real area, the area of the projection on the XY (horizontal) plane, and the length of the perimeter.


I also did some more work on spaces. Basically, they received a couple of new properties such as vertical area, perimeter and a series of properties related to space use (number of people, energy consumption, etc) that will be needed for GBXML export. Note also that Equipment objects can now also have energy consumption defined, and you can have the consumption of spaces automatically calculated by summing the consumption of equipment inside it.

I also worked further on the GBXML exporter itself, but met a temporary showstopper. To test GBXML output, we need an application that can import GBXML and, preferably, do something with it. As far as I know, the only one avaialble that is open-source and runs on Linux is OpenStudio, which by the way seems a really nice thing. It is a bit hard to find the source code of OpenStudio, but it is on github. Problem: OpenStudio uses libraries about 2 years old (boost mainly) and doesn't run on modern Linux systems (their officially supported platform is an Ubuntu from 2012...) So I'm now busy trying to make OpenStudio work on my machine, which requires a ton of small fixes and is not a very easy task for a C++ ignorant. We could of course ask for help to the OpenStudio people, but the project has 691 open issues, I don't think we have a lot of chances to be heard.

If you read this and have some good knowledge of boost, I'd be very grateful for a little help!

About GBXML export from FreeCAD, it seems to me that the whole idea (looking at sketchup videos) of working with GBXML is to work with spaces. Spaces are the building blocks of a GBXML file. They have a series of properties, and each of their surfaces also has different properties such as material, orientation and what there is behind (exterior, ground or another space).

At the moment, spaces in FreeCAD are just containers for equipments, and carry information such as area. They can also be defined by boundary elements such as walls. But to make them work for GBXML, we'll need more, for example the ability to define a material for each surface, and also know if another space is behind a specific surface.

This would basically require spaces to touch each other, and not stop at walls like they do now. This might actually be easier for space calculations too. My idea at the moment is simply to make spaces behave differently when a wall or slab is used as boundary. Instead of stopping at the wall face, it would go up to the wall "midplane" (which will now need to be calculated). This way, any space would know 1) which material each surface is made of, by querying the material of the wall, and 2) which space is behind, by querying the wall for other attached spaces. All this should stay optinal of course, so you can still use spaces to calculate the "inner" area of a room.

Structural nodes

As discussed several times with Bernd, the official civil engineer of FreeCAD and one of the masterminds behind the FEM workbench, it is important to be able to extract an analytic model from structural elements in FreeCAD. Since quite some time, Arch structure elements have a "Nodes" property, which contains a list of 3D points. These form a linear sequence, that represents a structural line for the element. These nodes are calculated automatically, but can now also be edited manually, the same way as you can edit Draft objects. You can also easily make the nodes of several elements coincide, so it is now very easy to obtain analytic models like this:

Note that the slab, on top of the beam, can have its nodes form a plane instead of a line. This will later on be added to walls too.

We are not sure how/where to export these models yet, I'll try to start with IFC, which supports such analytic representations. Later on, we'll see...


Panels also received a little upgrade that I needed for a project: The ability to represent corrugated panels like these:

For this, a couple of new properties have been added to panels, where you can specify the type, direction, height and length of the waves. The rest continues to behave like before, so you just need to draw a 2D object, then press the Panel button to turn this 2D object into a panel.


Arch Windows could already have 3 kinds of components: frames, glass panels and solid panels. There is now a fourth: louvres. So now windows can also be used not only to make doors and windows, but also different kinds of shading devices.

To add louvred panels to a window, all that is needed is to edit the window by double-clicking it in the tree view, selecting a component, and changing its type to louvre. Two new window properties, Louvre Width and Louvre Spacing, will control the size and spacing of the louvre elements.

in categories  freecad  permalink:  275   posted on 12.10.2016 22:08
From Yorik
Electric design in FreeCAD...

in categories  freecad  opensource  permalink:  274   posted on 03.10.2016 24:31
From Yorik

Working with GIS, terrains and #FreeCAD

Or, how to build a precise 3D terrain from any place of the world.

Again not much visually significant FreeCAD development to show this week, so here is another interesting subject, that I started looking at in an earlier post.

We architects should really begin to learn about GIS.

GIS stands for Geographic information system and begins to be more and more used by administrations around the world, specially cities, to manage their physical area and infrastucture in all their complexities.

Also, it is becoming more and more their preferred way to deliver data that you need to use when doing a project on a certain plot of terrain in that city. Before, you would go to the city council, and ask for the data they have on a specific plot. In the old times, they would give you a photocopy of a piece of some plan, and a form filled with some additional information. In the recent years, most of them had switched to CAD systems and gave you DWG files to work with.

Now, DWG files are being abandoned worldwide, and, together with the better integration of the different services that compose a city council, they are adopting GIS systems. So we'd better learn how it works.

It is actually far better than before. GIS is a bit like CAD, but adapted for working with terrains, maps and geographic data. GIS files are usually made of layers, like a CAD file, but layers can contain vectorial data, like CAD, or bitmap (that they call raster) images. The most important feature, though, is that everything is georeferenced, which means that any point has a precise, exact position on earth. So you can join all kinds of data coming from all kinds of sources in a same file, everything will stack exactly on top of each other. In GIS you never move anything.

The amount of data that you can find online, already properly formatted, that you can simply drag and drop in your GIS application, to build beautiful maps with a huge quantity of layers is really impressive. In this article, I'll use data from my hometown, Brussels, and the city I live in now, São Paulo. Both have a public GIS website from where you can download data. I'll also take elevation maps directly from the NASA website. I'll use the most well-known, open-source, multiplatform GIS app available, called QGIS. I recommend you to install it, I bet very soon a GIS tool will be part of any architect's toolbox. Fianlyl, we'll export our map to a DXF file so we can build architecture projects on it, and build a 3D terrain model in FreeCAD. After installing, check the "Plugins" menu of QGIS, it has an amazing collection of useful plugins, a favorite being the openlayer plugin, which lets you work on top of an OpenStretMap layer, which is an excellent way to start a new work in QGIS.

Obtaining GIS data from the São Paulo city council is easy. Head to their GIS portal, zoom to the neighborhood of your choice, click the "Download" button in the left toolbar, and select the type of data you wish to download. Be sure to select "shapefiles" data type, which is the most common GIS format.

Brussels also has a similar geodata portal, a little bit more complex to navigate, but allow to download the same kind of data. However, they also have a much simpler download app which lets you easily specify the dataset you want to download and get the same shapefiles.

There is also one precious type of data available on the NASA website: Elevation maps. Several times in the history, they have covered the world with a satellite able to find map the elevation of any point on earth (apparently with very simple techniques like sending a wave signal and measuring the time it takes to bounce back). The latest data, collected with the ASTER satellite in 2009, has a 30x30m resolution of the whole earth, and is available freely on the NASA Echo Reverb website. The data comes in a special kind of bitmap image format called GeoTIFF which is basically a greyscale TIFF image with floating-point values (unlimited number of grey shades) and it is, of course, georeferenced.

Downloading data from there is however a bit more complex:

  1. egister a new account (it looks commercial, but ASTER data is free)
  2. Log in
  3. Zoom on the map
  4. Draw a rectangle
  5. In the list below, mark "ASTER Global Digital Elevation Model V002"
  6. Click Search for Granules
  7. In the next screen, under Granules you will get one (or more) zip files like ASTGTM2_S24W047.zip. Add them to the cart
  8. Click view items in cart. You will get all the zips you added, plus a "ASTER Global Digital Elevation Model V002" that you don't need to worry about
  9. Click "order" (it definitely doesn't look like it, but it's free)
  10. Accept all the requirements and click "submit order"
  11. You will get an email with a download link. Normally it's immediate, but one time I had to wait an hour or two.
  12. Unzip, and unzip another zip inside, there is your geotiff

Once we have all this data unzipped, we can just drag-and-drop the geotiffs and the shapefiles from the Browser Panel of QGIS into a fresh, blank document. Right-clicking on each new layer in the Layers Panel will allow to change visual properties such as color and transparency.

One very important note: Projecting coordinates onto the earth is a very complex business (think that the earth is not even completely spherical!). As a result, there are hundreds of different projection methods. You will quickly see that a shapefile is actually several files. One of these files defines the projection method. On the GIS portals above they usually inform which projection system they use for their data. In this case, Brussels uses Belgian Lambert 1972 projection, and São Paulo uses SAD69/96 UTM 23S. So make sure, when you insert a new layer, that it uses the correct projection. You can check or change by right-clicking a layer and "Set Layer CRS".

Above is Brussels central area buildings layer with the corresponding GeoTIFF image in the background. Generating contour lines from a GeoTIFF image involves two steps: Cropping (the area of the GeoTIFF is usually way too large for what we need) and generating the contour lines. Both operations are available from menu Raster -> Extraction. When using the Contour tool, be sure to turn "Attribute generation" on. This will, together with the contour lines, build a table and store the elevation of each line. This will be useful when we'll recreate a 3D model.

Our map is now complete, and if we right-click the contours layer, and check the attributes, we see our elevations list:

Before exporting to DXF, we need to perform one last step. The DXF exporter of QGIS will only export vector layers with the same projection system. However, the contours have taken the same projection system as the GeoTIFF, which are not Belgian Lambert. We then need to convert first. This is done by saving the contours layer (right-click it -> Save as) with the Belgian Lambert 72 projection system. Once that is done, we can discard the old one, and save to DXF via File -> DXF export. Make sure you mark the "Export features intersecting the current map extent" option, otherwise you'll be exporting the whole city, which will be quite huge.

We can then open our file in our vavorite DXF application(such as QCAD and do the necessary cleaning, remove stuff we don't need, etc. Both DXF files exported with Lambert or SAD69 will produce files in meters, I don't know if it is the case with any projection system, you'd better verify if using another system.

Unfortunately this DXF contains only 2D data. If you check the "Elevation" property of the terrain polylines, they are all zero. However, GDAL, the processing engine behind QGIS, is able to produce such a 3D DXF file from a contour shapefile with an "ELEV" attribute as we've taken care to do. Open a shell window in the folder that contains your contours file, and run a command like:

ogr2ogr -f "dxf" contours-lambert.dxf contours-lambert.shp -zfield ELEV

Changing "contours-lambert" by the name you used to save the contour file. You will see that a DXF file has been added. I wish someone would produce a plugin to do this from inside QGIS!

The new DXF file has the exact same coordinates as the previous one, so you can just import it in the former one, everything should just click into place (Any problem, open it in a separate tab and use the "Copy with basepoint" function of your CAD app and copy/paste the curves from/to the same point such as 0,0). Make sure to leave the 3D curves in their separate layer, so we can isolate them later to build the terrain.

It's now time to open the DXF file in FreeCAD. Make sure the "group objects by layer" option is turned on in the DXF preferences so we get all our curves as one object:

To build a nice BSpline surface from our curves can be easily done from the python console (at the moment there is no GUI tool for it). First we need to turn our curved into a points cloud by activating the "Points" workbench and using the "Points -> Convert to Points..." menu item, with a rather large value, like 5 or 10. After that, issuing these commands in the python console will create the BSpline surface (change the getObject("Points") with yours if your points cloud object is not named "Points"):

import Part,ReverseEngineering
obj = FreeCAD.ActiveDocument.getObject("Points")

This might take a little while. Use lower values than 16 to get a coarser but faster result, or higher to get a finer result. But you'll get a nice 3D surface built from the curves. This surface can then be measured, cropped, turned into a solid, etc.. with precise calculations.

in categories  freecad  opensource  permalink:  269   posted on 25.09.2016 23:43
From Yorik

Working with terrain in #FreeCAD

Since I have not much new FreeCAD-related development to show this week, I'll showcase an existing feature that has been around for some time, which is an external workbench named geodata, programmed by the long-time FreeCAD community member and guru Microelly2.

That workbench is part of the FreeCAD addons collection, which is a collection of additional workbenches that are not part of the core FreeCAD package but, since they are programmed entirely in Python and therefore don't need to be compiled, can be easily added to an existing FreeCAD installation. The FreeCAD addons repo linked above also provides a macro, which, once run inside FreeCAD, gives you an easy graphical installer that allows you to install, update or remove any of those additional workbenches. Click the link above and you'll get all the necessary instructions.

Also, this year was the first participation of FreeCAD to the Google Summer of Code. We got one student, Mandeep, who worked on building a more solid plugins installer for FreeCAD, capable of installing these workbenches but also all the macros found on the wiki. The work is not finished yet, but no doubt in the near future we will finally have a decent way to install all these additional features in FreeCAD.

Microelly2's geodata workbench basically allows you to fetch terrain data from the net, basically roads and building data from openstreetmap and terrain height data from both openstreetmap (but it doesn't always have accurate data) and NASA's SRTM data.

The procedure to get a piece of terrain with its height data in FreeCAD is quite simple:

  1. Install the geodata workbench and restart FreeCAD
  2. Switch to the geodata workbench
  3. Get the exact coordinates of the center of the zone you wish to import. You can do that simply by zooming in openstreetmap or in google maps, and you will see the coordinates in the URL bar of your browser
  4. In FreeCAD, menu GeoData -> Import OSM Map, fill in the coordinates. Leave "process elevation data" off. Buildings and roads are imported
  5. Click menu GeoData->Import OSM Heights and/or GeoData -> Import SRTM Heights to import height data from these two sources (use the same coordinates).

When done, you will get a piece of terrain with the roads and buildings, and the two terrain data (the SRTM data comes as a points cloud):

There will still be a bit of work necessary to turn this into data you can work with, but it's already a huge part of the work done.

The reason why I got interested in terrain data this week is aalso because I'm working on extending the Arch Site tool. Currently it is a simple container (it's actually simply a FreeCAD group with a couple of additional properties), but the idea is to turn it into something useful to:

  • Hold and process terrain data coming in various forms, such as meshes
  • Be able to get basic properties such as perimeter length or area
  • Be able to subtract or add volumes to it

A made already a couple of experiments to see how far that is possible, and it actually works surprisingly well. In the image below, a mesh was quickly made in Blender, imported and scaled in FreeCAD, then turned into an open Part shape (a shell). Doing boolean operations with shells gives a lot of interesting possibilities, and it's totally possible to keep the terrain surface "open" (no need to add an artificial thickness to it), and be able to subtract or add solids to/from it. Of course the volumes of earth that need to be added/removed are therefore easily computable.

I still need to solve a couple of minor issues, then all this should be in the FreeCAD code pretty soon.

in categories  freecad  opensource  permalink:  262   posted on 17.09.2016 22:23
From Yorik

#FreeCAD news and Arch workflow

So, let's continue to post more often about FreeCAD. I'm beginning to organize a bit better, gathering screenshots and ideas during the week, so I'll try to keep this going. This week has seen many improvements, specially because we've been doing intense FreeCAD work with OpeningDesign. Like everytime you make intense use of FreeCAD or any other app, you spot a lot of smaller bugs and repetitive annoyances. But a look a the commits log will inform you that many of those have already been fixed on the way.

The above image shows one of these jobs, more about it below

Generally speaking, working with FreeCAD is becoming very stable. Drafting and modelling is very straightforward already, and the workflow even begins to become fast. The biggest bottleneck I encountered during this week is using the Drawing workbench to build 2D sheets of the model. This is mostly due to the limitations of Qt's SVG engine, which doesn't support the full SVG specification, and many features like clipping, multiline texts or hatches are not supported by the Drawing viewer. When exporting your final Drawing sheet to SVG, however, and opening it in a better SVG-supporting application such as Inkscape, Firefox or Chrome, the result is very good. But it is annoying to have to work in the Drawing module without seeing the actual result (that's actually the main reason why there is a "preview in browser" button in Drawing).

But, bearing with these difficulties, it is already totally possible to produce this kind of result:

This is about to change, however, with the new TechDraw workbench that is currently already available in development versions of FreeCAD (refer to previous posts to obtain one). TechDraw is not based directly on SVG anymore, but on the more generic graphics engine of Qt. The final SVG sheet that it produces is built from it, at the moment you export, but what you see while you are working is not the SVG data itself anymore. This might seem more complex (it is, actually), but opens up a huge array of possibilities. Most of the limitations above don't exist anymore in TechDraw.

Of the two main tools that we use in architectural and BIM work to build 2D sheets, which are the Draft view and the SectionPlane view (which is also built with the Drawing Draft tool), so far only the Draft view has been implemented in TechDraw, once the Section View tool is implemented too we can think of abandoning the Drawing for good.

I'll describe a bit more of the workflow used in the jobs illustrated in this post. Almost everything was done directly in FreeCAD. The only pieces done outside were the cleaning of the existing floor plan, that we got in DWG form, in DraftSight, and the preparing of the Drawing template, and a couple of SVG objects to be placed directly on it, in Inkscape. All the rest is pure FreeCAD.

The basic workflow was this:

  1. Clean of unnecessary stuff in the DWG file, reduce number of layers, export it to DXF (in DraftSight)
  2. Import the DXF file in FreeCAD
  3. Draw a couple of lines and wires on top of the walls and columns of the existing floor plan (You can draw walls and structural elements directly, but I like to draw the baselines myself, to make sure they are where I want them, and I find the Draft tools much more convenient to draw stuff).
  4. Turn all your lines and wires to walls or structures (this whole thing is actually almost as fast as drawing them directly)
  5. Adjust thickness, height, alignment, etc... of walls and structures
  6. Put everything in groups. For me a huge power of FreeCAD over other BIM applications is the free grouping possibilities. By creating groups, and groups inside groups, you are basically organizing your data the way you want. No limitations, no rigid building/foor structure to follow. All the separation of, for example, the existing walls, the new walls and the walls to be demolished is simply done with groups.
  7. Add doors and windows. In most cases I didn't use the "in-wall" capability of windows, I made the openings first by subtracting a volume, then made the doors outside of any wall, and simply cloned them and moved them to their final places. This is bit slower, but makes your geometry much more failsafe, since windows are a delicate matter and still have bugs here and there.
  8. Add annotations, linework, texts, dimensions, in 2D, directly in the model (in the future, we hope to do most of this directly in TechDraw, but at the moment this "old-school" workflow is solid and works well. Again, separate annotations in groups, depending on the subject.
  9. Add one or more Section Planes to define plans and sections you'll need. If you grouped your objects well, you will only have one or two groups to add to the section plane as "seen objects". It is best to leave all the 2D geometry and annotations out, and have section planes only see 3D objects (being Arch or not).
  10. Prepare a Drawing template in Inkscape
  11. Create a new sheet in FreeCAD's Drawing workbench, give it our template, and start adding our stuff there, by using the Draft View tool, either with section planes selected (for cut or viewed 3D geometry), or groups containing linework, texts and dimensions (for 2D and annotations). This will allow you to create only a few Drawing views, so it keeps manageable.
  12. The clip tool of the Drawing workbench is annoying to use (it draws a big black rectangle on the sheet, which is not exported fortunately), so it's best to think about your layout beforehand, and model only what will appear on the sheet.
  13. Use the Drawing symbol and annotation tools to add stuff (logos, titles, etc) directly on the sheet.
  14. Export to SVG, open in Inkscape, there you have a chance to do more last-minute fixes if needed, and save as PDF. It is possible to export a PDF directly from FreeCAD, but opening it in another app is good to make sure everything is OK.
  15. Finally, in order to export to IFC, gather the arch objects inside a Building, export, and you are done. It is always a good idea to verify the exported IFC file in another IFC viewer application to make sure everything is there an dat the right place. A quick fix for buggy objects is to force them to export to Brep (there is a command for that in Arch -> Utilities).

Interesting detail, the small city map in the images above, is taken directly from OpenStreetMap. There you have a "share" button that exports to SVG. You can then open that in Inkscape, rework it a bit if you like (change some colors and linetypes, etc), save it and place it directly on your Drawing sheet.

Of course this workflow above is somewhat distant than what you are used to with commercial BIM applications. But things are improving, and also this is not necessarily something negative. It also gives you a lot more freedom, and the mix of 2D and 3D that FreeCAD offers, that you had in the old times of AutoCAD or in apps like Rhino is something I find much valuable.

Don't forget that almost all the work of OpeningDesign is open, so all the files from the examples above are available online.

Finally, a word about two features I added this week, one is a new display mode for walls, which shows them in wireframe, but with the bottom face hatched, which makes it very nice to work in plan view

Right now it's still in testing, to see how useful it is and how well it behaves, but if it works well it should be extended to support different patterns (taken from the material, for example), and to extend this to structural objects too.

And finally, another feature is a new addition to the structural precast concrete presets, a stairs element:

in categories  freecad  opensource  permalink:  258   posted on 11.09.2016 21:16
From Yorik

Bits of #FreeCAD

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.

in categories  freecad  opensource  permalink:  256   posted on 02.09.2016 20:34
From Yorik

Patreon and more #FreeCAD development news

Last week, encouraged by several comments on the FreeCAD forum, I decided to open an account on Patreon. Often people are asking how they could contribute to FreeCAD with money, and I thought: Why not? If I could get paid for a certain amount of hours, that's a certain amount of hours I could dedicate permanently to FreeCAD. At the moment I work on it when time permits, which can vary a lot.

The patreon campaign is starting well. Several people sponsored me already. So I thought a first thing I could do to give a form of "thank you" is to get back at posting more often about FreeCAD here.

So I'll start that today, by writing about what's going on with FreeCAD development. As I suppose everybody knows, The 0.16 version of FreeCAD has been out in april this year. Since then, many things have been done, and the next version will feature massive changes. Unfortunately I haven't got time to write much about it, but this is about to change!

Here are two things that are currently available in the 0.17 development version:

PartDesign Next

Probably the most sorely missed feature in FreeCAD is a way to work with Assemblies. Jürgen, the father of FreeCAD, started to work on assemblies a long time ago. However, he didn't have more time to work on that, and his work has been left half-done. In the meantime, we gained a workaround, the Assembly2 workbench,which can now be easily installed with our addons installer macro and for many FreeCAD users, has been doing the job perfectly.

Jürgen's assembly workbench, though, required some heavy changes to the FreeCAD core, and specially to the PartDesign workbench. This i sthe main reason why it stayed behind and was very hard to push forward to merge in to FreeCAD. A courageous team of developers, among which ickby, blobfish/tanderson, Fat-Zer, DeepSOIC, the new FreeCAD warriors, took on them to separate the core + PartDesign changes from the assembly itself. This took a very long time, but was finally done, and is the base of what we ended up calling PartDesignNext.

Along the way, more functionality was added too, inspired by another FreeCAD addon workbench, WorkFeature, like a series of helper objects that can be used as bases for sketches and other PartDesign operations. This also helps working around another long-time problem of FreeCAD, topological naming (for which there have actually been some impressive progressesrecently).

In this new PartDesign, Any PartDesign operation, such as creating new sketches, or creating solids out of them, now happens inside a body. A new body will be created if none is present in the document. You can have several PartDesign objects inside a same body. Inside the body, you can also add several helper planes or lines, which can be used to align or construct other parts. You can now also link edges from other objects inside a sketch.

This forum post explains it all.

The result of all this has now been merged, and is available in 0.17 development versions. The road is now clear to work on full assembly funcionality, and work has already started in that way. But the new PartDesign already opens up a lot of possibilities, and working with multi-solid objects is now really good.


For who is following the FreeCAD progresses since a long time, do you remember the work of Luke Parry on upgrading the Drawing workbench? Unfortunately Luke went on other projects and his work stayed where it was. A year later, Ian Rees started a funding experiment similar to this Patreon one, and worked further on it. Once again, the work was stopped because Ian went on to other things. Right after that, fortunately we got a new addon called Drawing Dimensioning which already pushed things a ot forward by bringing a series of on-drawing tools such as dimensions, symbols and annotations.

Finally this year, Wanderefan gave the final effort, and brought all this work to a mergeable state, and it is now included in version 0.17 under a new name, TechDraw. This is to not break the current Drawing workbench, which will still be useful until TechDraw is fully ready. TechDraw is basically th same as the Drawing workbench, but with a series of improvements such as the ability to move views graphically, place dimensions directly on the sheet, or fill areas with hatches.

More things are coming there too, like section tools.

There are also more big changes under the hood, such as the use of VTK, which will first be used with FEM but might prove useful for a qualtity of other areas.

But there is much more to come. FreeCAD is being ported to new verisons of Qt (Qt5) and Python (python3). Most of the work is done, and we might soon see that included. However each of these big changes brings a fair share of unstability, which is normal, and therefore requires some time between each merge for the dust to settle. So we will probably need some time before things have stabilized sufficiently to do a new release.

As I hope you can perceive, the development team has grown a lot, and things are going at higher speed now. Exciting times ahead!

in categories  freecad  opensource  permalink:  255   posted on 31.08.2016 4:09
From Yorik
New rewritten Arch Schedule tool in FreeCAD,

Check the full docs here.

in categories  freecad  opensource  permalink:  252   posted on 20.08.2016 16:19
From Yorik
Plumbing desing in FreeCAD...

The whole functionality is now implemented, and is described here in detail.

in categories  freecad  talks  opensource  permalink:  204   posted on 24.02.2016 23:11
From Yorik

FreeCAD Arch Workbench presentation

A video presentation of the Arch workbench of FreeCAD that I did last week at ODC2016PN