Manual:Preparing models for 3D printing/it

Uno dei principali utilizzi di FreeCAD è quello di produrre oggetti del mondo reale. Questi possono essere progettati in FreeCAD, e poi essere resi reali in diversi modi, come ad esempio comunicati ad altre persone che poi li costruiscono, o, sempre più frequentemente, inviati direttamente ad una stampante 3D o ad una macchina CNC. In questo capitolo viene spiegato come ottenere dei modelli pronti per essere inviati a queste macchine.

Se siete stati oculati durante la modellazione, la maggior parte degli inconvenienti che si possono verificare durante la stampa in 3D del modello sono già stati evitati. Questo richiede fondamentalmente:


 * Fare in modo che gli oggetti 3D sono solidi. Gli oggetti del mondo reale sono solidi, anche il modello 3D deve essere solido. Abbiamo visto nei capitoli precedenti che FreeCAD aiuta molto in questo proposito, e che l'ambiente PartDesign vi avvisa se fate un'operazione che impedisce al vostro modello di rimanere solido. L'ambiente Part contiene anche lo strumento [[Image:Part_CheckGeometry.png|16px]] Controlla geometria che è comodo per controllare ulteriormente se ci sono difetti.
 * Essere sicuri delle dimensioni degli oggetti. Un millimetro sarà un millimetro nella realtà. Ogni dimensione è importante.
 * Controllare il degrado. Nessuna stampante 3D o nessun sistema di fresatura CNC può ricevere direttamente i file di FreeCAD. La maggior parte di essi capiranno solo un linguaggio macchina chiamato G-Code. G-code ha decine di dialetti diversi, ogni macchina o venditore di solito utilizza il proprio. La conversione dei modelli in G-Code può essere facile e automatica, ma si può anche farla manualmente, con il controllo totale sull'output. In ogni caso, durante il processo avverrà inevitabilmente una perdita di qualità del modello. Quando si stampa in 3D, è sempre necessario assicurarsi che questa perdita di qualità stia sotto i requisiti minimi.

Da qui in avanti, si suppone che i primi due criteri siano soddisfatti, e che ormai si è in grado di produrre oggetti solidi di dimensioni corrette. Vediamo ora come affrontare il terzo punto.

Exporting to slicers
Questa è la tecnica più utilizzata per la stampa 3D. L'oggetto 3D viene esportato in un altro programma ( lo slicer, l'affettatore) che genera il G-codice dall'oggetto, affettando in strati sottili (da qui il nome), che riproducono i movimenti che la stampante 3D farà. Poiché molti di tali stampanti sono di tipo proprietario, ci sono spesso piccole differenze da una all'altra. Questi programmi di solito offrono la possibilità di configurazioni avanzate che permettono di adattare l'uscita esattamente per le particolarità della vostra stampante 3D.

Anche se la stampa 3D è un soggetto troppo vasto per questo manuale, vedremo come esportare e utilizzare questi slicer per verificare che l'uscita sia corretta.

Conversione degli oggetti in mesh
Alla data attuale, nessuno degli slicer è in grado di ricevere direttamente la geometria solida come viene prodotta in FreeCAD. Quindi è necessario convertire prima qualsiasi oggetto che si desideri stampare in 3D in un mesh, che apribile dallo slicer. Fortunatamente, anche se convertire un mesh in un solido è un'operazione complicata, al contrario, convertire un solido in un mesh, è molto semplice. Tutto quello a cui dobbiamo stare attenti è che ora si verifica il degrado di cui abbiamo parlato in precedenza. Dobbiamo controllare che il degrado rimanga all'interno di limiti accettabili.

Tutta la manipolazione delle mesh, in FreeCAD, è fatta da un'altro specifico ambiente di lavoro, l'ambiente Mesh. Questo ambiente contiene, oltre a quelli più importanti, gli strumenti che convertono tra oggetti Parte e oggetti mesh, diverse utility per analizzare e riparare le mesh. Anche se si lavorare con le mesh non è il focus di FreeCAD, quando si lavora con la modellazione 3D, è spesso necessario aver a che fare con gli oggetti mesh, dato che il loro uso è molto diffuso tra le altre applicazioni. Questo ambiente di lavoro consente di gestirle completamente in FreeCAD.


 * Andiamo a convertire uno degli oggetti modellati nei capitoli precedenti, come ad esempio il pezzo di Lego (che può essere scaricato dal link posto dalla fine del capitolo precedente).
 * Aprire il file FreeCAD che contiene il pezzo lego.
 * Passare all'ambiente Mesh
 * Selezionare il mattoncino Lego
 * Selezionare il menu Meshes -> Crea Mesh da Forma
 * Si apre un pannello delle attività con diverse opzioni. Alcuni algoritmi di meshing aggiuntivi (Mefisto o NetGen) potrebbero non essere disponibili, secondo come è stata compilata la versione di FreeCAD. L'algoritmo standard di meshing è sempre presente. Esso offre meno possibilità rispetto agli altri due, ma è del tutto sufficiente per oggetti di piccole dimensioni che rientrano nel massimo formato di stampa di una stampante 3D.




 * Selezionare il mesher Standard, e lasciare il valore della deviazione per il valore di default di 0.10. Premere Ok.
 * Viene creato un oggetto mesh, esattamente sopra al nostro oggetto solido. Nascondere il solido, oppure spostare uno degli oggetti, in modo da poterli confrontare.
 * Cambiare la proprietà View -> Display Modedel nuovo oggetto mesh in Flat Lines, per vedere che aspetto ha la triangolazione.
 * Se non si è soddisfatti, e si pensa che il risultato è troppo grossolano, è possibile ripetere l'operazione, abbassando il valore dalla deviazione. Nell'esempio che segue, nella mesh di sinistra si è utilizzato il valore di default di 0.10, mentre in quella di destra si è utilizzato il valore 0.01:



Nella maggior parte dei casi, però, i valori di default danno un risultato soddisfacente.


 * We can now export our mesh to a mesh format, such as STL, which is currently the most widely used format in 3D printing, by using menu File -> Export and choosing the STL file format.

If you don't own a 3D printer, it is usually very easy to find commercial services that will print and send you the printed objects by mail. Among the famous ones are Shapeways and Sculpteo, but you will also usually find many others in your own city. In all major cities, you will also nowadays find Fab labs, which are workshops equipped with a range of 3D manufacturing machines, almost always including at least one 3D printer. Fab labs are usually community spaces, that will let you use their machines, for a fee or for free depending on the Fab lab, but also teach you how to use them, and promote other activities around 3D manufacturing.

Using Slic3r
Slic3r is an application that converts STL objects into G-code that can be sent directly to 3D printers. Like FreeCAD, it is free, open-source and runs on Windows, Mac OS and Linux. Correctly configurating things for 3D printing is a complicated process, where you must have a good knowledge of your 3D printer, so it is not very useful to generate G-code before actually going to print (your G-code file might not work well on another printer), but it is useful for us anyway, to check that our STL file will be printable without problems.

This is our exported STL file opened in Slic3r. By using the preview tab, and moving the right slider, we can visualize the path that the 3D printer head will follow to construct our object.



Using the Cura addon
Cura is another free and open-source slicer application for Windows, Mac and Linux, maintained by the 3D printer maker Ultimaker. Some FreeCAD users have created a Cura Workbench that uses cura internally. The Cura Workbench is available from the FreeCAD addons repository. To use the Cura Workbench, you also need to install Cura itself, which is not included in the workbench.

