III. 3D Printing#

1. Slicing software#

In order to print a part using a 3D-printer you need to use a slicing software. This is a crucial component in the 3D printing process. It serves as a translator between the 3D model and the 3D printer. Here’s how it works:

  1. Translation of 3D Models : Slicing software takes a 3D model file (usually in STL format) and translates it into a language that a 3D printer can understand.

  2. Generation of G-Code : The slicing software generates a G-code, which is a generic name for a control language that a 3D printer can understand. This G-code contains all the instructions for the 3D printer.

  3. Layering : The software slices the 3D model into thin layers. These layers are printed individually but stacked on top of each other to create the final 3D object.

  4. Printer Instructions : The G-code tells the 3D printer how to print the model, including the paths to follow when printing, the speed to print at various points, and what layer thicknesses to adopt.

Examples of free and open-source slicing software include Cura, Tinkerine Cloud, PrusaSlicer, Slic3r, and KISSlicer. They offer different features and user modes to suit different needs and preferences.

Installation and configuration#

As the available 3D-printers at the ULB FabLabs are from the Prusa MK3 Family, I therefore used the PusaSlicer software. During the installation make sure to select the correct printer model, as well as the generic type of filament you plan on using. I personally selected the “Original Prusa i3 MK3S & MK3S+” printers with the Generic PLA filament.

Generating the G-code#

The first step is to import your 3D model. As I created mine with OpenSCAD, I had a SCAD file, this file has to be converted into another extension, which the slicer can use. PrusaSlicer can open lots of different extensions such as STL, OBJ, 3MF, AMF, XML, …

In OpenSCAD, to export your file in another extension you first have to render it (by pressing the “F6” key or the “Render” button in the toolbar). You can then export it. By default, OpenSCAD offers you to export it in STL. This can be easily done by pressing the key “F7” or the “Export as STL” button as shown here below.

While PrusaSlicer can indeed import STL files, its preferred file extension is 3MF. What I mean by preferred is that when you import a 3D model and change its parameters and configuration in order to be able to later export it in G-CODE and print it, the only format PrusaSlicer will accept to save to this new file is 3MF. If you use PrusaSlicer, to save yourself a few steps later on, you can directly export the file as 3MF with OpenSCAD. You can see just below how to do it.

Once you have your STL or 3MF file or whatever, to import it in PrusaSlicer, you can either drag and drop it on the platter or import it by the “File” menu or add it via the toolbar.

Then, the two toolbars offer you different actions, such as placing your model on another face (this can be important depending on the geometry of your model, the slicer might give you a stability warning after the slicing if you have not already done it), moving it, scaling it, cutting it, painting it, copying and pasting it, …

Once you are done with that, you should check the print settings. The basic print settings are available on the right panel : there you can choose the thickness of the layers (the thinner, the slower) corresponding to different levels of quality. In the box just below make sure you selected the filament according to what you will use in your printer. You can also quickly change the infill percentage, and add different kinds of support.

Many other settings are available in the “Print Settings” tab (upper left corner), feel free to run through them. I personally always remove the skirt1, as it is of little use. Some settings may have a visual impact on what will be printed (e.g. the brim2 and the skirt), if you wish to keep track of those modifications, press “Slice now” at the bottom of the right panel. This must be done at least once after you finished configuring all the settings. Those settings can be saved, this is useful when you customise them and want to be able to easily reapply them to another part in the future.

After slicing your parts the software will give you an estimate of the needed time and mass of material, as well as a detailed preview (layer per layer) of how the printer will print it. If everything is to your satisfaction, on the same spot where before was “Slice now” you can press “Export G-code”, you are now ready to print.

2. Printing my kit#

Using the printer#

Before launching the process, make sure your platter is correctly put in place and clean (if is is not, you can clean it with alcohol). You should also be careful that the type of the installed filament corresponds to the one you chose in the slicer. If need be, to remove the filament you should go in the menus of the printer and find the option “unload filament”. You will then have to wait for the printer to melt the filament in order to unload it. Once it is done, press “load filament”, push the new one into the nozzle and wait for the printer to melt it so that it gets right into place. Once your G-code is ready, copy it on a SD card (or on another memory storage device depending on your printer) that you will insert inside your printer. Then, in the menus, select your file and print it.

Key parts parameters#

When making parts that must fit one into the other, some key parameters have to be identified. Indeed, for the two parts to fit into each other, without falling by itself or not going in at all, you must find the right gap. This gap has to be tested out. Similarly, as we want the kit to be flexible, (at least one part), the thickness of that part must also be tested, so that it is thin enough to be flexible (but not too much either) but stays robust enough not to break immediately.

In our design (see previous module for more details), the parts come together by two pins fitting in two holes. The key parameters we identified were :

  • the diameter of the holes : rad_in
  • the diameter of the pins : slightly shorter than that one of the holes pin_diameter (present in Alishba’s code)
  • the distance between the two holes (from edge to edge): hole_gap
  • the thickness of the flexible part (the stem in our case) : thickness
  • the height of holes and the pins : pin_height

The tail#

As I exported my SCAD file into 3MF to import it to PrusaSlicer and then sliced it, I obtained this :

PrusaSlicer informed me that there were stability issues, so I had two possibilities, either add support either place the model on another face. I first tried to add support everywhere (it is one of the available options in the software), you can see the sliced preview just below. The result was quite catastrophic, I unfortunately forgot to take a picture of it, but the support had not stopped the sinusoidally shaped stem to collapse on itself and moreover, removing the support without tearing out the stem from the clasp has not been proved possible …

I then tried to place the model on another one of its flat surfaces, as well as adding support everywhere to avoid that the cylindrical holes collapses on themselves. Here are the preview and the result :

As you can see, as the width of the stem is shorter than that of clasp it creates an angle when put on that face. Thus the model needed support also on that piece, nevertheless you can see the stem still collapsed a bit (you can see that it is a bit skewed on the picture). The support inside the holes (still present on the picture) was also quite complicated to remove, but it was still possible to do without breaking the piece.

I made another try, where I set the width of the stem as large as the clasp, so that there was no angle and support needed. Unfortunately the printed stem remained skewed, a little collapsed on itself. In order to get a correct print result I hence used my first and more simpler design of the stem, a simple thin rectangular parallelepiped (not exactly perpendicular to the clasp), which width was the same as the clasp.

While printing that model I set my parameters to match the dimensions of Lego pieces I measured, making the holes compatible with the said pieces (their built-in flexibility helped to fit in without guessing the needed gap).

3. Assembling the parts#

As mentioned before, my part, the tail, is supposed to be assembled with the main body that Alishba designed. As my part was much faster to print, we adapted its parameters to match those of Alishba. Indeed, my last printing was compatible with Lego but not with the piece it actually needed to be. After measuring the size of the pins we actually got on the main body after printing, and trying different sizes of gap, we finally got it to fit, with a 0.1mm gap between the diameter of the holes and the pins.

Here are the links to the final designs of my piece in SCAD and 3MF format.

Here below you can see the results, the “mouse” is purely decorative, with a flexible tail :


  1. The skirt is a 3D-printed outline of all the models. It is supposed to stabilise the flow of the filament, as well as allowing you to verify the adhesion of the first layer to the printing platter. By default it is formed by one single loop, but you can customise it. 

  2. The brim is an extension of the area of the first layer onto the printing platter, increasing the adhesion of your model to the platter.