cilindro OpenScad

cilindro OpenScad
Quando preparavo questo articolo, volevo scoprire quali persone hanno problemi con OpenScad. Con mia sorpresa, la domanda più comune è stata la creazione di un cilindro. C'è un comando cilindro che imparerai prima i dettagli. Dopodiché, vedrai modi innovativi per creare cilindri a tuo piacimento. Puoi anche togliere i cilindri da altri pezzi per creare cose più interessanti. La maggior parte dei lettori, che vengono qui probabilmente vogliono vedere un cilindro cavo o un tubo di qualche tipo. Continua a leggere, abbiamo un sacco in serbo per te.

Il comando del cilindro

Se si utilizza la versione più semplice del comando cilindro, è necessario solo un parametro. Questo rende un cilindro uniforme solido e niente di più. Dovresti notare che quel cilindro sarà di raggio standard e l'altezza del valore nella parentesi. Il comando ha molte opzioni, però, scaviamo attraverso di loro.

cilindro (R1 = 20);
cilindro (R1 = 20, R2 = 5);
cilindro (R1 = 20, h = 40);
cilindro (r = 20, h = 40);
cilindro (r1 = 20, r2 = 5, h = 40, centro = true);

I primi due cilindri nel codice sopra non hanno senso perché non hanno altezza. Un errore comune è quando dimentichi il valore e non sembra come prevedivi. Quando usi le variabili, la stessa cosa accade se si utilizza una variabile indefinita. In questo caso per l'altezza, ma controlla il registro della console quando lo si esegue.

Un cono

Il terzo è un cono, il motivo è che il valore R2 ha una dimensione standard. Prova il quarto e guarda cosa succede. L'ultimo crea un cono in cui hai il pieno controllo delle dimensioni. Questo è semplice da usare per i coni solidi. Hai impostato i due raggi e l'altezza e hai finito. Puoi anche usare il diametro se ti si adatta meglio.

Il centro = valore vero è valido per l'asse z, lasciando il cono a metà del "terreno". Il default è falso, il che fa finire il fondo del cono sul "terreno" per così dire. Puoi anche scegliere quanto sono vicine le pareti dei coni di essere circolari con il parametro "$ fn".

Cilindro cavo

Ehi, aspetta un minuto! Questo crea solo pezzi solidi, come faccio a perforare i buchi? Chiedi, grazie! te lo dirò. La risposta è tutta nella differenza. Il comando che è. Considera il codice seguente, contiene due cilindri che sono abbracciati con parentesi ricci e il comando Differenza.

differenza()
cilindro (r = 30, h = 40);
cilindro (r = 28, h = 41);

In poche parole, quando hai diversi pezzi, quindi taglia il materiale dal primo pezzo usando tutti i seguenti pezzi. In questo caso, si taglia un cilindro da un cilindro. Se vuoi tagliare qualsiasi altra forma, puoi farlo anche tu. Prova un cubo o una sfera! Nota gli effetti interessanti e talvolta devastanti che il valore $ fn può avere su questo codice.

Cono vuoto

Puoi anche farlo con un cono, basta utilizzare i valori a doppio raggio. Dato che stai definendo entrambi i coni, hai molto controllo sul risultato finale. Il cono cavo più semplice è solo due coni l'uno dell'altro con uno spessore per il materiale.

Difference ()
cilindro (R1 = 30, r2 = 12, h = 50);
cilindro (R1 = 25, r2 = 7, h = 45);

Questo cono è coperto nella parte superiore, puoi aprirlo semplicemente impostando la seconda altezza più alta della prima. Dato che hai due cilindri, puoi cambiare uno dei due. Ad esempio, puoi tagliare un foro dritto attraverso di esso cambiando il secondo cilindro. Puoi anche scegliere un cubo, ma tieni presente che questo può tagliare troppo materiale dal cono.

Piramide

