CAD

openSCAD sylinder

openSCAD sylinder
Når jeg forberedte denne artikkelen, ønsket jeg å finne ut hva folk har problemer med openSCAD. Til min overraskelse var det vanligste spørsmålet om å lage en sylinder. Det er en sylinderkommando som du vil lære detaljene om først. Etter det vil du se innovative måter å lage sylindere etter din smak. Du kan også ta bort sylindere fra andre brikker for å skape mer interessante ting. De fleste lesere, som kommer hit, vil sannsynligvis se en hul sylinder eller et rør av noe slag. Fortsett å lese, vi har mye i vente for deg.

Sylinderkommandoen

Hvis du bruker den enkleste versjonen av sylinderkommandoen, trenger du bare en parameter. Dette gjør en solid, ensartet sylinder og ikke noe mer. Du må være oppmerksom på at den sylinderen vil ha en standard radius og høyden på verdien i parentesen. Kommandoen har mange alternativer skjønt, la oss grave gjennom dem.

sylinder (r1 = 20);
sylinder (r1 = 20, r2 = 5);
sylinder (r1 = 20, h = 40);
sylinder (r = 20, h = 40);
sylinder (r1 = 20, r2 = 5, h = 40, sentrum = sann);

De to første sylindrene i koden ovenfor gir ingen mening fordi de ikke har noen høyde. En vanlig feil er når du glemmer verdien og den ikke ser ut som du hadde tenkt deg. Når du bruker variabler, skjer det samme hvis du bruker en udefinert variabel. I dette tilfellet for høyde, men sjekk konsolloggen når du kjører den.

En kjegle

Den tredje er en kjegle, årsaken er at R2-verdien har en standard størrelse. Prøv den fjerde, og se hva som skjer. Den siste skaper en kjegle der du har full kontroll over dimensjonene. Denne er enkel å bruke til solide kjegler. Du setter de to radiene og høyden, og du er ferdig. Du kan også bruke diameteren hvis det passer deg bedre.

Senter = sann verdi er gyldig for z-akselen, og etterlater kjeglen halvveis opp fra "bakken". Standard er falsk, noe som gjør at bunnen av kjeglen havner på "bakken" for å si det sånn. Du kan også velge hvor nær kjegleveggene er til å være sirkulære med parameteren '$ fn'.

Hul sylinder

Hei, vent litt! Dette skaper bare solide biter, hvordan borer jeg hull i dem? Du spør, takk! Jeg vil fortelle deg. Svaret er alt i forskjellen. Kommandoen som er. Tenk på koden nedenfor, den inneholder to sylindere som er omfavnet med krøllete parenteser og forskjellskommandoen.

forskjell()
sylinder (r = 30, h = 40);
sylinder (r = 28, h = 41);

Enkelt sagt, når du har flere stykker, kutter du vekk materiale fra første stykke ved hjelp av alle følgende stykker. I dette tilfellet kutter du en sylinder ut av en sylinder. Hvis du vil klippe ut noen annen form, kan du også gjøre det. Prøv en kube eller en kule! Legg merke til de interessante, og noen ganger ødeleggende effektene $ fn-verdien kan ha på denne koden.

Hule kjegle

Du kan også gjøre dette med en kjegle, bare bruk verdiene med dobbel radius. Siden du definerer begge kjeglene, har du mye kontroll på det endelige resultatet. Den enkleste hule kjeglen er bare to kjegler inne i hverandre med en tykkelse på materialet.

forskjell ()
sylinder (r1 = 30, r2 = 12, h = 50);
sylinder (r1 = 25, r2 = 7, h = 45);

Denne kjeglen er dekket øverst, du kan åpne den ved å stille inn den andre høyden høyere enn den første. Siden du har to sylindere, kan du endre hvilken som helst av de to. Som et eksempel kan du kutte et rett hull gjennom det ved å bytte den andre sylinderen. Du kan også velge en terning, men vær oppmerksom på at dette kan kutte for mye materiale ut av kjeglen.

Pyramide

Dette kan virke irrelevant, men det er et nyttig triks du må huske på når du fortsetter å bruke openSCAD. Alle sylindere og andre elementer er en tilnærming av en form. Du har lest om $ fn-parameteren tidligere, her utnytter du den. Med dette i tankene kan du tenke: En pyramide er en kjegle med fire sider. Riktig! bruk $ fn = 4 og du har en kjegle med fire sider, som betyr en pyramide.

forskjell ()
sylinder (r1 = 30, r2 = 12, h = 40, $ fn = 4);
sylinder (r1 = 25, r2 = 7, h = 35, $ ​​fn = 4);

Den indre sylinderen kutter den samme sylinderen som den ytre. Inntil du begynner å spille med $ fn-parameteren. For å bli kjent med effekten av denne parameteren, prøv å lage en firbent avføring. Hvordan påvirker $ fn-parameteren resultatet? Også, hvordan kan du dekke toppen eller bunnen?

Kombinere mange

For å ha mye bruk av sylindere, bør du lære å kombinere mange av dem. Det endelige resultatet kan være veldig komplisert og noen ganger til og med nyttig. Å sette en topp på sylinderen er ett alternativ. For å gjøre dette bra, må du begynne å bruke variabler. Gjør det til en vane å sette dem på toppen av det du designer. Det gjør det lettere å lage moduler senere.

tykkelse = 5;
baser = 30;
topr = 12;
høyde = 50;
union ()
// Bunnkeglen
forskjell ()
sylinder (r1 = baser, r2 = topp, h = høyde);
sylinder (r1 = baser-tykkelse, r2 = topr - tykkelse, h = høyde + tykkelse);

// Toppkulen
oversette ([0, 0, høyde])
forskjell()
sfære (r = topr);
sfære (r = topr-tykk);
oversette ([0, 0, -topr])
kube (størrelse = topr * 2, sentrum = sann);

Fra toppen har du variabler. De er for tykkelse, basisradius, toppradius og høyde. Fagforeningserklæringen samler brikkene. Inne i selene har du kjeglen og deretter toppkulen. Fordi de er inne i unionen, vil de bli en del på slutten. Du kan gjøre enda mer når du bruker mange sylindere i mange vinkler.

Å lage et prøverør

Fortsett fra kjegler, lag et reagensglass. Først må du vurdere hvilke former som utgjør et prøverør. Hoveddelen er en sylinder, ikke noe fancy, bare den vanlige forskjellen mellom to sylindere. Hvis du setter lengden som en variabel, kan du bruke den verdien som referanse. Du må vite hvor røret slutter og blir halvkule nederst. Du vil også bruke radiusen til røret for å definere sfæren.

tubr = 20;
tubl = 80;
tykkelse = 2;
forskjell ()
sylinder (r1 = tubr, r2 = tubr, h = tubl);
sylinder (r1 = tubr - thickn, r2 = tubr - thickn, h = tubl);

Prøv dette, så har du bare en enkel sylinder, for å lage hele røret trenger du å smelte det sammen med halvkule. Det er ingen halvkule i standard openSCAD, du må gjøre det. Bruk forskjellen mellom to kuler for å lage en hul sfære, og fjern deretter en annen kube som kutter av kulen.

forskjell ()
sfære (tubr);
sfære (tubr - thickn);
oversette ([0, 0, -tubr])
kube (størrelse = tubr * 2, center = true);

Nå har du to separate stykker. Det neste trinnet er å sette dem sammen. Her kan du bruke fagforeningskommandoen. Som forskjellskommandoen tar fagforeningen alle brikkene i orden. I fagforening er ikke rekkefølgen så viktig siden den er et tillegg. Koden vil se litt stygg ut fordi vi ikke bruker moduler her.

union ()
// Hovedrør
forskjell ()
sylinder (r1 = tubr, r2 = tubr, h = tubl);
sylinder (r1 = tubr - thickn, r2 = tubr - thickn, h = tubl);

// Bunnkule
oversette ([0, 0, tubl])
forskjell ()
sfære (tubr);
sfære (tubr - thickn);
oversette ([0, 0, -tubr])
kube (størrelse = tubr * 2, center = true);


// Toppring
forskjell ()
sylinder (r = tubr + thickn, h = thickn);
sylinder (r = tubr, h = thickn);

Her designer vi det opp ned, dette er opp til deg. Gjør det som er praktisk for den aktuelle saken. Du kan alltid rotere den når du bruker den. Den øverste ringen har skarpe kanter, du kan rette opp dette ved å bruke en sirkel og rotere den. Det er andre måter å gjøre det på, utforske og eksperimentere!

rotate_extrude (konveksitet = 10, $ fn = 100)
oversette ([tubr, 0, 0])
sirkel (r = thickn, $ fn = 100);

Kombinere mange sylindere

Når du har laget et rør av flere sylindere, kan det også være lurt å koble dem på forskjellige måter. For å gjøre dette kan du bruke en fagforening igjen. La oss si at du vil ha det ene røret i en førtifem graders vinkel mot det andre røret. For å gjøre dette plasserer du det vinklede røret halvveis opp i det store røret.

union ()
rør (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
rør (50, 4, 150);

Når du prøver dette, ser det flott ut fra utsiden. Når du ser innover, ser du at du har begge hele rørene. Den korte blokkerer strømmen i det lange røret. For å avhjelpe dette må du slette begge sylindrene inne i rørene. Du kan vurdere hele foreningen i ett stykke og sette de tilsvarende sylindrene etter den i en forskjell.

forskjell ()
union ()
rør (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
rør (50, 4, 150);


sylinder (r = 50 - 4, h = totlengde);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
sylinder (r = 50 - 4, h = totlengde / 2);

Som du ser, strekker den første sylinderen hele lengden på røret. Dette vil slette alt inni det store røret, men det lille røret som lener seg, må også slettes. Oversettkommandoen flytter røret opp halvveis, det roterer og setter sylinderen inne i røret. Faktisk kopieres koden ovenfra og røret erstattes med en sylinder.

Rørleggerarbeid

Hvis du vil lage flere rør, kan du bruke modulen i eksemplet ovenfor og begynne å utvide. Koden er tilgjengelig på https: // github.com / matstage / openSCAD-sylindere.git, I skrivende stund er det bare disse to, men kom tilbake ofte for å se mer. Du kan kanskje lage mer spennende ting.

Inne i en blokk

Hvis du sikter mot å lage en forbrenningsmotor, trenger du et sylindrisk hull i et solid stykke. Nedenfor er et eksempel, det enkleste mulig, for kjølekanaler og stempler er det mye mer å legge til. Det er for en annen dag skjønt.

modul sylinderblokk (
sylinderR = 3,
Kant = 1,
numCylinders = 8)

forskjell ()
kube ([cylinderR * 2 + Edge * 2,
sylinderR * 2 * numCylinders + Edge * numCylinders + Edge, 10]);
for (x = [0: 1: numCylinders-1])
translate ([cylinderR + Edge, cylinderR * x * 2 + Edge * x + cylinderR + Edge, 0])
sylinder (r = sylinderR, h = 12);

Her har du en kube som vokser i henhold til antall sylindere du vil ha inne i blokken. Alle verdiene i modulen er standard, slik at du kan bruke den uten verdier. For å bruke den, bruk 'bruk uttalelse øverst i filen din, og legg deretter til cylinderblokk (numCylinders = 8). Du kan bruke eller utelate hvilken som helst verdi, når du utelater dem, vil det ta standard. Kort sagt begynner innsiden av modulen med verdiene og lager deretter en kube som skal være lang nok til å passe til sylindrene. Den fortsetter deretter ved å fjerne sylindrene med en for uttalelse. Takket være uttalelsen kan du lage en større eller mindre blokk. For mer avanserte moduler kan du sette begrensninger i det som endrer designet når visse verdier er nådd. Kanskje du vil gjøre det til et V hvis det er 8 eller flere sylindere.

Ekstruderer fra en flat form

En annen måte å lage en sylinder på er å lage en sirkel og ekstrudere den. En solid sylinder er bare to linjer:

linear_extrude (15)
sirkel (20);

Dette skaper en 15 (ingen enheter i openSCAD) lang, med en radius på 20. Du kan bruke diameteren ved hjelp av parameteren d. Bare å lage en sylinder er ikke veldig nyttig, men du kan bruke den samme teknikken for hvilken som helst 2D-form. Du vil se dette senere. Mens en hul sylinder er koden litt lenger.

linear_extrude (15)
forskjell ()
sirkel (20);
sirkel (18);

Dette er det samme, men som vi har gjort tidligere, fjerner du sentrumssirkelen. Du kan også bøye den i en sirkel med rotate_extrude-versjonen. Dette er flott for å lage smultringer, den enkleste versjonen ser ut som en.

rotate_extrude (vinkel = 180, konveksitet = 10)
oversette ([30,0,0])
forskjell ()
sirkel (20);
sirkel (10);

Denne koden lager en halv sirkel som er hul. En merknad som du bør være forsiktig med er at oversettelsen er nødvendig, ellers vil du få en feil: “FEIL: alle punkter for rotatextrude () må ha samme X-koordinattegn (område er -2.09 -> 20.00) ”. Tallene vil avhenge av verdien i sirkelen. Siden dette skaper samme form som en sylinder, kan det virke ubrukelig. Det er ikke! Den beste bruken av denne kommandoen er å gjøre flat form på en eller annen måte funksjonell. Manualen har en enkel polygon som et eksempel, den skaper en rund form der du kan kjøre et belte. Du kan også vri det rundt. Koden nedenfor oppretter en korketrekker.

oversett ([- 80,0,0])
linear_extrude (80, vri = 900, skala = 2.0, skiver = 100)
oversette ([2, 0, 0])
firkantet (10);

Eksemplet i håndboken viser en polygon som kan være nyttig. Koden nedenfor kan være hva du vil, men illustrerer kraften i å gjøre det på denne måten.

oversette ([0, -80, 0])
roter_ekstrudere (vinkel = 275)
oversette ([12,3,2])
polygon (poeng = [[0,0], [20,17], [34,12], [25,22], [20, 30]]);

Du kan eksperimentere med polygonens form til du får den riktig for applikasjonen din. Hvis det føles litt skremmende å bruke bare tall, kan du opprette profilen i andre CAD-programmer og importere dxf-resultatet ved hjelp av kommandoen import ().

Konklusjon

Å lage en sylinder er enkel, men bare starten på prosessen. Den vanskelige delen er å lage noe nyttig med det. Du må også innlemme den i designet ditt og kanskje lage mer komplekse problemer enn sylindere. Finn måter og utfordringer for din pågående utvidelse av kunnskap ved hjelp av openSCAD. Husk å bruke dokumentasjonen og støtt deg på annen programvare når den ikke lett kan oppnås med tall og slikt. Noe som ikke er dekket i dette innlegget, er at du kan tegne ting i Inkscape og Blender og importere det til openSCAD. Eksport fra openSCAD til stl og andre formater støttes godt, og hvis du er veldig nysgjerrig, sjekk ut kreasjonene på Thingiverse. De har en gruppe entusiaster som bidrar med ting til nettstedet deres.

Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...