Introduzione alla stampa 3D – Lezione 5

Progettiamo i nostri oggetti con OpenSCAD

Se siete insegnanti e state pensando ad un corso di coding a scuola consiglio di prendere in considerazione anche l’utilizzo di OpenSCAD un CAD per la creazione di oggetti 3D opensource multipiattaforma che ha differenza di altri modellatori 3D ricorda più un IDE di programmazione in cui ogni primitiva (cubi, sfere, coni, ecc…) può essere usata se codificata con specifici codici di programmazione… non spaventatevi questa caratteristica è un pregio, soprattutto dal punto di vista didattico in quanto sarete in grado di dare ancor di più senso “fisico” a qualsiasi costrutto informatico: cicli, condizioni, chiamate di funzioni, ecc…

Anche per queste esercitazioni andrò passo passo, sarò schematico e vi indicherò le principali funzioni, intervallerò questi passi con qualche esercitazione, consiglio quindi per ogni passo di copiare ed incollare gli esempi all’interno di OpenSCAD.

Si parte!

  • Modellatore 3D gratuito
  • disponibile per Linux, MacOS e Windows
  • La modellazione è basata sulla “codifica” come un linguaggio di programmazione, è molto semplice modificare le misure di un oggetto

Sito di riferimento: www.openscad.org

01

Seguite il link per prelevare OpenSCAD.

Manuali e tutorial disponibili on-line

AVVERTENZA: Non fatevi spaventare!
Non dovete memorizzare la sintassi!

02

Anatomia dell’interfaccia grafica

  1. Text Editor – Dove inseriamo le istruzioni (“code”)
  2. Area di visualizzazione – La tua opera! Dove viene renderizzato il tuo modello.
  3. Console – Informazioni tecniche su quello che sta succedendo (avanzamento del rendering, eventuali messaggi di errore)

03

Comandi dell’editor

04

  1. nuovo file
  2. apertura file
  3. salvare
  4. undo
  5. redo
  6. unindent
  7. ident
  8. preview
  9. render
  10. esportazione in STL

Per visualizzare il proprio lavoro ricordate le tre funzioni fondamentali F4, F5, F6:

  • F4: ricarica e visualizzazione del lavoro nell’area di visualizzazione (2)
  • F5: visualizzazione del lavoro nell’area di visualizzazione (2)
  • F6: render del proprio lavoro. Ricordate che per esportare in STL è necessario prima effettuare il render del proprio lavoro

05

Nell’area di visualizzazione è possibile effettuare il preview ed il render del proprio lavoro, zoom in e out, cambiare punto di vista, visualizzare la scala graduata e molto altro, provate ogni funzione per prendere dimestichezza con l’interfaccia.

06

Mouse e area di visualizzazione

  • Click sinistro mouse e trascina permette di ruotare la vista
  • Click destro mouse e trascina permette di effettuare un pan
  • Rotazione rotella mouse consente di fare uno zoom in o zoom out

Rotazione

rotazione

Pan

pan

Zoom in e zoom out

zoom

Sintassi dei comandi

  • ; la fine di una istruzione (ad es. make a cube;)
  • // Un commento o una label – ignorato dall’area di visualizzazione
  • { } Raggruppare i comandi
  • [x,y,z] “Vectors” (Coordinate, dimensioni 3D)

07

Le primitive del linguaggio

2D Shapes

E’ possibile realizzare forme 2D provate con:

  • circle(4);
  • square(3);

Nell’area di editing scrivete circle(4); otterrete una circonferenza di raggio 4

09

Nell’area di editing scrivete square(3); otterrete quadrato di lato 3

10

08

Per centrare una figura rispetto all’origine è sufficiente aggiungere il parametro center = true

square(3, center = true);

realizzerà un quadrato di lato 3 centrato nell’origine:

11

Attenzione che la funzione square non definisce solamente un quadrato possiamo definire anche un rettangolo specificando base ed altezza:

square([4,2], center = true);

realizza un rettangolo di base 4 e altezza 2 centrato nell’origine:

12

Disegnare poligoni

Per disegnare un generico poligono si utilizza la funzione polygon a cui sono associati come parametri l’elenco dei punti che lo descrivono

polygon([[0,0],[3,0],[5,4],[0,2]]);

13

Per rendere più agevole il disegno di un poligono vi suggerisco di utilizzare l’applicazione on-line che trovate a questo indirizzo:

http://daid.eu/~daid/3d/

con essa potrete disegnare per punti il poligono e automaticamente verrà generate la funzione polygon con l’elenco dei vertici:

14

15

16

Copiate ed incollate all’interno di OpenSCAD:

17

Commenti

Come per qualsiasi linguaggio di programmazione:

  • i commenti rendono leggibile il codice da qualsiasi essere umano
  • i commenti servono solo agli esseri umani
  • i commenti in fase di compilazione (nel nostro caso renderizzazione) non vengono considerati dal sistema

