Salta al contenuto principale
Stampa 3D non planare con Grasshopper
  1. Blogs/

Stampa 3D non planare con Grasshopper

·1015 parole·5 minuti
Stampa 3D Stampa 3D Rhino Grasshopper Design Computazionale Non Planare FDM
Indice dei contenuti

Introduzione al processo di Stampa 3D
#

Il tradizionale flusso di lavoro per la stampa 3D a estrusione di materiale (es. FDM) prevede:

  1. la modellazione CAD del modello tridimensionale;
  2. l’esportazione del modello in mesh di poligoni (es. STL);
  3. lo slicing, dunque la suddivisione del modello in una successione di strati orizzontali, successivamente stampati uno ad uno.
  4. la traduzione degli strati in istruzioni di stampa (Gcode) ad uso della stampante.

Questo flusso è adeguato nella maggior parte dei casi ma, oltre a introdurre approssimazioni geometriche che degradano la qualità del risultato finale, preclude accettabili risultati nella stampa di particolari geometrie, come nell’esempio seguente:

Rendering di un cilindro cavo con un profilo superiore ondulato

Modello con profilo superiore a corona - Rendering 3D.

Slicing di un cilindro cavo con un profilo superiore ondulato

Modello con profilo superiore a corona - Slicing.

La simulazione di slicing mostra che in tal caso si produrrebbero, in fase di stampa:

  • una evidente scalettatura delle ondulazioni superiori del modello;
  • continui salti (movimenti non di stampa, linee in blu) che prolungano i tempi di stampa e introducono artefatti.

Come ovviare a questi problemi?
Adottando un diverso metodo di modellazione 3D e di generazione delle istruzioni macchina (Gcode), così da poter stampare adeguatamente geometrie come quella mostrata.


Stampa 3D non planare e Design Computazionale
#

La stampa 3D non planare utilizza movimenti sull’asse Z (asse verticale) durante la stampa di ogni strato, non soltanto nel passaggio tra uno strato e l’altro; i tradizionali software di slicing non possono però produrre istruzioni macchina di questo tipo.

Così è necessario ricorrere al Design Computazionale, il design basato su formule matematiche, progettando i modelli tridimensionali tramite curve le quali costituiranno già esse stesse i percorsi (in X, Y e Z) dell’ugello di stampa.

La deposizione continua di ogni singolo strato, mostrata nella simulazione sottostante, permette di ottenere superfici più levigate e porta spesso a una riduzione dei tempi di stampa.

Simulazione di stampa non planare

Simulazione di stampa non planare del modello 3D.

Le immagini successive ritraggono invece il risultato reale di stampa del flusso di lavoro descritto.

Dettaglio della stampa 3D non planare del modello corona

Stampa 3D non planare del modello 3D - Dettaglio 1.

Dettaglio della stampa 3D non planare del modello corona

Stampa 3D non planare del modello 3D - Dettaglio 2.


Design in Grasshopper
#

Grasshopper è un software di design computazionale disponibile come plugin per il celebre programma di modellazione 3D Rhinoceros.
Di seguito verrà descritto un semplice progetto di Grasshopper utile come introduzione al design per la stampa 3D non planare.

Nota: questo progetto non tratta della produzione delle istruzioni Gcode (procedura oggetto di una futura guida) e del design del riempimento delle forme, attenendosi a forme cave (es. vasi.)

Risultato desiderato
#

L’obiettivo è la progettazione diretta degli strati di stampa secondo gli spessori e le pendenze desiderate.

Rendering degli strati di stampa ondulati del modello 3D

Strati non planari costitutivi del modello 3D.

Pendenze delle curve
L’usuale necessità di depositare il primo strato interamente a contatto con il piano (evitando i supporti) richiede un progressivo incremento della distanza tra le curve al crescere dello sviluppo verticale, così da giungere a stampare correttamente le curve con maggiore pendenza.