Once you have installed both Cura and the Cura Workbench, you will be able to use it to produce the G-code file directly from Part objects, without the need to convert them to meshes, and without the need to open an external application. Producing another G-code file from our Lego brick, using the Cura Workbench this time, is done as follows:


 * Load the file containing our Lego brick (it can be downloaded at the end of the previous chapter)
 * Switch to the Cura Workbench
 * Setup the printer space by choosing menu 3D printing -> Create a 3D printer definition. Since we aren't going to print for real, we can leave the settings as they are. The geometry of the printing bed and available space will be shown in the 3D view.
 * Move the Lego brick to a suitable location, such as the center of the printing bed. Remember that PartDesign objects cannot be moved directly, so you need either to move its very first sketch (the first rectangle), or to move (and print) a copy, which can be made with the Part -> Create Simple Copy tool. The copy can be moved, for example with [[Image:Draft_Move.png|16px]] Draft -> Move.
 * Select the object to be printed, and select menu 3D printing -> Slice with Cura Engine.
 * In the task panel that will open, make sure the path to the Cura executable is correctly set. Since we are not going to really print, we can leave all other options as they are. Press Ok. Two files will be generated in the same directory as your FreeCAD file, an STL file and a G-code file.




 * The generated G-code can also be reimported into FreeCAD (using the slic3r preprocessor) for checking.

Generating G-code
FreeCAD also offers more advanced ways to generate G-code directly. This is often much more complicated than using automatic tools as we saw above, but has the advantage to let you fully control the output. This is usually not needed when using 3D printers, but becomes very important when dealing with CNC milling, as the machines are much more complex.

G-code path generation in FreeCAD is done with the Path Workbench. It features tools that generate full machine paths and others that generate only parts of a G-code project, that can be assembled to form a whole milling operation.

Generating CNC milling paths is another subject that is much too vast to fit in this manual, so we are going to show how to build a simple Path project, without caring much about most of the details of real CNC machining.


 * Load the file containing our lego piece, and switch to the Path Workbench.
 * Since the final piece doesn't contain anymore a rectangular top face, hide the final lego piece, and show the first cubic pad that we did, which has a rectangular top face.
 * Select the top face and press the [[Image:Path_FaceProfile.png|16px]] Face Profile button.
 * Set its Offset property to 1mm.




 * Then, let's duplicate this first loop a couple of times, so the tool will carve out the whole block. Select the FaceProfile path, and press the [[Image:Path_Array.png|16px]] Array button.
 * Set the Copies property of the array to 8, and its Offset to -2mm in the Z direction, and move the placement of the array by 2mm in the Z direction, so the cutting will start a bit above the pad, and include the height of the dots too.




 * Now we have defined a path that, when followed by the milling machine, will carve a rectangular volume out of a block of material. We now need to carve out the space between the dots, in order to reveal them. Hide the Pad, and show the final piece again, so we can select the face that lies between the dots.
 * Select the top face, and press the [[Image:Path_FacePocket.png|16px]] Face Pocket button. Set the Offset property to 1mm, and the retraction height to 20mm. That is the height to where the cutter will travel when switching from one loop to another. Otherwise, the cutter might cut right through one of our dots:




 * Once again, make an array. Select the FacePocket object, and press the [[Image:Path_Array.png|16px]] Array button. Set the Copies number to 1 and the offset to -2mm in the Z direction. Move the placement of the array by 2mm in the Z direction. Our two operations are now done:




 * Now all that is left to do is to join these two operations into one. This can be done with a Path Compound or a Path Project. Since we will need nothing more and will be ready to export already, we will use the project. Press the [[Image:Path_Project.png|16px]] Project button.
 * Set the Use Placements property of the project is to True, because we changed the placement of the arrays, and we want that to be taken into account in the project.
 * In the tree view, drag and drop the two arrays into the project. You can reorder the arrays inside the project if needed, by double-clicking it.
 * The project can now be exported to G-code, by selecting it, choosing menu File -> Export, selecting the G-code format, and in the pop-up dialog that will open, selecting a post-procesing script according to your machine.

There are many applications available to simulate the real cutting, one of them that is also multi-platform and open-source, like FreeCAD, is Camotics.

Downloads


 * The STL file generated in this exercise: https://github.com/yorikvanhavre/FreeCAD-manual/blob/master/files/lego.stl
 * The file generated during this exercise: https://github.com/yorikvanhavre/FreeCAD-manual/blob/master/files/path.FCStd
 * The G-code file generated in this exercise: https://github.com/yorikvanhavre/FreeCAD-manual/blob/master/files/lego.gcode

Read more


 * The Mesh Workbench
 * The STL file format
 * Slic3r
 * Cura
 * The Cura Workbench
 * The Path Workbench
 * Camotics