Sandbox:TutorialArchBIM


 * Vilanova Artigas
 * pictures by Pedro Kok
 * Barão de Jaceguaí, 1151 - Campo Belo, São Paulo-SP (Google) With 30 images

Goal of this document
Update original Arch Tutorial by Yorik van Havre.

The purpose was to seriously try to learn some Freecad Work flows, after playing with it at various points in time over at least the last 5 years.

Reflect version 0.17 / 0.18 of Freecad Use a BIM workflow

Currently this document is WORK in Progress

Images
All Images not already on wiki are named and uploaded to File:at2_*

Introduction
This tutorial aims at giving you the basics to work with the Arch Workbench. I will try to make it simple enough so you don't need any previous experience with FreeCAD, but having some experience with 3D or BIM applications will be useful. In any case, you should be prepared to look for yourself for further information about how FreeCAD works on the FreeCAD documentation wiki. The Getting started page is a must read, if you have no previous experience with FreeCAD. Also check our tutorials section, and on youtube you will also find a lot more of FreeCAD tutorials.

The purpose of the Arch Workbench is to offer a complete BIM workflow inside FreeCAD. As it is still under development, don't expect to find here the same tools and level of completion as grown-up commercial alternatives such as Revit or ArchiCAD, but on the other hand, FreeCAD being used in a much bigger scope than these applications, the Arch Workbench greatly benefits from the other disciplines FreeCAD caters to, and offers some features rarely seen in traditional BIM applications.

Here are, for example, a couple of interesting features of FreeCAD's Arch Workbench that you'll hardly find in other BIM apps:


 * Architectural objects are always solids. From FreeCAD's strong mechanical background, we learned the importance of always working with solid objects. This ensures a much more error-free workflow, and very reliable boolean operations. Since cutting through 3D objects with a 2D plane, in order to extract sections, is also a boolean operation, you can immediately see the importance of this point.


 * Architectural objects can always have any shape. No restrictions. Walls don't need to be vertical, slabs don't need to look like slabs. Any solid object can always become any architectural object. Very complex things, usually hard to define in other BIM applications, like a floor slab curving up and becoming a wall (yes Zaha Hadid, it's you we're talking about), present no particular problem at all in FreeCAD.


 * The whole power of FreeCAD is at your fingertips. You can design architectural objects with any other tool of FreeCAD, such as the PartDesign Workbench, and when they are ready, convert them to architectural objects. They will still retain their full modeling history, and continue being totally editable. The Arch Workbench also inherits much of the Draft Workbench functionality, such as snapping and working planes.


 * The Arch Workbench is very mesh-friendly. You can easily design an architectural model in a mesh-based application such as Blender or SketchUp and import it in FreeCAD. If you took care of the quality of your model and its objects are manifold solid shapes, turning them into architectural objects only requires the press of a button.