In fase di design bisognerà quindi prestare attenzione a:

  • adottare pendenze massime delle curve che siano compatibili con l’ingombro dell’estrusore, per evitare collisioni con gli strati già stampati;
  • scegliere un numero di strati adeguato a garantire un incremento il più graduale possibile della distanza interstrato, dunque una adeguata adesione tra gli strati appunto.

Descrizione del progetto
#

PASSO 1 - Definizione della curva di base
#

L’elemento Circle definisce un cerchio di base, ripetuto in verticale attraverso:

  • l’elemento Move;
  • l’indicazione, con Unit Z, dell’asse lungo il quale ripetere la curva
  • i valori sull’asse Z.

I valori di Z sono calcolati tramite gli elementi Domain e Range, i quali definiscono un intervallo di valori che va da 0 (zero) al valore del Number slider "Total height", con degli "Steps" (passi) risultanti dalla divisione del valore "Total height" per quello di "Layer height" (altezza o spessore degli strati).

Definizione e ripetizione della curva di base.

Definizione e ripetizione della curva di base.

PASSO 2 - Suddivisione e modifica delle curve
#

Le curve sovrapposte ottenute precedentemente vengono suddivise in serie di punti tramite l’elemento Divide Curve; il numero di punti è definito a piacere tramite il valore dello slider "Subdivision".

Suddivisione delle curve e applicazione dell’onda sinusoidale.

Suddivisione delle curve e applicazione dell’onda sinusoidale.

I punti così ottenuti subiscono una traslazione sull’asse Z basata su un’onda sinusoidale generata dalla formula Y = A * sin(B * X) + D, inserita nell’elemento Expression il quale accetta i seguenti parametri della funzione:

  • X. I valori che descrivono il posizionamento dei punti su ogni curva, riparametrizzati tra 0.00 e 1.00 e riconfigurati, tramite l’elemento Remap Numbers, tra 0 e 2 volte π (Pi greco.)
  • A. Ampiezza delle ondulazioni, variabile tra 0 (per il primo strato) e un massimo definito dal valore di "Max Amplitude"; ad ogni curva (strato) verrà quindi applicata una ampiezza d’onda crescente al crescere della posizione in Z della curva stessa.
  • B. La frequenza desiderata per l’onda sinusoidale.
  • D. La traslazione in Z di ogni intera sinusoide secondo le ampiezze calcolate per il parametro "B". Ciò consente di evitare che la distanza tra gli strati non divenga mai minore del valore nominale ("Layer height") definito in fase di creazione della curva di partenza.

Importante

  • impostare su Reparameterize l’input "Curve" dell’elemento Divide Curve; la riparametrizzazione è il processo di modifica dei parametri della curva in un intervallo di valori compreso tra 0.00 e 1.00.
  • impostare l’output dell’elemento Range su Graft.
Illustrare il funzionamento delle liste e dei Data Trees (alberi di dati) esula dallo scopo di questo articolo. Si suggerisce dunque di approfondire questi argomenti sulle guide ufficiali di Grasshopper.

PASSO 3 - Ricostruzione delle curve finali
#

Dai punti precedentemente ottenuti, traslati secondo l’onda sinusoidale, si costruiscono le nuove curve tramite l’elemento Interpolate.
Per questa operazione il progetto mostra due alternative le quali conducono ad ottenere curve tra loro separate oppure congiunte per ottenere una sola curva.

Costruzione delle curve finali tramite interpolazione dei punti.

Costruzione delle curve finali tramite interpolazione dei punti.

Per questa operazione il progetto mostra due alternative le quali conducono ad ottenere curve collegate tra loro oppure separate, dipendentemente dal risultato di stampa desiderato.

Curve risultanti congiunte (a sx) o separate (a dx).

Curve risultanti congiunte (a sx) o separate (a dx).

File del progetto
#

Il progetto sopra illustrato è scaricabile tramite il bottone sottostante:

grasshopper_non-planar_3D-printing.gh

Ultimo aggiornamento: 06 luglio 2025

Marco Papi
Autore
Marco Papi