Nybörjarhandbok till OpenSCAD: Programmering av 3D-skrivna modeller

3D-modelleringsprogram kan vara svårt att använda om du inte är konstnärlig. OpenSCAD ger dig möjlighet att designa modeller speciellt för 3D-utskrift, med inget annat än kod.

3D-modelleringsprogram kan vara svårt att använda om du inte är konstnärlig.  OpenSCAD ger dig möjlighet att designa modeller speciellt för 3D-utskrift, med inget annat än kod.
Annons

Har du alltid velat designa dina egna 3D-modeller? Hur är det med 3D-utskrift en del du har utformat? Det finns många 3D modelleringsprogram, men det kan vara svårt att använda om du inte är konstnärlig (som jag). OpenSCAD ger dig möjlighet att designa modeller speciellt för 3D-utskrift, med inget annat än kod . Oroa dig inte om du inte vet hur man kodar heller, idag guidar jag dig genom grunderna.

Vad är OpenSCAD?

OpenSCAD är en gratis Solid Computer Aided Design- modell. Den är tillgänglig för Windows, Mac och Linux. Vad som skiljer sig från många andra program är att du utformar delar med kod istället för 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 behöver redogöra för när 3D-utskriftsmodeller, men många av dessa gäller CAD-modeller i 3D i allmänhet, inte bara OpenSCAD-design. Om du vill veta mer om 3D-utskrift, ska du checka ut vår Ultimate Beginners Guide Ultimate Beginners Guide till 3D Printing Ultimate Beginners Guide till 3D Printing 3D-utskrift var den nya "Industrial Revolution". Det har inte övertaget världen än, men jag är här för att prata dig genom allt du behöver veta för att komma igång. Läs mer . Om du letar efter en mer interaktiv modell läser du guide för att skapa objekt i Sketchup Design & Build 3D Virtuella byggnader och objekt med Google SketchUp Design och bygga 3D virtuella byggnader och objekt med Google SketchUp Google SketchUp är backbone modelleringsprogram för Google BuildingMaker, som tillåter grafiska designers att skicka byggnadsdesign till Google för att läggas till den officiella Google Earth-bilderna. Läs mer .

Komma igång

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

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

OpenSCAD Startmeny

Detta visar de filer du öppnade förra och ger dig möjlighet att ladda några exempel. Titta gärna på några av exemplen, men jag hittade de här sakerna mer förvirrande när de började. För den här handledningen skapar du en ny fil genom att klicka på den nya knappen.

När du är öppen kommer du att presenteras med det här snygga gränssnittet:

OpenSCAD Interface

Detta är uppdelat i tre huvudområden. Till vänster är din redaktör och meny. Här kommer du att skriva din kod. Det här kommer inte att ha någon kod ännu, 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.

OpenSCAD Editor

Nederst till höger är konsolen . Detta kommer visa dig några fel vid byggandet av modellen.

OpenSCAD-konsolen

Det sista avsnittet är huvudgränssnittet längst upp 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 det).

OpenSCAD Interface

Det finns flera knappar längst ner i detta huvudgränssnitt. Dessa låter dig i första hand visa din design på olika sätt.

Fortsätt och spara en ny fil genom att trycka på Spara-knappen i redigeringsmenyn eller genom att gå till Arkiv > Spara .

Det grundläggande

Hur OpenSCAD fungerar mestadels är genom tillägg och subtraktion av enkla former. Du kan bygga väldigt komplexa modeller på så sätt, så låt oss hoppa rätt in.

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

OpenSCAD Simple Box

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

cube(); // create a cube 

För att få din kod att exekvera och bygga modellen måste du förhandsgranska den. OpenSCAD gör det som standard varje gång du sparar, eller du kan trycka på F5 för att tvinga en uppdatering. Experimentera med att flytta runt i 3D-rymden genom att hålla ner vänster eller höger musknapp.

Nu producerar detta en fin kub, men det är inte hemskt användbart utan några dimensioner. OpenSCAD fungerar inte i något visst mätningssystem, istället är enheterna alla relativt varandra. Du kan skapa en ruta 20 x 10, och det är upp till något annat program (som din 3D-utskriftsskärare) för att tolka dessa, vara det metriska eller kejserliga. Det ger faktiskt stor flexibilitet.

Låt oss lägga till några dimensioner i din kub. Du passerar detta i parametrar till kubmetoden :

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

Värdena 10, 20 och 30 representerar kubens storlek i X-, Y- och Z- axeln. Lägg märke till hur det här har skapat en mycket större rektangel:

OpenSCAD-rektangel

Som standard drar OpenSCAD komponenter från nedre vänstra. Du kan justera detta genom att ställa in mittparametern till sann . Här är koden för att göra det till rektangeln:

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

Och här ser det ut:

OpenSCAD-rektangel centrerad

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

Förflyttning till en mer komplex form, här är en cylinder :

OpenSCAD Cylinder

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

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

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

 $fn = 100 

Så blir cylinderdefinitionen:

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

Så här ser det ut:
OpenSCAD High Resolution Cylinder

Detta ökar antalet ansikten som behövs för att göra cirklar - 100 är en bra utgångspunkt. Tänk på att detta i hög grad ökar renderingstiderna, särskilt på komplexa modeller, så det är vanligtvis bäst att lämna ut det tills du är klar med att designa.

Det är enkelt att tillämpa transformationer på former. Du måste ringa speciella metoder innan du skapar dina former. Så här roterar du cylindern med rotationsmetoden :

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

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

OpenSCAD Rotation

En annan mycket användbar funktion är att översätta . Detta låter dig flytta objekt runt i 3D-utrymme. Återigen måste du passera i rörelsen för varje axel. Här är resultatet:

OpenSCAD Översätt

Här är koden:

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

Att förstå översättsmetoden är en av de viktigaste sakerna du kan göra. Det krävs för att utforma de flesta komplexa mönster.

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

OpenSCAD Sphere

Här är koden:

 sphere(d = 100); 

Precis som cylindern kan du släta ut det med hjälp av $ fn- koden ovan.

Avancerad kodning

Nu när du vet grunderna, låt oss titta på några mer avancerade färdigheter. Vid utformning av en del hjälper det att tänka på hur det kan bestå av mindre former och föremål. Du behöver inte göra detta, och du kan "göra saker" när du går, men det hjälper till 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är inuti. Skapa en kub och en sfär med mittpunkten satt till true. Subtrahera en från den andra med hjälp av skillnadsmetoden :

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

Här är resultatet:

OpenSCAD Advanced Cube

Experimentera med kärnans diameter ( d- parameter) och se vad som händer.

I OpenSCAD finns det oftast många sätt att uppnå samma uppgift. Om du ville ha ett spår i en kub, kan du subtrahera en annan kub från den, eller lägga till två över den. Det spelar vanligtvis ingen roll hur långt sakerna görs, men beroende på delens komplexitet kan det vara lättare att göra vissa manipuleringar först.

Så här skapar du en kanal i en kub. I stället för att använda en annan kub, skapar en rundad kanal med en cylinder. Lägg märke till hur skillnadsmetoden används igen, och hur översätt och rotera metoder används för att manipulera formerna. Genom att använda rotationsmetoden gör transformationerna ofta svåra, 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:

OpenSCAD Channel Cube

Du kanske undrar vad alla gröna grejer är. Detta är här eftersom 3D-modellen bara är en förhandsgranskning just nu. För att åtgärda detta, tryck på F6 för att göra modellen fullständigt. Det kan ta lite tid, beroende på komplexiteten. Förhandsgranskningen ( F5 ) är vanligtvis tillräckligt bra när du arbetar. Så här ser slutresultatet ut (med $ fn satt till 100):

OpenSCAD High Resolution Channel Cube

Här är ett annat avancerat exempel. Säg att du ville ha en montering med hjälp av en bult. Att skapa ett hål är enkelt nog med att använda cylindern, men vad händer om du vill att bulthuvudet ska monteras för nedsänkta bultar? Du kan helt enkelt skapa en stor cylinder för bulthuvudet att sitta i, men det skulle inte se väldigt fint ut. Lösningen är en avfasning, som du kan skapa med cylindermetoden . Tricket här är att ange två diametrar - d1 och d2 . Gör dessa olika storlekar, och OpenSCAD kommer att göra resten.

Som jag är brittisk, använder jag metriska dimensioner här, för en M5 försänkbar bult. Du kan enkelt justera detta så att det passar vilka fixningar 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 bultens dimensioner lagras i variabler? Detta gör kodning och underhåll mycket enklare. En metod som du kanske inte har stött på än är modulen . Det här låter dig definiera ett block av kod som ska utföras närhelst du vill. I verkligheten är detta en funktion . Du borde använda moduler och variabler för någon komplex form, eftersom de gör det enklare att läsa och snabbare för att göra några ändringar. Så här ser det ut som om chamferen ser ut:

OpenSCAD Chamfer

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

OpenSCAD Circle Distribution

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 vad du förväntar dig. A for loop används för att ringa make_cylinder modulen tio gånger. Eftersom det finns 360 grader i en cirkel och 360/10 = 36, behöver varje cylinder roteras i steg om 36 grader. Varje iteration av denna slinga ökar i- variabeln med 36. Den här slingan kallar makecylindemodulen, vilken helt enkelt drar en cylinder och placerar den enligt graderna som passerar den genom slingan. Du kan rita mer eller mindre cylindrar genom att ändra variabelnumret number_of_holes - även om du kanske vill justera avståndet om du gör det. Här är hur 100 cylindrar ser ut, de överlappar något:

OpenSCAD 100 Circle Distribution

exportera

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

OpenSCAD Export STL

Det är det för idag. Du borde nu ha en utmärkt kunskap om OpenSCAD - alla komplexa saker bygger på dessa fundament, och många komplexa former är verkligen många enkla former kombinerat.

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

  • 3D Printables för Tabletop Fantasy RPGs De bästa 3D Printables för Tabletop Fantasy RPGs De bästa 3D Printables för Tabletop Fantasy RPGs Om du föredrar en uppslukande upplevelse för rollspel, finns det en ny sätt att göra det: använd 3D-utskrift för att skapa fysiska terrängstycken och miniatyrer. Läs mer
  • Anpassade genvägsknappar Gör dina egna anpassade genvägsknappar med en Arduino Gör dina egna anpassade genvägsknappar med en Arduino Den ödmjuka Arduino kan göra många saker, men visste du att det kan emulera ett USB-tangentbord? Du kan kombinera långa tangentbordsgenvägar i en enda anpassad genvägsknapp, med denna enkla krets. Läs mer
  • Elektronisk D20 Roll in Style med denna DIY Electronic D20 Dys Roll i stil med denna DIY Electronic D20 Die Vill du ha något unikt vid din nästa spelmatch? Kolla in denna DIY elektroniska D20, med anpassad grafik för kritiska träffar och missar. Läs mer
  • Spel du kan 3D-utskrift 6 Kallaste spel Du kan 3D-utskrift hemma 6 Coolaste spel Du kan 3D-utskrift hemma Alla vet om 3D-skrivare, men vad du kanske inte vet är hur kul 3D-utskrift är och hur mycket kul det kan skapa för hela din familj Vi pratar 3D-skrivbordsbordsspel. Läs mer

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

In this article