At the time of writing, the Arch Workbench, as the rest of FreeCAD, suffers some limitations. Most are being worked on, and will disappear in the future.


 * FreeCAD is no 2D application. It is made for 3D. There is a reasonable set of tools for drawing and editing 2D objects with the Draft Workbench and Sketcher Workbench, but it is not made for handling very large (and sometimes badly drawn) 2D CAD files. You can usually successfully import 2D files, but don't expect very high performance if you want to keep working on them in 2D. You have been warned.


 * No materials support. FreeCAD will have a complete Material system, able to define very complex materials, with all the goodies you can expect (custom properties, material families, rendering and visual aspect properties, etc), and the Arch Workbench will of course use it when it is ready.


 * Very preliminary IFC support. You can already import IFC files, quite reliably, provided IfcOpenShell is installed on your system, but exporting is still not officially supported. This is worked on both by the FreeCAD and IfcOpenShell developers, and in the future we can expect full-powered IFC support.


 * Most Arch tools are still in development. That means that automatic "wizard" tools that create complex geometry automatically, such as Arch Roof or Arch Stairs can only produce certain types of objects, and other tools that have presets, such as Arch Structure or Arch Window only have a couple of basic presets. This will of course grow over time.


 * Relations between objects in FreeCAD are still not officially available. These, for example the relation between a window and its host wall, are currently implemented in the Arch Workbench with temporary (and therefore somewhat limited) methods. Many new possibilities will arise when this feature will be fully available.


 * Units are being implemented in FreeCAD, which will allow you to work with any unit you wish (even imperial units, you guys from the USA can be eternally grateful for this to Jürgen, FreeCAD's godfather and dictator). But at the moment the implementation is not complete, and the Arch workbench still doesn't support them. You must consider it "unit-less". This tutorial uses millimeters as units.

Typical workflows
In this tutorial we focus on a BIM oriented approach of using FreeCad. We will use mostly three workbenches: Arch Workbench and BIM, of course, but also Draft, whose tools are all included in Arch, so there is no need to switch workbenches, and Sketcher. Conveniently, can create a custom toolbar in your Arch workbench, with Tools → Customize, and add the tools from the sketcher that you use often.

Preparation
Instead of creating a project from scratch, let's take an example project to model, it will save us time. This wonderful house by the famous architect Vilanova Artigas (see a series of pictures by Pedro Kok), because it is close to where Yorik lives. It is simple, it's a wonderful example of the amazing modernist architecture of São Paulo. Drawings in dwg format are easily available. We will use the 2D DWG drawings obtained from the link above (you need to register on the above site to download, but it's free, or grab directly a dxf version here) as a base to build our model. So the first thing you'll want to do is to download the file, unzip it, and open the DWG file inside with a dwg application such as DraftSight. Alternatively, you can convert it to DXF with a free utility such as the Teigha File Converter. If you have the Teigha converter installed (and its path set in the Arch preferences settings), FreeCAD is also able to import DWG files directly. But since these files can sometimes be of bad quality and very heavy, it's usually better to open it first with a 2D CAD application and do some cleaning. Here, all the detail drawings are removed, all the title-blocks and page layouts. A "clean" ("purge" in AutoCAD slang) to remove all unused entities, reorganized the sections at a logical location in relation to the plan view, and moved everything to the (0,0) point. After that, our file can be opened quite efficiently in FreeCAD. Check the different options available in Edit → Preferences →



This is how the file looks after being opened in FreeCAD. Changed the thickness of the walls (the contents of the "muros" group), and flipped a couple of doors that were imported with wrong X scale, with the Draft Scale tool:

Preparing dwg / dxf Alternative text
For editing and exporting to dxf there are various free tools available. Found that of the free tools out there, [DraftSight by Dassault] worked fine. Most files when importing are in Meters. Scale by 1000 (same scale on all axis), either in FC or other system. To Isolate the various views, I found most effective was deleting all but the one I was seeking, and doing a SaveAs, with dxf as extension. This was repeated for all views.

Next, import the various views to Freecad.

Tip It is a good idea to import or save the various views into separate FCStd files. This keeps the files smaller and quicker to work with. Naming of files is Your choice, but it is a good idea to use a naming convention.

FIXME

Need place to upload attached files

''For dxf files, they are placed in a directory named ./ref/dxf below the project directory. If You want to skip this step, the imported dxf files can be found here.''

Plan View
Start with importing and placing the Plan View.



Your imported geometry will now turn up as a bunch of edges. It is a good idea to organize these into a Group. The Group can be created before importing, or You can select all the imported edges and ‘drag/drop’ them into the Group.



Now, do the same for all the other views. Next In this document, we will place the various view at their location, elevation and rotation, according to our ArchAxisSystem. Before Rotating and placing the various views, we need to do some planning.

Tip

FIXME needs Checking

FreeCad dxf import treats everything as Edges or Shapes, This is generally ok for lines. Bad for circles. No easy way to find Center.

Planning
As a minimum

A defined project zero / origin – with local x,y,z coordinates 0,0,0 shall be defined and used throughout the project.

Tip

For further planning of File structure jump to the IFC section of this document

In this project we will follow Axis system of downloaded original Drawings.



Defining the project origin at intersection of Axis 01 & D. By our convention this equals SouthWest corner of model. Observe that the axis pass through the center of walls.

When modeling any Architectural model, You will most certainly want to split into separate files. By the way, partial IFC files seem to be the trend at the moment. Mainly split by discipline. The split can be by discipline or other. It is good practice to have a common origin and orientation across these models (files). This makes it easy to copy paste groups between files as needed. It also provides a good basis for several people to work on the project as needed.

Tip

For reference we have made the assumption that global Y-axis equals North.

Defining the Arch Axis System
We now want to make an ArchAxisSystem for reference when modeling our building. The result will look something like this:



To find the data for making the ArchAxisSystem study the Plan View of the imported dwg. This will show You Axis and Dimensions.



Alternatively measure between the various axis in Freecad. This can be done in several ways, using the part workbench Measure linear, Tape Measure works fine for this.



By Studying original dxf files.



When measuring distance between axis 10 and 11, we find Delta X = 3.6246 Index 11 above, has been adjusted since if possible, we like to work with ‘round’ figures.

Arch axis X
Now, let’s make the Axis along global X: The Freecad Command is Arch Axis



Image shows Data and labels Used.

Arch Y-Axis


Image shows Data and labels Used.

Tip

Observe the 270deg rotation and offset of placement to get labels to get desired layout.

Combining to Axis System
Arch AxisSystem is used to combine the x and y Arch Axis into an Arch Axis system.

Tip If You save Your AxisSystem to a file, without any other geometry, it does not seem to open as the first file. FreeCad simply Crashes. However, not such a big deal, because if You open another file containing geometry first, then You are able to open the file containing only the AxisSystem without any problem. Strange??

Placing and rotating 2d Views
In order to place 2d views in 3d, we need to prepare some helper objects. In FreeCad we have several ways we can set-up, store and name Working Planes. We can name these and store them by using a WorkingPlaneProxy object.



You should end up with something looking like this

Tip

By placing and rotating the imported 2d view, You will have a good way of checking their consistency.

Walls
Walls can be:
 * Inner / Outer, Structural / Non Structural
 * Walls should contain openings for doors, windows, or other

Like most Arch objects, walls can be built upon a big variety of other objects: lines, wires (polylines), sketches, faces or solid (or even on nothing at all, in which case they are defined by height, width and length). The resulting geometry of the wall depends on that base geometry, and the properties you fill in, such as width and height. As you might guess, a wall based on a line will use that line as its alignment line, while a wall based on a face will use that face as its base footprint, and a wall based on a solid will simply adopt the shape of that solid. This allows about any shape imaginable to become a wall.

There are different possible strategies to build walls in FreeCAD. One might want to build a complete "floor plan" with the sketcher, and build one, big, wall object from it. This technique works, but you can only give one thickness for all the walls of the project. Or, you can build each piece of wall from separate line segments.

Delete ? Or, this is what we will do here, a mix of both: We will build a couple of wires on top of the imported plan, one for each type of wall: Have found that editing a wire is currently more cumbersome than editing a line



The RED lines that will become concrete walls (a pictures search of the house can help you to see the different wall types), the GREEN ones are the exterior brick walls, and the BLUE ones will become the inner walls. Lines are passed through the doors, because doors will be inserted in the walls later, and will create their openings automatically. Walls can also be aligned left, right or centrally on their baseline, so it doesn't matter which side you draw the baseline. Take care on avoiding intersections as much as You can. Our model will be cleaner that way. This will save us some headache later, for example if we export our work to other applications, that might not like it.

When this is done, place all those lines in a new group if you want, select each line one by one, and press the Arch Wall tool to build a wall from each of them. You can also select several lines at once. After doing that, and correcting widths (exterior walls are 25cm wide, inner walls are 15cm wide) and some alignments, we have our walls ready:



You should now have a model resembling something like this.

Grouping

Grouping of Your various objects can come in handy at a later stage. How to Group Your model is Your choice.

Here is an example:

Note, Baselines for creating walls have also been grouped

Walls have been grouped like:
 * Walls
 * WallsExternal
 * WallsInternal

Tip

Have found the KISS principle (Keep It Simple & Stupid) is a good approach.


 * Using lines as a base for walls works fine.
 * They are easy to move and change.
 * When editing the line defining a wall, the wall will update
 * At a later stage You can always join them as needed.

Tip

Saving Your walls to a new file at this stage can be a good idea.

One way of doing this is creating a new file.
 * Activate Your file containing Walls You have just modelles
 * Mark the groups You want in Your 'wallModelFile'
 * Choose Edit->Copy
 * Activate Your new file
 * Choose Edit->Paste, or Ctrl+v
 * Save Your new file to something meaningful for Your workflow.
 * Suggestion At2_Walls_Initial

With this work flow:
 * Pros
 * You will be able to go back to Your starting point if anything goes wrong
 * You will be building a model consisting of several partial models
 * This is a good way of keeping file size down. You can work on one particual 'sub model' without caring about the overhead of the total model.
 * Cons
 * You will generate a lot of files
 * Be particular how You name Your various files, or get lost.

FIXME

So how to organize? Believe the main differing factor is Structural / Non Structural Next Level Inner / Outer

Curtain Walls are always Non Structural

Joining Wall segments
All Arch objects have a great feature: you can add one to another. Doing that will unite their geometries, but they are still editable independently after. To add one of our crossing walls to the other, just select one, CTRL + select the other, and press the Arch Add tool:



On the left are the two intersecting walls, on the right the result after adding one to the other.

For example, I could have drawn all my baselines above without caring about what crosses what, and fix things with the Arch Add tool later. But I would have raised much the complexity of my model, for no gain at all. Better make them correct right from the start, and keeping them as very simple pieces of geometry.

Now that our walls are okay, we need to raise their height, until they intersect the roof. Then, since the wall object still cannot be cut automatically by roofs (this will happen some day, though), we will build a "dummy" object, that follows the shape of the roof, to be subtracted from our walls.

First, by looking at our 2D drawings, we can see that the highest point of the roof is 5.6m above the ground. So let's give all our walls a height of 6m, so we make sure they will be cut by our dummy roof volume. Why 6m and not 5.6m? You may ask. Well, if you already worked with boolean operations (additions, subtractions, intersections), you must already know that these operations usually don't like much "face-on-face" situations. They prefer clearly, frankly intersecting objects. So by doing this, we keep on the safe side.

To raise the height of our walls, simply select all of them (don't forget the one we added to the other) in the tree view, and change the value of their "height" property.

Studio Elevation
Before making our roof and cutting the walls, let's make the remaining objects that will need to be cut: The walls of the above studio, and the columns.

We will now make a Workplane and a workplaneProxy object at the studio elevation.



Before establishing the elevation, take a look at the base 2d drawings. Something is wrong in paradise.

We will set top of Studio floor (Slab) to 2425,0 mm

This can be done in many ways. Probably the easiest is to draw the baseline for studio wall on top of the Plan View, and moving it up 2425mm.

Delete ?

The walls of the studio are made the same way as we did, on the superior floor plan, but they will be raised up to level 2.6m. So we will give them the needed height so their top is at 6m too, that is, 3.4m. Once this is done, let's move our walls up by 2.6m: Select them both, put yourself in frontal view (View → Standard Views → Front), press the Draft Move button, select a first point, then enter 0, 2.6, 0 as coordinates, and press enter. Your objects now have jumped 2.6m high:

Alternative Approach

Now let's move our walls horizontally, to their correct location. Since we have points to snap to, this is easier: Select both walls, press the Draft Move tool, and move them from one point to the other:



Finally, I changed the color of some walls to a brick-like color (so it's easier to differentiate), and made a small correction: Some walls don't go up to the roof, but stop at a height of 2.60m. I corrected the height of those walls.

Subtractions
We will show two different approaches to creating the Subtraction Volume, one drawing on 3d SouthEleveation, second drawing on plan View, rotating and moving.

Approach one
In this Approach we will draw and extrude with correct 3d location


 * Set Your WorkingPlane to Front
 * Draw lines following the lower edge of roof
 * Use DraftTrimex to extend and join lines so they for a closed loop
 * Make sure the cutting volume we want to produce extends the bounds of what we want to cut
 * Convert lines to close dwire
 * Extrude to a dimension larger than total with of elements we want to cut
 * If needed, move to top view and move extrusion so it covers the with of the building



Approach Two
Now it is time to build our subtraction volume. The easiest way will be to draw its profile on top of the section view. Then, we will rotate it and place it at its correct position. See why I placed the sections and elevations like that before beginning? It will be very handy for drawing stuff there, then moving it to its correct position on the model.

Let's draw a volume, bigger than the roof, that will be subtracted from our walls. To do that, I drew two lines on top of the base of the roof, then extended them a bit further with the Draft Trimex tool. Then, I drew a wire, snapping on these lines, and going well above our 6 meters. I also drew a blue line on the ground level (0.00), that will be our rotation axis.



Now is the tricky part: We will use the Draft Rotate tool to rotate our profile 90 degrees up, in the right position to be extruded. To do that, we must first change the working plane to the YZ plane. Once this is done, the rotation will happen in that plane. But if we do like we did a bit earlier, and set our view to side view, it will be hard to see and select our profile, and to know where is the basepoint around which it must rotate, right? Then we must set the working plane manually: Press the Draft SelectPlane button (it is in the "tasks" tab of the tree view), and set it to YZ (which is the "side" plane). Once you set the working plane manually, like that, it won't change depending on your view. You can now rotate your view until you have a good view of all the things you must select. To switch the working plane back to "automatic" mode later, press the Draft SelectPlane button again and set it to "None".

Now the rotation will be easy to do: Select the profile, press the Draft Rotate button, click on a point of the blue line, enter 0 as start angle, and 90 as rotation:



Now all we need to do it to move the profile a bit closer to the model (set the working plane to XY if needed), and extrude it. This can be done either with the Part Extrude tool, or Draft Trimex, which also has the special hidden power to extrude faces. Make sure your extrusion is larger than all the walls it will be subtracted from, to avoid face-on-face situations:



Common to both approaches
Now, here comes into action the contrary of the Arch Add tool: Arch Remove. As you might have guessed, it also makes an object a child of another, but its shape is subtracted from the host object, instead of being united. So now things are simple: Select the volume to subtract (I renamed it as "Roof volume to subtract" in the tree view so it is easy to spot), CTRL + select a wall, and press the Arch Remove button. You'll see that, after the subtraction happened, the volume to subtract disappeared from both the 3D view and the tree view. That is because it has been marked as child of the wall, and "swallowed" by that wall. Select the wall, expand it in the tree view, there is our volume.

Now, select the volume in the tree vieew, CTRL + select the next wall, press Arch Remove. Repeat for the next walls until you have everything properly cut:



Remember that for both Arch Add and Arch Remove, the order you select the objects is important. The host is always the last one, like in "Remove X from Y" or "Add X to Y"

Tip

Work flow note:

It is probably a good Idea to store Your RoofCutVolume in a separate file for later

Making the roofs
Starting With Longitudinal Beams



Looking at the section of the Outer Beams, we can see it is aligned with outer wall. At least in some countries with rougher weather conditions this would be bad practice. Will increase with to 200mm, and have the beam extend 50mm outside the wall. Would also like to have what we sometimes call a drip nose. Feel it is a bit complicated to add at the moment.



Showing Section of Beam with DripNose



Created as separate extrudes, added to BuildingPart

FIXME

Struggling with determining best way to model..

Tried using Part Boolean Cut For the roof canopy...

The cut results in error when exporting

WokFeature Approach
Try to use Work features

IFC note
When Building part is exported to IFC, it creates 4xIFCproxyElements, and a parent Beam object

Floors
Generally defined as Slabs

Doors
Inner or outer

Windows
Inner or Outer

IFC and BIM
Building Information Modelling (BIM) is a very broad term that describes the process of creating a digital model of a building.

Planning
BEP ( BIM Execution Plan)

All BIM projects should have a BEP ( BIM Execution Plan)

As a minimum

Origin point, northing, and elevation
One of the simplest yet most critical aspects of good project coordination is the establishment of a common or shared base point for all BIM data to follow. It is also essential to have a common site base point as the data is used through the life-cycle of the building.

IFC Links
Planning and Standards by U.S. General Services Administration FC4 - is it ready yet?

IFC round tripping
Aim is to also test round tripping, exporting IFC from FreeCAD and importing same file for comparison. Abbreviations BEP | BIM Execution Plan References & Links

Tip Icon Downloaded

Document Draft Snippets This is where we have temporarily stored snippets of text, that maybe should be placed somewhere in the document

BIM requirements by stakeholders
In the UK, the Government Construction Strategy published in May 2011, stated that the '...government will require fully collaborative 3D BIM (with all project and asset information, documentation and data being electronic) as a minimum by 2016'. This represents a minimum requirement for Level 2 BIM on centrally-procured public projects.

Relevant Forum Posts
Have started gathering some forum post that might be relevant for the TutorialArchBim


 * freecad forumreorder objects
 * Why Switch from FreeCAD to Blender
 * Noob. Architecture best practices, workflow and other questions
 * BIM Workbench
 * xrefs

Customizing Arch WorkBench
This is an example "customized" Arch workbench:



In this tutorial, we will model the house in 3D, based on the 2D drawings we will download from the net, and extract from it 2D documents, such as plans, elevations and sections.

Customizing Arch WorkBench
wiki styling

Annex A
Freecad install...

Binary executables

/usr/bin$ ls -l freec* lrwxrwxrwx 1 root root 26 aug. 19 21:25 freecad -> ../lib/freecad/bin/FreeCAD lrwxrwxrwx 1 root root 29 aug.  19 21:25 freecadcmd -> ../lib/freecad/bin/FreeCADCmd lrwxrwxrwx 1 root root 35 aug.  23 04:16 freecadcmd-daily -> ../lib/freecad-daily/bin/FreeCADCmd lrwxrwxrwx 1 root root 32 aug.  23 04:16 freecad-daily -> ../lib/freecad-daily/bin/FreeCAD -rwxr-xr-x 1 root root 717 aug. 23 01:03 freecad-daily-thumbnailer -rwxr-xr-x 1 root root 699 aug. 19 20:29 freecad-thumbnailer