# OpenSCAD/Primi passi

OpenSCAD
Copertina Tutti i moduli · Sviluppo
* Introduzione
* Primi passiOpenSCAD/Primi passi
* Interfaccia utente OpenSCADOpenSCAD/Interfaccia utente OpenSCAD
* Linguaggio OpenSCADOpenSCAD/Linguaggio OpenSCAD
** GeneralitàOpenSCAD/Generalità
** Primitive solidiOpenSCAD/Primitive solidi
** Operatori matematici
** Funzioni matematiche
** Funzioni stringa
** Trasformazioni
** Funzioni condizionali e Iterazioni
** Modellazione CSG
** Modificatori
** Moduli
** Comando include
** Altre specifiche del linguaggio
* Usare il sottosistema 2D
** Primitive 2D
** Estrusione DXF
** Altri formati 2D
* Importazione ed esportazione STL
** Importazione STL
** Esportazione STL
* Esempi commentati
* Usare un editor esterno OpenSCAD
* Usare OpenSCAD dalla linea di comando
* Compilare OpenSCAD dai File sorgente
** UNIX
** Compilazione per Windows su Linux o Mac OS X
** Compilazione su Windows
** Compilazione su Mac OS X
** Invio di patch
* Librerie
* Glossario dei comandi
Modifica il sommario

## Cheatsheet

Pagina riassuntiva con i comandi disponibili per la modellazione.

## Aprire un modello di esempio esistente

Aprire uno degli esempi della installazione OpenSCAD (File > Examples > example004.scad).
Oppure copia e incolla il codice seguente della finestra OpenSCAD.

## Creare un modello
### Cube, sphere, cylinder

Openscad ha tre funzioni per i solidi base: cube, sphere, cylinder e una per solidi generici polyhedron.
In OpenSCAD, inserire le seguenti linee di programma:
| // esempio 1 // cube(dimensione, TRUE/FALSE) // cubo di lato 3 cube(3); // parallelepipedo di lati 2,3,4 cube([2,3,4]); // cubo con baricentro nell'origine degli assi cube(3,true); // sphere(raggio, risoluzione) // sfera di raggio=3 sphere(3); // sfera di raggio=3 e risoluzione maggiore (20 lati per ogni circonferenza) sphere(3,$fn=20); // cylinder(altezza, raggio_facciaINF, raggio_facciaSUP, risoluzione, TRUE/FALSE) // cilindro con base coincidente all'origine degli assi cylinder(15,6,6); // prisma retto a base pentagonale cylinder(15,6,6,$fn=5); // tronco di cono cylinder(15,6,2); // tronco di piramide a base pentagonale cylinder(15,6,2,$fn=5); | OpenSCAD Cubo cubo(3); Un cuboide in OpenSCAD cube([2,3,4]); OpenSCAD_Cubo centrato cube(3,true); | Sfera a diversa risoluzione sphere(3); sphere(3,$fn=20); Cilindro e prisma a base poligonale cylinder (15,6,6); cyinder (15,6,6,$fn=5); Piramidi tronche cylinder (15,6,2); cylinder (15,6,2,$fn=5); |
Quindi premere F5 per ottenere la compilazione e la visualizzazione del modello.

### Difference, union, intersection

| // esempio 2 translate([0, 0, 30]){ //traslazione in verticale asse Z cylinder(h=40, r=10); //cilindro alto 40 di raggio 10 } difference{ //differenza di volumi tra un cubo e una sfera cube(30, center=true); sphere(20); } union{ //unione di due solidi (somma dei volumi) cube (10,true); sphere (7); } translate([20,0,0]) intersection{ //intersezione (volume in comune) tra due solidi cube (10,true); sphere (7); } /* utilizzare i seguenti modificatori utili in fase di debug #sphere(20); MOSTRERÀ I SOLIDI NON VISIBILI !sphere(20); MOSTRERÀ SOLO QUESTO SOLDIO */ | OpenSCAD after pasting the example code and pressing F5 difference { cube(30, center=true); sphere(20); } translate([0, 0, 30]) { cylinder(h=40, r=10); } Union e Intersection |
Quindi premere F5 per ottenere la compilazione e la visualizzazione del modello.
Sono possibile tre tipi di azione con il mouse:
* Trascinare con il tasto sinistro per ruotare la vista. Il valore della rotazione in basso cambia.
* Trascinare con il tasto destro per spostare la vista (pan). Il valore della traslazione in basso cambia.
* Usare la rotella di scroll del mouse per lo zoom. Alternativamente si possono usare i tasti + e -, oppure trascinare con il tasto destro premendo il tasto SHIFT. Il valore dello zoom in basso cambia.

## Posizionare un oggetto

Questo esempio mostra come usare il comando translate per posizionare un cuboide a fianco di un cuboide esistente.
Si noti che non occorre un punto e virgola dopo il commando translate. Questo perché il commando si riferisce agli oggetti che seguono, racchiusi nelle parentesi graffe. Il punto e virgola, quindi, avrebbe l'effetto di interrompere il comando di translazione, e il secondo cuboide verrebbe posizionato nella stessa posizione del primo.

### Traslazione

| // esempio 3 - posizionare un oggetto cube([2,3,4]); // l'origine coincide con lo spigolo a meno di indicare // l'opzione TRUE translate([3,0,0]) { // in questo caso le parentesi non sono indispensabili cube([2,3,4]); // poiché translate si riferisce ad un solido solo } cube([2,3,4],true); // l'opzione TRUE centra il baricentro // nell'origine degli assi /* le parentesi graffe non sono indispensabili se la traslazione riguarda un unico solido questo comando funzionerebbe ugualmente translate([3,0,0]) cube([2,3,4]); */ | Posizionare un oggetto in OpenSCAD cube([2,3,4]); translate([3,0,0]) { cube([2,3,4]) }; Parallelepipedo centrato con opzione TRUE cube([2,3,4],true); |
Quindi premere F5 per ottenere la compilazione e la visualizzazione del modello.

### Rotazione

| // esempio 4 - ruotare un oggetto // la rotazione avviene sempre rispetto all'origine assoluta degli assi rotate([0,0,45]) // l'asse Z fa da perno ed il piano XY color("red") // ruota intorno ad esso in senso antiorario di 45 cube([2,3,4]); translate([6,0,0]) { // ATTENZIONE all'ordine dei comandi rotate e translate rotate ([0,0,45]) // in questo esempio il solido color("green") // PRIMA RUOTA intorno a Z ed POI TRASLA in direzione X cube([2,3,4]); } rotate([0,0,45]) { // in questo esempio il solido translate ([6,0,0]) // PRIMA TRASLA ed POI RUOTA intorno a Z color("blue") cube([2,3,4]); } | Rotazione assonometria Rotazione pianta |
Quindi premere F5 per ottenere la compilazione e la visualizzazione del modello.

## Cambiare il colore di un oggetto

Possiamo cambiare il colore di un oggetto mediante i valori RGB (RossoVerdeBlu). Ma, invece dei valori RGB da 0 a 255, vengono inseriti valori da 0.0 a 1.0.
| // esempio 5 - cambiare il colore di un oggetto color([1,0,0]) cube([2,3,4]); //equivalente a color("red"); translate([3,0,0]) color([0,1,0]) cube([2,3,4]); //equivalente a color("green"); translate([6,0,0]) color([0,0,1]) cube([2,3,4]); //equivalente a color("blue"); | Cambiare il colore di un oggetto in OpenSCAD |
A partire dalla versione del 2011.12 si possono usare anche i nomi dei colori come specificato in Web colors. Ad esempio: color("red") cube;
Considerando un commando completo come una proposizione, allora color è un "aggettivo" che descrive l'"oggetto" della proposizione (cioè il "nome"). In questo caso, l'oggetto è il cuboide cube da creare. L'aggettivo deve essere prima del nome nella proposizione, come nel caso: color cube;. Allo stesso modo, translate può essere considerato un "verbo" che agisce sull'oggetto, ed è posizionato così: translate color cube;. Il codice che segue produce lo stesso risultato:
La modifica dei colori è attiva solo in Preview (F5). La modalità Render (F6) non la supporta ancora.

## Moduli

I moduli possono essere utilizzati per costruire procedure complesse da aggiungere alle istruzioni proprie del linguaggio. I moduli accettano anche parametri in ingresso. Non restituiscono valori in uscita, per questo serve utilizzare function.
Una volta definiti i moduli vengono temporaneamente aggiunti al linguaggio di OpenSCAD.

## Iterazione: ciclo for

Utilizza ogni valore dell'intervallo assegnato o del gruppo di valori (vettore) applicandolo all'azione che segue.
Esempi

## If .... else

Esegue un test per determinare se l'azione che segue il test debba essere eseguita.
I cicli possono essere nidificati.