From FreeCAD Documentation


In FreeCAD the word "Assembly" is normally used to refer to a 3D model that is composed of several distinguishable parts, that are put together in some way to create a functional object, just like real life products are made.

For example, a bolt, a washer and a nut are three separate bodies that when put together comprise an assembly.

Left: three individual contiguous solids, each of them modelled by a PartDesign Body. Right: the individual Bodies put together inside a Std Part to create an assembly.


Manual assembly

In general terms, you don't need special tools to create assemblies, you just need to have many different bodies arranged in some way.

To position the bodies where you want them, you can

You may use one of the pseudo-assembly external workbenches, like Lattice2, Manipulator, Part-o-magic, or WorkFeature, to help you find intersections, measure distances, and distribute your objects in the desired way.

In general, the Std Part object was designed to serve as the basic building block to create assemblies. This object is used to group several bodies and move them together as a unit, that is, as a sub-assembly. Then this sub-assembly can be placed next to, or used inside of other sub-assemblies in order to create the final assembly.

Constrained assembly

You can also use a dedicated assembly workbench, like A2plus, Assembly3, or Assembly4. Please note that Assembly2 is unmaintained, so it is not recommended for new models.

The assembly workbenches use constraints and expressions to create relationships between the objects in your model, in order to mathematically tie the objects in place, for example, "this face should stick to this other face", "this cylinder should be concentric to that circle", "this point should follow this edge", etc.

This is an advanced usage of the software that is normally used in complex mechanical systems. If your model is not very complex, then using an assembly workbench may not be necessary.


As of FreeCAD 0.19, there is no official assembly workbench included by default with the system. Assembly workbenches are difficult to program because many problems need to be solved regarding the efficient use of bodies and parts in your model. Nevertheless, the introduction of the App Link object has improved the situation.

Please note that assembly workbenches are generally incompatible with each other. If you create an assembly with one of these workbenches, you should stick to it, and not use another assembly workbench to work with the same document.

The assembly workbenches continue development, and it is expected that at some point one assembly workbench will emerge as the "official" one. This could happen by promoting one of the current assembly workbenches, or by combining them to produce a more complete solution.