I commenti possono essere su più linee o su una linea sola così come accade ad esempio quando scriviamo i nostri sketch per Arduino:

18

3D Shapes

sphere
creare una sfera

3 modi per creare una sfera:

  • sphere (6);
  • sphere(r=6);
  • sphere(d=12);

quindi è possibile utilizzare una qualsiasi delle precedenti notazioni per creare una sfera di raggio 6:

19

cube
creare un cubo

cube(4); genera un cubo avente lati di lunghezza 4

20

cube([6,4,2]); genera un parallelepipedo a base rettangolare

21

nel caso si desidera centrare rispetto all’origine: cube([6,4,2], center=true);

22

cylinder
creare un cilindro

cylinder(h=5, r=2);

crea un cilindro avente alto 5 e circonferenze di base con raggio 2

23

per creare un cilindro con circonferenze di base aventi raggio differente:

cylinder(h=5, r1=3, r2=1);

35

Trasformazioni

traslate([x,y,z])

Per traslare un oggetto rispetto all’origine degli assi lungo un determinato asse si utilizza la funzione traslate([x,y,z])

esempio:

sphere(4);

translate([0,6,0])  {
    cube(4, center=true);
}

Il codice realizzerà una sfera di raggio 4 ed un cubo di lato 4 traslato di 6 sull’asse y e centrato su di esso:

25

rotate([x,y,z])

Ruotare un solido di una certa quantità di gradi rispetto agli assi.

rotate([90,0,0]) {
    cylinder(r=2, h=5, center=true);
}

Il codice realizzerà un cilindro con circonferenza di base di raggio 2, altezza 5 e ruotato di 90 gradi rispetto all’asse x:

27

scale([x,y,z])
(1 = 100%, 2=200%, etc…)

Scala un oggetto di dimensioni fissate secondo la percentuale per ogni asse indicata in parentesi quadre.

scale([1,2,1}) {
    cube(2);
}

Il codice realizza, partendo da un cubo di lato 2, un aumento di scala al 200% lungo l’asse y:

28

color

permette di assegnare un colore agli oggetti, ciò permetterà di distinguere le varie parti del progetto.

Esistono due modi per assegnare un colore ad un oggetto:

color([red, green, blue, alpha]);

dove red, green, blue sono i codici RGB da 0 a 255 e alpha è la trasparenza che assume un valore compreso tra 0 e 1

color(“nome del colore”);

nome del colore in lingua inglese: Red, Aqua, Yellow, ecc…

per maggiori informazioni si consulti il manuale di riferimento.

color("orange")
    sphere(4);

rotate([0,90,0]) {
    color("blue")
    cylinder(r=2, h=12,center= true);
}

Il codice permette di disegnare una sfera di raggio 4 di colore arancione ed un cilindro di colore blu centrato rispetto all’origine degli assi ruotato di 90° rispetto all’asse y:

30

mirror([x,y,z])
Rispecchiare un oggetto rispetto all’origine degli assi. Impostando x, y e z 1 oppure 0 si stabilisce il piano in cui si desidera effettuare il mirroring.

Per maggiori informazioni sul mirroring si consulti il manuale di riferimento.

color("orange")
    cube([2,4,1]);

mirror([1,0,0]) {
    color("blue")
    cube([2,4,1]);
}

Il codice permette di disegnare un parallelepipedo di lati 2,4,1 di colore rosso ed un secondo parallelepipedo di colore blu avente stesse dimensioni di cui viene fatto il mirroring rispetto al piano yz, quindi ribaltamento rispetto all’asse x:

29

Nota sull’uso delle parentesi graffe

  • usare le parentesi graffe {} se il comando si applica a più di un oggetto/linea
  • identity il codice per renderlo più leggibile

Esempio di codice poco comprensibile:

color("white")
sphere(r=100);
color("white")
translate([0,0,150])
sphere(r=70);
color("white")
translate([0,0,265])
sphere(r=50);

Il codice realizza la traslazione di tre sfere bianche di raggio decrescente lungo lasse z:

31

Esempio di codice comprensibile:

color("white") {
    sphere(r=100);
    translate([0,0,150])
        sphere(r=70);
    translate([0,0,265])
        sphere(r=50);
}

32

Esercizio 1

Sfera centrata nell’origine degli assi e 6 cubi aventi stessa dimensione e distanza dall’origine degli assi:

37

Esercizio 2

Tre cilindri centrati nell’origine degli assi e su ogni cilindro posizionare una sfera avente stesso diametro della base dei cilindro. Inserire una sfera centrale più grande.

38

Esercizio 3

Con le istruzioni spiegate in questa lezione realizzare il modellino dell’automobile rappresentato nelle immagini che seguono.

Suggerimento
Nell’immagine il corpo è centrato rispetto all’origine degli assi e la struttura e composta dai seguenti solidi traslati:

– 3 parallelepipedi
– 7 cilindri

33

34

Buona sperimentazione a tutti 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.