Embedding metal object inside 3D Printed parts is certainly a practice that solve several assembly problems and achieve an higher performance level of our printed objects in terms of: ease of use, clean look as well as higher strength to mechanical stress.

The technique to create objects in this way is very simple: we need only to pause the printer at the right time, insert the metal object, and restart the printing, trapping the object inside with the subsequent layers.

The method to obtain that is slightly more laborious, because involve some manual action from our side and starts from the design of the part to be printed in itself, that must have the right seat for the object to be inserted.


The design of the right seat have to take in account :

A. the overlap of the printing layers

B. the direction of insertion of the object

C. the clearance between metal object and printed walls (g1)

D. the clearance between metal object and last open layer (g2)

A) - As usual for addictive manufacturing we have to follow common rules that take in account the overlapping of layers remembering also that, in this case, is not allowed to enable the support material that probably will fill the cavity.

B) - One of the mostly used application of embedded object is related to hexagon nuts also known as “captive nuts”.

Embedding nuts it is significant due to the fact that there are essentially four different ways to perform a proper seat and they are conditioned by the insertion of the object as shown in pictures

By the picture we can understand that opening have not be narrower than the widest section of the part to be inserted

C) – The right clearance is also essential to obtain a smooth insertion of the nut and at the same time the lower mobility possible when in place. The definition of stl files, the definition of our printer and filament material used, are factors involved in the process.

The first step is to have clear the dimension of the object to embed. For nuts are available some data sheets related to the unified type of nuts. We can follow that, or measure them by ourselves and made custom tables.

I suggest to make some test to find the right combination of factors that allow us to find the right balance. A good way is to use a test jig wich has the nominal dimension increased by fixed offset step of 0,1 mm.

D) – At least we have to make sure not to damage the hot end while printing the first closed layer so we have to leave enought clearance (g2) between the higher surface of the object and the first closed layer.

I shared my test part M6 CAPTIVE TEST on my ONSHAPE account


Once the appropriate seat is designed is now necessary to generate the gcode from the slicing software (remember to disable support material).

In this example I use Repetier Host with Slic3r.

When slicing is done, using the preview tools, we have to visualize the layer sequence and identify the last open layer of the part .

Observing images we note that the layer 50 is open while the 51 is the first layer that closes the seat.

We should then manually write a line with a pause command in the Gcode at the end of the lines of the layer 50 and just before the layer 51

To understand on which layer are we, just click on the gcode and the software show the number of the layer

So you have to scroll down the gcode lines until you get the correct line of layer changing. Change between layers is also indicated by a sligh color changement of the row number column.

When reached the line of layer changement you have to add a blank line pressing enter and write the command @pause.

This could be enough, but, when the printer go to pause, stops in the last position driven by gcode and, if you are not overseeing it, the hot nozzle could melt the part. So would be better move automatically the hot end in a safe position away from the part.

To do this we can add a script in printer setting in the "run on pause " :

G1 Y195 X5 will move the print head to the coordinates (195, 5) to clear the area. This is just an example and works ok for my printer that is a Prusai3 with a 200x200 printing area, It has to be adjusted taking into account different bed dimensions type of printer and printed parts.

You can also add the M300 command to alert you when the printer has reached the pause command

The pause command can also be repeated if you have to add other object to different levels.


Start the printer

When the @pause command is reached, the printer stops in the last position of the gcode sequence and subsequently execute the commands of the "run on pause" script. An alert pop up window appears

The hot end moves to spaced-out position and stop allowing you to insert the nut. For small objects It is suggested using tweezers.

It is important you ensure that your object is fully inserted and below the surface of the top of your print. If the nut protrudes above the surface, it may damage your print nozzle.

If you leave in pause the printer for a long time I suggest to manually extrude some filament to clear the nozzle before resuming the printing.

Once done, press the unpause button on the pop up window and the printer restart. It automatically relocates the print head to the last right location and continue printing till the end of gcode.


There are potential no limitation, you can think to embed: electronic parts, weights, magnets, fluids, mechanisms

Other advantages of the embedded object is that can be completely sealed inside, so protected from: water, dust, dirt, damages ...

Disadvantages are: that to remove the object you have to break the part, and also with different material embedded inside can occour recycle problems ...

3D Printing Contest 2016

Participated in the
3D Printing Contest 2016