Primi passi con il linguaggio OpenSCAD

OpenSCAD-logoIl linguaggio OpenSCAD

Questo linguaggio è basato solo su alcuni concetti base. Questi concetti sono abbastanza elementare, ma grazie alla loro combinazione è possibile generare qualsiasi struttura 3D.

Questo è articolo è direttamente connesso all’articolo OpenSCAD: come creare oggetti solidi 3D, dove viene fatta una breve presentazione del software di OpenSCAD e con quale propositi possiamo utilizzarlo.

In questo articolo vedremo i concetti chiave che stanno dietro alla creazione di un oggetto 3D. Questi concetti sono direttamente traducibili in un linguaggio di programmazione e con una sequenza veloce di piccoli esempi è possibile fare una panoramica su come sia possibile implementare i modelli in 3D.

Forme Base

  • Cubo (in realtà un parallelepipedo, ma non so perchè tutti si riferiscono ad esso come cubo)
  • Sfera
  • Cilindro
  • Poliedro (non trattato qui)

IL CUBO

Definire un cubo è assai semplice:

cube([width,heigth,depth]);

Crea un cubo nel quadrante positivo con un angolo a (0,0,0).

OpenSCAD_cube

Fig.1: come creare un parallelepipedo con OpenSCAD

Se invece vogliamo disegnare un cubo con il centro nel punto d’origine del sistema di coordinate, è necessario aggiungere esplicitamente il parametro center e impostarlo su true (per default è false).

cube([width,heigth,depth], center = true);

LA SFERA

La creazione di una sfera è molto semplice:

sphere(r);

Disegna una sfera di raggio r centrata nel punto di origine del sistema di coordinate.

OpenSCAD_sphere

FIg.2: come creare una sfera con OpenSCAD

La sfera mostrata appare, a seconda delle sue dimensioni, con delle sfaccettature più o meno marcate. Se vogliamo incrementare la risoluzione allo scopo di ottenere una migliore superficie “curva”, è necessario aggiungere il parametro $fn.

OpenSCAD_sphere2

FIg.3: regolando la risoluzione si migliora l’aspetto curvilineo dei modelli

IL CILINDRO

La creazione di coni e cilindri viene fatta usando la stessa funzione.

Definendo solamente un raggio otteniamo un cono:

cylinder(h,r,center=true,$fn = 100);   

Definendo due raggi otteniamo un tronco di cono o un cilindro (se r1 = r2):

cylinder(h,r1,r2,center=true,$fn=100);

OpenSCAD_cylinder3

Fig.4: come creare un cono con OpenSCAD

OpenSCAD_cylinder2

Fig.5: come creare un tronco di cono con OpenSCAD

OpenSCAD_cylinder

Fig.6: come creare un cilindro con OpenSCAD

Trasformazioni

Una volta definita la figura 3D da disegnare, è necessiaro sottoporla ad una trasformazione. Se hai familiartià con la matematica di base (algebra matriciale) che sta dietro al modeling 3D, dovresti sapere che qualsiasi trasformazione a cui un oggetto è soggetta, può essere suddivisa in una serie di trasformazioni elementari. 

  • traslazione
  • rotazione
  • scalatura (meglio scaling)
  • specularità

TRASLAZIONE

Per translazione si intende il muovere un oggetto di una certa distanza in una specifica direzione.

translate([x,y,z])

        “an object”;

OpenSCAD_trasformation

Fig.7: come traslarre un oggetto con OpenSCAD

ROTAZIONE

Questa trasformazione ruota un oggetto rispetto all’origine del sistema di coordinate o attorno ad un asse arbitrario.

rotate([ax,ay,az])

    “an object”;

dove ax, ay e az sono gli angoli di rotazione rispetto agli assi x, y e z rispettivamente. 

OpenSCAD_trasformation2

Fig.8: come ruotare un oggetto con OpenSCADenSCAD

SCALATURA

Con le trasformazioni in scala noi possiamo restringere o allungare un modello 3D lungo un asse. Spesso, questa trasformazione viene utilizzata per ottenere altre figure che non sarebbero altrimenti ottenibili con l’uso delle figure base. L’uso di una scalatura non uniforme, per esempio solo su uno specifico asse, deforma una figura base e nel fare ciò, abbiamo ottenuto una nuova forma più complessa. Un buon esempio può essere evidente quando applichiamo una scalatura non uniforme ad una sfera.

scale([x,y,z])

     “an object”;

OpenSCAD_trasformation3

Fig.9: come una scalatura non uniforme genera un nuovo oggetto

SPECULARITA’

Questa trasformazione crea l’immagine speculare di un oggetto rispetto ad un piano di simmetria passante per l’origine.

mirror([nx,ny,nz])

  “an object”;

L’argomento passato alla funzione mirror() è il vettore normale al piano intersecante l’origine attraverso cui si forma l’immagine speculare dell’oggetto.

OpenSCAD_trasformation4

Fig.10: creazione di un oggetto speculare rispetto ad un piano

Le operazioni CSG

Una volta che abbiamo definito un insieme di oggetti 3D e avendo applicato loro una sequenza di trasformazioni, la terza operazione da fare è combinare insieme gli oggetti. La combinazione di oggetti diversi può essere fatta attraverso le operazioni CSG:

  • unione
  • differenza
  • intersezione

UNIONE

La funzione union() genera un nuovo oggetto 3D definito dal volume occupato da tutti gli oggetti soggetti all’unione.

union(){

“object1”;

“object2”;

}

OpenSCAD_union

Fig.11: un nuovo oggetto creato usando l’operazione di unione

DIFFERENZA

La funzione difference() genera un nuovo oggetto 3D definito dal volume occupato dal primo oggetto meno quello occupato dal secondo.

difference(){

  “object1”;

  “object2”;

}

OpenSCAD_difference

Fig.12: un nuovo oggetto creato usando l’operazione differenza

INTERSEZIONE

La funzione intersection() genera un nuovo oggetto 3D definito dal volume occupato da entrambe gli oggetti.

intersection(){

  “object1”;

  “object2”;

}

OpenSCAD_intersection

Fig.13: un nuovo oggetto creato usando l’operazione intersezione

I CARATTERI MODIFICATORI

C’è un insieme di caratteri (‘%’ e ‘#’) che vengono utilizzati per modificare l’aspetto degli oggetti. Ciò è particolamente utile quando vogliamo evidenziare in qualche modo il volume escluso dalle precedenti operazioni CSG.

Il carattere ‘#’ il debug modifier e disegna l’oggetto corrispondete in rosa trasparente.

OpenSCAD_modifiers

Fig.14: il debugger modifier evidenzia un oggetto in rosa trasparente

Il carattere ‘%’ è il background modifier e disegna l’oggetto corrispondente in un grigio trasparente.

OpenSCAD_modifiers2

Fig.15: il background modifier evidenzia un oggetto con un grigio trasparente

 

In successivi articoli verranno proposti alcuni tutorial per realizzare strutture 3D più complesse. Verranno poi trattati nello specifico alcuni argomenti base qui non ancora trattati perchè un po’ più complessi: l’hull, la somma di Minkowski e l’estrusione da figure 2D.

PARTECIPA ANCHE TU

Se pensi di essere un esperto e desidereresti parlare tu stesso di questi o altri argomenti, sei il benvenuto!. Oppure hai appena messo in pratica quello qui descritto e hai sviluppato forme complesse che vorresti subito mettere in mostra… Fai il login e inviami subito un articolo/post tutorial. Presto lo vedrai pubblicato!

Arrivederci al prossimo articolo.

Un commento:

  1. Pingback:Modellazione 3D per Stampa 3D: FreeCAD, Blender, OpenSCAD | 3Dingegno

Lascia un commento

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