Nybörjarguide till OpenSCAD: Programmering av 3D -tryckta modeller

Nybörjarguide till OpenSCAD: Programmering av 3D -tryckta modeller

Har du alltid velat designa dina egna 3D -modeller? Vad sägs om 3D -utskrift av en del du har designat? Det finns många 3D -modelleringsprogram runt, men dessa kan vara svåra att använda om du inte är konstnärlig (som jag). OpenSCAD ger dig ett sätt att designa modeller specifikt för 3D -utskrift, utan att använda annat än koda . Oroa dig inte om du inte vet hur man kodar heller, idag guidar jag dig igenom grunderna.





Vad är OpenSCAD?

OpenSCAD är gratis Solid datorstödd design modellerare. Den är tillgänglig för Windows, Mac och Linux. Det som gör det annorlunda än många andra program är att du designar delar med hjälp av kod istället för en mus. Detta gör det mycket enkelt att göra matematiska beräkningar, lagra dimensioner i variabler, ändra storlek på delar och mer.





Det finns några faktorer du måste ta hänsyn till när 3D -utskriftsmodeller, men många av dessa gäller CAD -modeller för 3D -utskrift i allmänhet, inte bara OpenSCAD -mönster. Om du vill veta mer om 3D -utskrift, kolla in vår Ultimate Beginner's guide. Om du letar efter en mer interaktiv modell, läs guiden för att skapa objekt i Sketchup.





Komma igång

Först, gå vidare till Nedladdningar sidan och hitta en version av OpenSCAD som passar ditt operativsystem. Jag använder Mac OS, men dessa OpenSCAD -principer gäller för alla system.

När den är installerad, fortsätt och öppna den. Du kommer att presenteras med denna startmeny:



Detta visar de filer du öppnade senast och ger dig möjlighet att ladda några exempel. Titta gärna runt några av exemplen, men jag tyckte att dessa gjorde saker mer förvirrande när de började. För den här självstudien skapar du en ny fil genom att klicka på ny knapp.

När du är öppen kommer du att presenteras med detta gränslösa utseende:





Detta är uppdelat i tre huvudområden. Till vänster är din redaktör och meny. Det är här du kommer att skriva din kod. Denna kommer inte att ha någon kod än, eftersom du skapar en ny fil. Överst finns det några menyknappar för att utföra grundläggande uppgifter, till exempel ladda, spara, ångra och så vidare.





Längst ner till höger är trösta . Detta visar dig eventuella fel när du bygger modellen.

Det sista avsnittet är huvudgränssnitt uppe till höger. Här kan du interagera med din modell, men du kommer inte att kunna redigera den här (du kommer att skriva kod för att göra detta).

hur man rensar utrymme på apple watch

Det finns flera knappar längst ner i detta huvudgränssnitt. Dessa låter dig främst se din design på olika sätt.

Spara en ny fil genom att trycka på spara -knappen i redigeringsmeny eller genom att gå till Fil > Spara .

Det grundläggande

Sättet som OpenSCAD fungerar mestadels är genom addition och subtraktion av enkla former. Du kan bygga mycket komplexa modeller på det här sättet, så låt oss hoppa in direkt.

Här är den första formen, en enkel låda:

Och här är koden för att producera det:

cube(); // create a cube

För att få din kod att köra och bygga modellen måste du förhandsgranska den. OpenSCAD gör detta som standard varje gång du sparar, eller så kan du trycka på F5 för att tvinga fram en uppdatering. Experimentera med att röra dig i 3D -utrymme genom att hålla ned vänster eller höger musknapp.

Nu ger detta en fin kub, men den är inte särskilt användbar utan dimensioner. OpenSCAD fungerar inte i något specifikt mätsystem, istället är enheter alla relativt varandra. Du kan skapa en låda 20 x 10, och det är upp till något annat program (t.ex. din 3D -utskärare) att tolka dessa, oavsett om de är metriska eller imperiala. Det ger faktiskt stor flexibilitet.

Låt oss lägga till några dimensioner i din kub. Du gör detta genom att skicka in parametrar till kub metod:

cube(size = [10, 20, 30]); // rectangle

Värdena 10 , tjugo , och 30 representerar storleken på kuben i X , OCH , och MED axel. Lägg märke till hur detta har producerat en mycket större rektangel:

Som standard drar OpenSCAD komponenter längst ner till vänster. Du kan justera detta genom att ställa in Centrum parameter till Sann . Här är koden för att göra det mot rektangeln:

cube(size = [10, 20, 30], center = true); // rectangle centered

Och så här ser det ut:

vilka butiker kan du använda PayPal -kredit?

Centreringsobjekt fungerar bra för enkla former, men det gör saker komplicerade för icke -symmetriska objekt. Du måste bestämma vilken metod som fungerar bäst för dig.

Gå vidare till en mer komplex form, här är en cylinder :

Här är koden för att skapa den:

cylinder(d = 10, h = 10, center = true); // cylinder

Till skillnad från kuber , cylindrar ritas automatiskt i mitten av X- och Y -axeln. De d parameter står för diameter (du kan passera i radien istället om du föredrar). De h parameter är höjden. Något är fel här dock. Denna cylinder ser ganska 'blockig' ut. Du måste öka antalet ansikten ritade på omkretsen. Detta är enkelt att göra - lägg till följande parameter i din cylinderkod.

$fn = 100

Så cylinderdefinitionen blir:

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

Så här ser det ut:

Detta ökar antalet ansikten som behövs för att göra cirklar - 100 är en bra utgångspunkt. Tänk på att detta kommer att öka renderingstiden avsevärt, särskilt på komplexa modeller, så det är vanligtvis bäst att lämna detta tills du har designat klart.

Det är lätt att applicera transformationer på former. Du måste ringa till speciella metoder innan du skapar dina former. Så här roterar du cylindern med rotera metod:

rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder

Värdena överförs till till parameter representerar rotationsvinkeln för X-, Y- och Z -axeln. Här är resultatet:

En annan mycket användbar funktion är Översätt . Detta låter dig flytta objekt i 3D -rymden. Återigen måste du passera in mängden rörelse för varje axel. Här är resultatet:

Här är koden:

translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder

Att förstå Översätt metod är en av de viktigaste sakerna du kan göra. Det krävs för att designa mest komplexa mönster.

Slutligen är en annan användbar form a sfär :

Här är koden:

xbox -kontrollern ansluter inte till datorn
sphere(d = 100);

Precis som cylindern kan du jämna ut detta med $ fn kod ovan.

Avancerad kodning

Nu när du känner till grunderna, låt oss titta på några mer avancerade färdigheter. När du designar en del hjälper det att fundera över hur den kan byggas upp av mindre former och föremål. Du behöver inte göra detta, och du kan 'hitta på saker' när du går, men det hjälper att ha en grov plan - även om det bara är i ditt huvud.

Låt oss skapa en avancerad form: en kub med en ihålig sfärinredning. Skapa en kub och a sfär med Centrum inställt på sant. Subtrahera det ena med det andra med hjälp av skillnad metod:

difference() {
// subtraction
cube(size = [50, 50, 50], center = true); // outer cube
sphere(d = 65, center = true); // inner sphere
}

Här är resultatet:

Experimentera med diametern ( d parameter) i sfären och se vad som händer.

I OpenSCAD finns det vanligtvis många sätt att utföra samma uppgift. Om du vill ha ett spår i en kub, kan du subtrahera en annan kub från den eller lägga till ytterligare två ovanför den. Det spelar vanligtvis ingen roll på vilket sätt saker görs, men beroende på delens komplexitet kan det vara lättare att göra vissa manipulationer först.

Så här skapar du en kanal i en kub. Istället för att använda en annan kub kommer en cylinder att skapa en rundad kanal. Lägg märke till hur skillnad metoden används igen, och hur Översätt och rotera metoder används för att manipulera formerna. Använda rotera metoden gör ofta omvandlingar knepiga, så lek med parametrarna tills du uppnår önskat resultat. Här är koden:

difference() {
// subtraction
cube(size = [50, 150, 50]); // outer cube
translate(v = [25, 150, 50]) rotate(a = [90, 0, 0]) cylinder(d = 40, h = 150); // cylinder channel
}

Så här ser det ut:

Du kanske undrar vad alla gröna saker är. Detta är här eftersom 3D -modellen bara är en förhandsvisning just nu. För att åtgärda detta, tryck på F6 för att återge modellen fullt ut. Detta kan ta lite tid, beroende på komplexiteten. Förhandsgranskningen ( F5 ) är vanligtvis tillräckligt bra medan du arbetar. Så här ser den slutliga renderingen ut (med $ fn inställd på 100):