Questo può sembrare irrilevante ma è un trucco utile che devi tenere a mente mentre continui a usare OpenScad. Tutti i cilindri e altri elementi sono un'approssimazione di una forma. Hai letto del parametro $ fn prima, qui ne approfitti. Con questo in mente, potresti pensare: una piramide è un cono con quattro lati. Corretto! Usa $ fn = 4 e hai un cono con quattro lati, che significa una piramide.

Difference ()
cilindro (R1 = 30, r2 = 12, h = 40, $ fn = 4);
cilindro (R1 = 25, r2 = 7, h = 35, $ ​​fn = 4);

Il cilindro interno taglia lo stesso cilindro di quello esterno. Fino a quando non inizi a giocare con il parametro $ fn. Per familiarizzare con gli effetti di questo parametro, prova a creare uno sgabello a quattro zampe. In che modo il parametro $ fn influisce sul risultato? Inoltre, come puoi coprire la parte superiore o il fondo?

Combinando molti

Per avere molto uso dei cilindri, dovresti imparare a combinarne molti. Il risultato finale può essere molto complesso e talvolta anche utile. Mettere una parte superiore sul cilindro è un'opzione. Per farlo bene, devi iniziare a usare le variabili. Prendi l'abitudine di metterli in cima a quello che stai progettando. Rende più facile realizzare moduli in seguito.

spessa = 5;
Baser = 30;
topr = 12;
altezza = 50;
Union ()
// il cono inferiore
Difference ()
cilindro (r1 = baser, r2 = topr, h = altezza);
cilindro (R1 = Baser -Thickn, R2 = topr - Spessen, H = altezza + Spessa);

// la palla superiore
traduci ([0, 0, altezza])
differenza()
sfera (r = topr);
sfera (r = topr -thickn);
tradurre ([0, 0, -top])
cubo (size = topr*2, centro = true);

A partire dall'alto, hai variabili. Sono per lo spessore, il raggio di base, il raggio superiore e l'altezza. La dichiarazione dell'Unione riunisce i pezzi. All'interno delle parentesi graffe, hai il cono e poi la palla superiore. Perché sono all'interno dell'Unione, diventeranno un pezzo alla fine. Puoi fare ancora di più quando usi molti cilindri in molti angoli.

Fare un tubo di prova

Passando dai coni, crea una provetta. Innanzitutto, devi considerare quali forme fanno un tubo di prova. La parte principale è un cilindro, niente di speciale, solo la differenza normale tra due cilindri. Se si imposta la lunghezza come variabile, è possibile utilizzare quel valore come riferimento. Devi sapere dove finisce il tubo e diventa la mezza sfera in fondo. Utilizzerai anche il raggio per il tubo per definire la sfera.

tubr = 20;
TUBL = 80;
spessa = 2;
Difference ()
cilindro (r1 = tubr, r2 = tubr, h = tubl);
cilindro (r1 = tubr - denship, r2 = tubr - spessen, h = tubl);

Prova questo e avrai solo un semplice cilindro, per rendere l'intero tubo necessario per scioglierlo insieme alla mezza sfera. Non c'è mezza sfera nell'OpenScad predefinito, devi farcela. Usa la differenza tra due sfere per creare una sfera vuota, quindi rimuovere un altro cubo che taglia la sfera.

Difference ()
sfera (tubr);
sfera (tubr - spessn);
Translate ([0, 0, -tubr])
cubo (size = tubr*2, centrale = true);

Ora hai due pezzi separati. Il prossimo passo è metterli insieme. Qui, puoi usare il comando sindacale. Come il comando Difference, l'Unione prende tutti i pezzi in ordine. In unione, l'ordine non è così importante poiché è un'aggiunta. Il codice sembrerà un po 'brutto perché non usiamo i moduli qui.

Union ()
// tubo principale
Difference ()
cilindro (r1 = tubr, r2 = tubr, h = tubl);
cilindro (r1 = tubr - denship, r2 = tubr - spessen, h = tubl);

