Progettiamo un portachiavi su OpenSCAD

La tecnologia delle stampanti 3D è tra le neonate del nostro secolo.

Fino a qualche anno fa ci affascinava anche solo il pensiero di una tecnologia in grado di “stampare” oggetti tridimensionali come questi dispositivi sono in grado di fare. Ma come per ogni cosa, i primi passi sono i più importanti e per farli è necessario non pensare troppo in grande, altrimenti si rischia di fare il passo più lungo della gamba. Per iniziare a cimentarsi con questa tecnologia si dovrebbe partire da qualcosa di non troppo complesso. Progettare un oggetto 3D di forma geometrica, per esempio, qualcosa di regolare, quindi, o perché no, un portachiavi. Non fatevi ingannare dalla semplicità di questi oggetti, per quanto semplici, si tratta dei primi oggetti che stamperete, non bisogna guardare tanto il risultato, in questa fase conta pressoché solo il percorso. In questo articolo, utilizzando i concetti base di OpenSCAD appresi nei precedenti tutorial, realizzeremo oggetti non banali. Ma non ci fermeremo al codice sorgente, stamperemo il nostro oggetto analizzando diversi filamenti e impostazioni di stampa. Illustreremo, inoltre, tutte le possibilità che ci offre questo software, e come vedremo il limite sarà davvero la nostra immaginazione.

Cos’è OpenSCAD?

La home page ufficiale di OpenScad

Figura 1: La home page ufficiale di OpenSCAD

 

OpenSCAD è un software open source eseguibile su tutti i sistemi operativi, sul sito ufficiale è possibile scaricare il programma e trovare tutta la documentazione possibile (Figura 1). Perché OpenSCAD (Figura 1)? Il software, a differenza di altri programmi di modellazione 3D, non necessita dello studio pregresso di una lista numerosa di comandi, avremo a che fare solo con pochi e semplici. Inoltre, la modellazione non avviene per modifica diretta dell’oggetto, ma per compilazione di un codice, questo codice genererà un oggetto, per cui per correggere un errore sarà sufficiente cambiare alcune righe di codice. Per iniziare è necessario ripassare alcuni concetti geometrici ricorrenti in OpenSCAD, utili al fine di comprendere appieno i codici che andremo a scrivere. OpenSCAD utilizza un sistema di riferimento destroso come in Figura 2, nel sistema sinistroso, invece, abbiamo asse X e asse Y invertiti. I punti nello spazio vengono individuati tramite un vettore contenente le coordinate [x, y, z], all'inizio potrà risultare strano utilizzare vettori per ogni comando, ma badate bene, questo piccolo accorgimento ci semplificherà di non poco il lavoro. Due punti nello spazio generano uno spigolo se collegati da una linea retta, tre punti collegati da tre spigoli danno un triangolo, il più semplice dei poligoni. Gli spigoli si danno in ordine antiorario, in questo modo sarà possibile individuare la faccia superiore del poligono. L'unità di misura predefinita è il millimetro, ma non è un problema ridimensionare l’oggetto a fine lavoro (Figura 2).

Sistema di riferimento destrorso

Figura 2: Sistema di riferimento destroso

 

Gli angoli si misurano in gradi sessadecimali per comodità di scrittura del codice. I piani vengono considerati passanti per l’origine degli assi, e rappresentati dal vettore ortogonale ad essi passante per l’origine come mostrato in Figura 3. Ora che abbiamo fatto le dovute presentazioni direi di passare alla parte divertente.

Figura 3: Piano xy, verrà identificato dal vettore [0,0,1] corrispondente all'asse z, perpendicolare al piano

Figura 3: Piano xy, verrà identificato dal vettore [0,0,1] corrispondente all'asse z, perpendicolare al piano

Confronto con altri software

OpenSCAD offre molte possibilità adattandosi ad un vasto pubblico, ma cosa manca ad altri software a pagamento? Autocad, ad esempio, offre la possibilità di renderizzare gli oggetti 3D rendendoli realistici, associando ad ogni oggetto un pattern specifico, questa funzione si chiama photorealistic rendering. Tale programma, quindi, si adatta al mondo dell'architettura permettendo al designer di partire da una pianta 2D disegnata direttamente sulla schermata con i diversi strumenti a disposizione. I produttori, ovvero Autodesk, comunque offrono diversi programmi di modellazione 3D, le loro funzionalità necessitano di una conoscenza pregressa, rendendo altrimenti molto lenta la modellazione. Solidworks, invece, ci permette anche di realizzare simulazioni avanzate, permettendo di combinare i vari oggetti, assemblarli e studiarne il comportamento nella realtà, misurandone gli sforzi a cui è sottoposto e l'attrito con l'aria per esempio, il che è molto utile in ambito lavorativo o per progetti più complessi in cui il comportamento nella realtà potrebbe compromettere il nostro lavoro, basti pensare al progetto di un quadricottero, la cui forma è importante per il volo. Sketchup, prodotto da Google è un altro software molto semplice da utilizzare, infatti, la modellazione avviene modificando l'oggetto nella schermata; è possibile, ad esempio, fare click e trascinare le facce dei poligoni o poliedri per allungarle, il software è disponibile sia in una versione gratuita sia in una versione a pagamento con più funzionalità, compito del progettista sarà capire quale software si adatta meglio al lavoro da realizzare.

Realizzare un portachiavi

L’idea è quella di realizzare un portachiavi su cui potremo scrivere qualunque cosa, con il seguente codice otterremo la bozza di ciò che sarà il risultato finale mostrato in Figura 4.

translate([-5,-3,0]) cylinder(r=8,h=3); polygon([[0,0],[0,-7],[5,-13],[5,-7],[10,-10],[15,-7],[20,-10],[25,-7],[30,-7],[34,-9],[36,-7],[46,-5],[36,0]]);
Figura 17: Base del portachiavi a partire da un cilindro e un poligono

Figura 4: Base del portachiavi a partire da un cilindro e un poligono

 

Il progetto è quello di “stampare” un portachiavi a forma di chiave, il poligono di partenza è stato creato in maniera del tutto casuale, quindi in caso voleste creare la vostra forma siete liberi di farlo.

Dato che non sappiamo ancora la dimensione del testo, l’ideale sarebbe creare una stringa contenente il testo ed una variabile contenente la lunghezza di questo.

//definizione variabili testo="Hello World"; l=len(testo);

Ora possiamo variare la lunghezza della nostra chiave a seconda del testo da scriverci e, inoltre, inizieremo a dare uno spessore al nostro poligono. Aggiungendo davanti al nostro poligono, otteniamo il risultato mostrato in Figura 5. Il comando len() calcola la lunghezza di un vettore; è interessante notare che possiamo usare le variabili sia come stringhe, come vettori numerici o come interi.

scale([l/7,1,1])linear_extrude(3)
Figura 18: Estrudendo il poligono otteniamo una chiave tridimensionale

 

Figura 5: Estrudendo il poligono otteniamo una chiave tridimensionale

Abbiamo appena creato una chiave tridimensionale la cui lunghezza varia con il testo da inserire. Ora aggiungiamo un foro, tramite il comando "#" siamo in grado di avere un'anteprima del nostro cilindro come in Figura 6.

//cilindro per il foro translate([-8,-2,0])cylinder(r=2,h=4,$fn=50);
Figura 19: Traslando un cilindro riusciamo a creare il foro

 

Figura 6: Traslando un cilindro riusciamo a creare il foro

L’opzione $fn serve per definire il numero di facce che avrà la curva generata, per solidi curvi molto piccoli come in questo caso è bene impostare il valore intorno a 50, altrimenti potrebbe non risultare molto liscio.

A questo punto non ci resta che unire e sottrarre il tutto.

Figura 19: Risultato della sottrazione

 

Figura 7: Risultato della sottrazione

Il risultato in Figura 7, però, può ancora essere migliorato, inoltre, dobbiamo ancora aggiungere il testo. A questo punto procederemo aggiungendo i bordi sulla parte superiore della chiave, il modo più semplice è sottrarre alla faccia superiore una chiave leggermente più piccola. Con questo codice, per esempio, creiamo una seconda chiave:

//blocco numero 2 difference(){ translate([0,0,2])union(){ translate([-5,-3,0]) cylinder(r=7,h=3); scale([l/7,1,1])linear_extrude(3)polygon([[0,-1],[0,-6],[4.5,-11],[4.5,-6],[10,-9],[15,-6],[20,-9],[25,-6],[30,-6],[34,-8],[36,-6],[43,-5],[36,-1]]); }; translate([-8,-2,1])cylinder(r=3,h=4,$fn=50); };

A questo punto, sottraendo al primo blocco il secondo, otteniamo la chiave mostrata in Figura 8. La chiave è identica a quella di prima ma più piccola per quanto riguarda le dimensioni esterne e con un foro più grande.

Figura 21: Sottraendo al primo oggetto una seconda chiave più piccola e traslata in alto otteniamo i bordi in superficie

 

Figura 8: Sottraendo al primo oggetto una seconda chiave più piccola e traslata in alto, otteniamo i bordi in superficie

 

Il risultato è già più elegante rispetto all'inizio, ora però vogliamo aggiungere la scritta.

MAGGIORI APPROFONDIMENTI SULL'ARGOMENTO