Nella prima parte dell'articolo abbiamo esplorato le caratteristiche salienti del programma OpenSCAD, consentendo già di produrre interessanti lavori e utili scene 3D. Abbiamo anche apprezzato la relativa facilità d'uso del programma. In questa seconda e conclusiva parte affineremo le tecniche di modellazione solida e apprenderemo nuove funzioni e tecniche avanzate, al fine di produrre scene 3D sempre più sofisticate.
CSG - Geometria Solida Costruttiva
Andiamo ad esplorare uno dei punti di forza del programma: la geometria solida costruttiva. Con essa si possono effettuare operazioni aritmetiche tra i solidi, e precisamente:
- Unione;
- Differenza;
- Intersezione.
Con tali operazioni è possibile scavare dei solidi, tagliarli, rimuovere le parti interessate e sagomarle secondo i propri gusti, il tutto con tecniche booleane. Ben lungi dallo spiegare in dettaglio di cosa si tratti (la Rete è piena di documentazione a riguardo) vediamo come si comporta OpenSCAD con le operazioni booleane tra oggetti. La figura 1 riporta alcune operazioni CSG.
Unione
Il programma effettua una somma logica tra gli oggetti coinvolti. Il risultato ottenuto è un unico solido, come somma dei suoi componenti. Un esempio di unione è descritto nel seguente listato:
union() { cylinder(4,1,1,center=true,$fn=100); translate([0,0,2.3]) sphere(0.8,center=true,$fn=100); }
Differenza
Il programma effettua una differenza logica tra gli oggetti coinvolti, rispettando l'ordine di comparsa. Il risultato ottenuto è un unico solido, come operazione di "scavo" tra i suoi componenti. Risulta utile quando un solido deve essere forato. Se l'ordine degli oggetti cambia, anche il risultato finale sarà differente. Un esempio di differenza è descritto nel seguente listato:
difference() { cylinder(4,1,1,center=true,$fn=100); translate([0,0,2.3]) sphere(0.8,center=true,$fn=100); }
Intersezione
Il programma effettua una operazione di intersezione tra gli oggetti coinvolti. Il risultato ottenuto è un unico solido, con le sole parti in comune tra i suoi componenti. Un esempio di intersezione è descritto nel seguente listato:
intersection() { cylinder(4,1,1,center=true,$fn=100); translate([0,0,2.3]) sphere(0.8,center=true,$fn=100); }
I moduli
I moduli di OpenSCAD si possono paragonare alle funzioni e procedure dei tradizionali linguaggi di programmazione. La possibilità di generalizzare un oggetto, infatti, semplifica notevolmente il lavoro ed accorcia il listato di parecchio. Al solito, un esempio pratico, chiarirà immediatamente il concetto. Si debbano costruire tre portaceneri, dalla forma uguale ma dai colori differenti (vedi figura 2). Grazie all'adozione dei moduli, tutto [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2307 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Molto interessante. La scorsa volta ho scaricato il software ed ho provato gli esempi che ci hai proposto. Ques’oggi direi che mi hai proprio convinto. Di solito uso SketchUp per fare disegni 3D in velocità, ma qui l’approccio è decisamente diverso, anche se devo ammettere che tenere a mente tutte le possibilità e comandi può diventare difficile. La cosa che più mi stuzzica, però, è che essendo files di testo, è possibile far si che un software scritto ad ok possa generare il codice per creare le figure 3D desiderate.
La “bellezza” di questo programma che puoi disegnare programmando come in C, tu dici il fatto di scrivere automaticamente il codice partendo da blocchi inseriti in una GUI ?
questa è un’idea, semplificherebbe la stesura del “codice 3d”. Ma io pensavo a qualcosa di diverso anche se non ho ancora in mente un reale utilizzo pratico……non so, preparo un software che disegna ingrannni per degli inseguitori astronomici, di dimensioni diverse in base alla grandezza dell’inseguitore, con rapporti diversi in base alla precisione, etc, etc. Inserisco i dati base, il sistema mi genera il listato che passato a questo software tira fuori le figure 3d da inviare magari ad una stampante 3D. Forse un esempio poco pratico, ma stavo pensando a qualcosa del genere; un “generatore di listati” che cambiano a seconda di alcune elaborazioni fatte a priori. Potrebbe trattarsi anche di raccolte dati fatti da alcuni sensori, o che so, un programma di biochimica che mi crea le strutture molecolari in 3d in base a certe condizioni, un software che dai dati dicom di un esame radiologico me li trasforma in solidi …. non dico che non esistano già soluzioni specifiche nei singoli ambiti o soluzioni più professionali, ma l’istinto mi dice che con questo software si può ottenere buoni risultati in modo semplice e con risorse quasi nulle.
CIao.
Grazie dei complimenti.
Smania2000 ha colto nel segno.
Essendo un TXT si potrebbe automatizzarlo invece di
scriverlo a mano.
Un esempio?
Basta creare una piccola GUI (come backend)
per la creazione di ingranaggi.
La form della GUI ti chiederebbe il numero di denti, lo spessore dell’ingranaggio, il diametro del “buco” e altri parametri e, premendo il tasto OK,
verrebbe “sparato” il listato, pronto per essere copiato, incollato
e renderizzato su OpenSCAD.
Semplicemente…. fantastico!!!!!