// sfera inferiore
Translate ([0, 0, Tubl])
Difference ()
sfera (tubr);
sfera (tubr - spessn);
Translate ([0, 0, -tubr])
cubo (size = tubr*2, centrale = true);


// Anello superiore
Difference ()
cilindro (r = tubr + denshen, h = spessn);
cilindro (r = tubr, h = spessn);

Qui lo progettiamo sottosopra, dipende da te. Fare ciò che è conveniente per il caso particolare. Puoi sempre ruotarlo quando lo usi. L'anello superiore ha bordi affilati, puoi rimediare usando un cerchio e rota_extrude. Ci sono altri modi per farlo, esplorare e sperimentare!

rote_extrude (convessità = 10, $ fn = 100)
Translate ([Tubr, 0, 0])
cerchio (r = spessa, $ fn = 100);

Combinando molti cilindri

Una volta che hai realizzato un tubo da diversi cilindri, potresti anche voler collegarli in modi diversi. Per fare questo, puoi usare di nuovo un sindacato. Diciamo che vuoi un tubo in un angolo di quarantacinque gradi rispetto all'altro tubo. Per fare questo, posiziona il tubo angolato a metà del tubo grande.

Union ()
Tube (50, 4, 300);
Translate ([0, 0, totLength/2]) rote ([45, 0, 0])
Tube (50, 4, 150);

Quando provi questo, sembra fantastico dall'esterno. Quando guardi dentro, vedi che hai entrambi interi tubi. Quello corto sta bloccando il flusso nel tubo lungo. Per rimediare a questo, è necessario cancellare entrambi i cilindri all'interno dei tubi. Puoi considerare l'intera unione un pezzo e mettere i cilindri corrispondenti dopo una differenza.

Difference ()
Union ()
Tube (50, 4, 300);
Translate ([0, 0, totLength/2]) rote ([45, 0, 0])
Tube (50, 4, 150);


cilindro (r = 50 - 4, h = totLength);
Translate ([0, 0, totLength/2]) rote ([45, 0, 0])
cilindro (r = 50 - 4, h = totLength/2);

Come puoi vedere, il primo cilindro allunga l'intera lunghezza del tubo. Questo cancellerà qualsiasi cosa all'interno del grande tubo ma deve essere cancellata anche il piccolo tubo che è appoggiato. Il comando Translate sposta il tubo a metà strada, quindi ruota e mette il cilindro all'interno del tubo. In effetti, il codice viene copiato dall'alto e il tubo viene sostituito con un cilindro.

Impianto idraulico

Se vuoi fare più tubi, puoi utilizzare il modulo nell'esempio sopra e iniziare ad espandere. Il codice è disponibile su https: // github.com/matstage/OpenScad-cilindri.git, al momento della stesura, ci sono solo questi due ma ricontrolla spesso per vedere di più. Potresti essere in grado di creare cose più eccitanti.

All'interno di un blocco

Se si punta a creare un motore a combustione interna, è necessario un foro cilindrico in un pezzo solido. Di seguito è riportato un esempio, il più semplice possibile, per i canali di raffreddamento e i pistoni c'è molto di più da aggiungere. Questo è per un altro giorno però.

Modulo cilindro blocco (
cilindri = 3,
Edge = 1,
NUMCILINDERS = 8)

Difference ()
cubo ([cilindro * 2 + bordo * 2,
cilindro*2*numciLinders + edge*numciLinders + Edge, 10]);
per (x = [0: 1: numciLinders-1])
tradurre ([cilindro+ bordo, cilindro*x*2+ bordo*x+ cilindro+ bordo, 0])
cilindro (r = cilindro, h = 12);

Qui, hai un cubo che cresce in base al numero di cilindri che desideri all'interno del blocco. Tutti i valori nel modulo sono il valore predefinito in modo da poterlo utilizzare senza valori. Per usarlo, usa l'istruzione "Usa" nella parte superiore del file e quindi aggiungi cilindri (numciLinders = 8). Puoi usare o omettere qualsiasi valore, quando si ometti, ci vorrà il valore predefinito. In breve, l'interno del modulo inizia con i valori e quindi crea un cubo per essere abbastanza lungo da adattarsi ai cilindri. Continua quindi rimuovendo i cilindri con una dichiarazione per. Grazie alla dichiarazione per la dichiarazione, puoi fare un blocco più grande o più piccolo. Per moduli più avanzati, è possibile mettere vincoli in quella modifica del design quando vengono raggiunti determinati valori. Forse vuoi renderlo una V se è 8 o più cilindri.

Extrudere da una forma piatta

Un altro modo per creare un cilindro è fare un cerchio e estruderlo. Un cilindro solido è solo due righe:

linear_extrude (15)
cerchio (20);

Questo crea un lungo 15 (nessuna unità in OpenScad), con un raggio di 20 anni. È possibile utilizzare il diametro usando il parametro D. Basta creare un cilindro non è molto utile ma puoi usare la stessa tecnica per qualsiasi forma 2D. Lo vedrai più tardi. Mentre un cilindro cavo il codice è un po 'più lungo.

linear_extrude (15)
Difference ()
cerchio (20);
Circle (18);

Questo è lo stesso ma, come abbiamo fatto prima, rimuovi il cerchio centrale. Puoi anche piegarlo in un cerchio con la versione rote_extrude. Questo è ottimo per produrre ciambelle, la versione più semplice sembra una.

rote_extrude (angle = 180, convessità = 10)
Translate ([30,0,0])
Difference ()
cerchio (20);
cerchio (10);

Questo codice crea un semicerchio che è vuoto. Una nota con cui dovresti stare attento è il traduzione è necessario o otterrai un errore: “Errore: tutti i punti per rotateExtrude () devono avere lo stesso segno di coordinate X (l'intervallo è -2.09 -> 20.00) ". I numeri dipenderanno dal valore nel cerchio. Poiché questo crea la stessa forma di un cilindro, può sembrare inutile. Non è! Il miglior uso di questo comando è quello di rendere funzionale forma piatta in qualche modo. Il manuale ha un semplice poligono come esempio, crea una forma rotonda in cui è possibile eseguire una cintura. Puoi anche girarlo in giro. Il codice seguente crea un cavatappi.

Translate ([-80,0,0])
linear_extrude (80, twist = 900, scala = 2.0, fette = 100)
Translate ([2, 0, 0])
quadrato (10);

L'esempio nel manuale mostra un poligono che può essere utile. Il codice seguente può essere quello che ti piace, ma illustra il potere di farlo in questo modo.

Translate ([0, -80, 0])
rote_extrude (angolo = 275)
tradurre ([12,3,2])
Polygon (punti = [[0,0], [20,17], [34,12], [25,22], [20, 30]]);

Puoi sperimentare la forma del poligono fino a quando non lo ottieni per la tua applicazione. Se sembra un po 'scoraggiante usando solo numeri, è possibile creare il profilo in altri programmi CAD e importare il risultato DXF utilizzando il comando import ().

Conclusione

Fare un cilindro è semplice ma solo l'inizio del processo. La parte difficile è renderlo utile. Devi anche incorporarlo nel tuo design e forse creare problemi più complessi dei cilindri. Trova modi e sfide per la tua continua espansione della conoscenza usando OpenScad. Ricorda di usare la documentazione e appoggiarsi ad altri software quando non può essere facilmente raggiunto con i numeri e simili. Qualcosa che non è coperto in questo post è che puoi disegnare cose in Inkcape e Blender e importarle per OpenScad. Esportazione da OpenScad a STL e altri formati è ben supportato e se sei davvero curioso, dai un'occhiata alle creazioni su Thingiverse. Hanno un fascio di appassionati che contribuiscono al loro sito.