Här är ett annat avancerat exempel. Säg att du ville montera något med en bult. Att skapa ett hål är enkelt nog med cylinder , men tänk om du vill att bulthuvudet är monterat för försänkta bultar? Du kan helt enkelt skapa en stor cylinder för bulthuvudet att sitta i, men det skulle inte se särskilt snyggt ut. Lösningen är en fasning som du kan skapa med cylinder metod. Tricket här är att ange två diametrar - d1 och d2 . Gör dessa olika storlekar, så gör OpenSCAD resten.

Eftersom jag är brittisk kommer jag att använda metriska dimensioner här, för en M5 försänkt bult. Du kan enkelt justera detta så att det passar de fästen du vill använda. Här är koden:

$fn = 100;
// bolt settings
m5_clearance_diameter = 5.5;
m5_head_clearance_diameter = 11;
m5_head_depth = 5;
difference() {
// subtract
cube(20, 20, 20);
bolt_hole(10, 10, 20);
bolt_bevel(10, 10, 15);
}
module bolt_hole(x, y, height) {
/* M5 hole at 90 deg. */
translate(v = [x, y, 0]) cylinder(d = m5_clearance_diameter, h = height);
}
module bolt_bevel(x, y, z) {
// M5 bevel
translate(v = [x, y, z]) cylinder(d2 = m5_head_clearance_diameter, d1 = m5_clearance_diameter, h = m5_head_depth);
}

Lägg märke till hur bultdimensionerna lagras i variabler? Detta gör kodning och underhåll mycket enklare. En metod som du kanske inte har stött på än är modul . Detta låter dig definiera ett kodblock som ska köras när du vill. I verkligheten är detta en fungera . Du bör använda moduler och variabler för alla komplexa former, eftersom de gör det lättare att läsa och snabbare att göra några ändringar. Så här ser fasningen ut:

Låt oss titta på ett sista exempel. Säg att du ville skapa en serie hål runt en cirkel. Du kan mäta, översätta och rotera alla dessa manuellt, men även med moduler skulle det vara tråkigt. Här är slutresultatet, 10 cylindrar till och med fördelade runt en cirkel:

Här är koden:

$fn = 100;
number_of_holes = 10;
for(i = [1 : 360 / number_of_holes : 360]) {
// number_of_holes defines number of times this code runs
make_cylinder(i);
}
module make_cylinder(i) {
// make cylinder and even distribute
rotate([0, 0, i]) translate([10, 0, 0]) cylinder(h = 2, r = 2);
}

Denna kod är enklare än du kan förvänta dig. A för loop används för att ringa till gör_cylinder modul tio gånger. Eftersom det finns 360 grader i en cirkel och 360 /10 = 36, måste varje cylinder roteras i steg om 36 grader. Varje iteration av denna loop kommer att öka i variabel med 36. Denna loop kallar gör_cylinder modul, som helt enkelt drar en cylinder och placerar den i enlighet med de grader som passeras till den av öglan. Du kan dra mer eller mindre cylindrar genom att ändra antal_hål variabel - även om du kanske vill justera avståndet om du gör det. Så här ser 100 cylindrar ut, de överlappar något:

Exporterar

Nu när du vet hur du kodar i OpenScad krävs ett sista steg innan du kan skriva ut 3D -modellerna. Du måste exportera din design från OpenSCAD till standarden STL format som används av de flesta 3D -skrivare. lyckligtvis finns det en export till STL -knapp: Editor Meny > Överst till höger :

Det är det för idag. Du bör nu ha en utmärkt arbetskunskap om OpenSCAD - alla komplexa saker bygger på dessa grunder, och många komplexa former är verkligen många enkla former tillsammans.

För en utmaning, varför inte titta på några av våra 3D -utskriftsprojekt och försöka återskapa delarna i OpenSCAD:

Har du lärt dig några nya knep idag? Vilken är din favorit OpenSCAD -funktion? Kommer du att byta från ett annat CAD -verktyg snart? Låt oss veta i kommentarerna nedan!

Dela med sig Dela med sig Tweet E-post Så här får du tillgång till Googles inbyggda bubblanivå på Android

Om du någonsin har behövt se till att något är i nivå med en nypa, kan du nu få en bubbelnivå på din telefon på några sekunder.

Läs Nästa
Relaterade ämnen
  • DIY
  • Programmering
  • 3d-utskrivning
  • 3D -modellering
Om författaren Joe Coburn(136 artiklar publicerade)

Joe är utbildad i datavetenskap från University of Lincoln, Storbritannien. Han är en professionell mjukvaruutvecklare, och när han inte flyger drönare eller skriver musik kan han ofta hittas ta foton eller producera videor.

Mer från Joe Coburn

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera