Heb je altijd al je eigen 3D-modellen willen ontwerpen? Hoe zit het met 3D-printen van een onderdeel dat je hebt ontworpen? Er zijn veel 3D-modelleringsprogramma's in de buurt, maar deze kunnen moeilijk te gebruiken zijn als je niet artistiek bent (zoals ik). OpenSCAD biedt een manier voor u om modellen te ontwerpen die specifiek zijn voor 3D-printen, met alleen code . Maak je geen zorgen als je ook niet weet hoe je moet coderen, vandaag begeleid ik je door de basis.
Wat is OpenSCAD?
OpenSCAD is een gratis Solid Computer Aided Design- modelleerder. Het is beschikbaar voor Windows, Mac en Linux. Wat het anders maakt voor veel andere programma's, is dat je onderdelen ontwerpt met behulp van code in plaats van een muis. Dit maakt het heel eenvoudig om wiskundige berekeningen uit te voeren, dimensies op te slaan in variabelen, het formaat van onderdelen te wijzigen en meer.
Er zijn enkele factoren waarmee u rekening moet houden bij het afdrukken van 3D-modellen, maar veel van deze factoren zijn van toepassing op CAD-modellen met 3D-afdrukken in het algemeen, niet alleen op OpenSCAD-ontwerpen. Als je meer wilt weten over 3D-printen, bekijk dan onze Ultimate Beginners-gids Ultieme beginnershandleiding voor 3D-printen Ultieme beginnershandleiding voor 3D-printen 3D-printen moest de nieuwe 'industriële revolutie' zijn. Het heeft de wereld nog niet overgenomen, maar ik ben hier om je alles te vertellen wat je moet weten om te beginnen. Lees verder . Als u op zoek bent naar een meer interactieve modeller, lees dan de handleiding voor het maken van objecten in SketchUp Design & Build 3D Virtuele gebouwen en objecten met Google SketchUp Ontwerp en bouw 3D-virtuele gebouwen en objecten met Google SketchUp Google SketchUp is het backbone-modelleringsprogramma voor Google BuildingMaker, waarmee grafische ontwerpers bouwontwerpen kunnen indienen bij Google om te worden toegevoegd aan de officiële Google Earth-beelden. Lees verder .
Instellen
Ga eerst naar de downloadpagina en zoek een versie van OpenSCAD die geschikt is voor uw besturingssysteem. Ik gebruik Mac OS, maar deze OpenSCAD-principes zijn van toepassing op alle systemen.
Eenmaal geïnstalleerd, ga je gang en open het. Je krijgt dit opstartmenu te zien:
Dit toont u de bestanden die u het laatst hebt geopend en geeft u de mogelijkheid om enkele voorbeelden te laden. Kijk gerust wat van de voorbeelden, maar ik merkte dat het bij het eerste gebruik verwarrender werd. Maak voor deze zelfstudie een nieuw bestand door op de nieuwe knop te klikken.
Eenmaal geopend, krijgt u deze kale interface te zien:
Dit is opgesplitst in drie hoofdgebieden. Aan de linkerkant is je editor en menu. Hier zal je je code schrijven. Er is nog geen code in, omdat je een nieuw bestand aan het maken bent. Bovenaan staan enkele menuknoppen om basistaken uit te voeren, zoals laden, opslaan, ongedaan maken, enzovoort.
Rechtsonder is de console . Dit toont u eventuele fouten bij het bouwen van het model.
Het laatste deel is de hoofdinterface in de rechterbovenhoek. Hier kun je communiceren met je model, maar je kunt het hier niet bewerken (je schrijft hier code voor).
Er zijn verschillende knoppen onderaan deze hoofdinterface. Deze laten je vooral je ontwerp op verschillende manieren bekijken.
Ga je gang en bewaar een nieuw bestand door op de knop Opslaan te klikken in het editormenu of door te gaan naar Bestand > Opslaan .
De basis
De manier waarop OpenSCAD het grootste deel van de tijd werkt, is door het toevoegen en aftrekken van eenvoudige vormen. Je kunt op deze manier erg complexe modellen bouwen, dus laten we er meteen in springen.
Hier is de eerste vorm, een eenvoudige doos:
En hier is de code om dat te produceren:
cube(); // create a cube
Als u wilt dat uw code wordt uitgevoerd en het model wordt gemaakt, moet u er een voorbeeld van bekijken. OpenSCAD zal dit standaard doen elke keer dat u opslaat, of u kunt op F5 drukken om een vernieuwing te forceren. Experimenteer met bewegen in de 3D-ruimte door de linkermuisknop of rechtermuisknop ingedrukt te houden.
Dit levert een mooie kubus op, maar het is niet erg nuttig zonder dimensies. OpenSCAD werkt niet in een bepaald meetsysteem, in plaats daarvan zijn eenheden allemaal relatief ten opzichte van elkaar. Je kunt een doos van 20 x 10 maken, en het is aan elk ander programma (zoals je 3D-snijmachine) om deze te interpreteren, metrisch of imperiaal. Het biedt eigenlijk een grote flexibiliteit.
Laten we wat dimensies aan uw kubus toevoegen. Dit doet u door de parameters in de kubusmethode door te geven:
cube(size = [10, 20, 30]); // rectangle
De waarden 10, 20 en 30 vertegenwoordigen de grootte van de kubus in de X-, Y- en Z- as. Merk op hoe dit een veel grotere rechthoek heeft geproduceerd:
OpenSCAD tekent standaard componenten links onderaan. U kunt dit aanpassen door de middelste parameter in te stellen op true . Hier is de code om dit naar de rechthoek te doen:
cube(size = [10, 20, 30], center = true); // rectangle centered
En hier is hoe het eruit ziet:
Centrerende objecten werken goed voor eenvoudige vormen, maar het maakt de dingen ingewikkeld voor niet-symmetrische objecten. U moet beslissen welke methode het beste voor u werkt.
Op weg naar een meer complexe vorm, hier is een cilinder :
Hier is de code om het te maken:
cylinder(d = 10, h = 10, center = true); // cylinder
In tegenstelling tot kubussen worden cilinders automatisch in het midden van de X- en Y-as getrokken. De parameter d staat voor diameter (u kunt in plaats daarvan de straal doorgeven). De h- parameter is de hoogte. Er is hier echter iets mis. Deze cilinder ziet er nogal "blokkerig" uit. U moet het aantal gezichten op de omtrek vergroten. Dit is gemakkelijk te doen - voeg de volgende parameter toe aan uw cilindercode.
$fn = 100
Dus de cilinderdefinitie wordt:
cylinder(d = 10, h = 10, center = true, $fn = 100);
Dit is hoe dat eruit ziet:
Dit vergroot het aantal gezichten dat nodig is om cirkels te maken - 100 is een goed startpunt. Houd er rekening mee dat dit de rendering-tijden aanzienlijk zal verlengen, vooral bij complexe modellen, dus het is meestal het beste om dit weg te laten totdat u klaar bent met ontwerpen.
Het is gemakkelijk om transformaties op vormen toe te passen. U moet speciale methoden bellen voordat u uw vormen kunt maken. Zo kunt u de cilinder draaien met behulp van de rotate- methode:
rotate(a = [0, 90, 0]) cylinder(d = 10, h = 10, center = true); // rotated cylinder
De waarden die aan de a- parameter worden doorgegeven, vertegenwoordigen de rotatiehoek van de X-, Y- en Z-as. Dit is het resultaat:
Een andere zeer nuttige functie is vertalen . Hiermee kunt u objecten in de 3D-ruimte verplaatsen. Nogmaals, u moet de hoeveelheid beweging doorgeven voor elke as. Dit is het resultaat:
Hier is de code:
translate(v = [0, 25, 0]) cylinder(d = 10, h = 10, center = true); // translated cylinder
Het begrijpen van de vertaalmethode is een van de belangrijkste dingen die je kunt doen. Het is vereist voor het ontwerpen van de meest complexe ontwerpen.
Eindelijk, een andere bruikbare vorm is een bol :
Hier is de code:
sphere(d = 100);
Net als bij de cilinder kun je dit gladstrijken met de bovenstaande $ fn- code.
Geavanceerde codering
Nu je de basis kent, laten we eens kijken naar wat meer geavanceerde vaardigheden. Bij het ontwerpen van een onderdeel helpt het om na te denken over hoe het kan worden samengesteld uit kleinere vormen en objecten. Je hoeft dit niet te doen, en je kunt "dingen verzinnen" als je gaat, maar het helpt wel een ruw plan te hebben - zelfs als het alleen maar in je hoofd is.
Laten we een geavanceerde vorm creëren: een kubus met een uitgehold bol-interieur. Maak een kubus en een bol met het middelpunt op waar. Trek de ene van de andere af met behulp van de verschilmethode :
difference() { // subtraction cube(size = [50, 50, 50], center = true); // outer cube sphere(d = 65, center = true); // inner sphere }
Dit is het resultaat:
Experimenteer met de diameter ( d- parameter) van de bol en kijk wat er gebeurt.
In OpenSCAD zijn er meestal veel manieren om dezelfde taak uit te voeren. Als je een groef in een kubus wilt, kun je er nog een kubus van aftrekken, of twee erboven toevoegen. Het maakt meestal niet uit op welke manier dingen worden gedaan, maar afhankelijk van de complexiteit van het onderdeel, kan het eenvoudiger zijn om eerst bepaalde manipulaties uit te voeren.
U kunt als volgt een kanaal in een kubus maken. In plaats van een andere kubus te gebruiken, maakt het gebruik van een cilinder een afgerond kanaal. Merk op hoe de verschilmethode opnieuw wordt gebruikt en hoe de vertaal- en rotatiemethoden worden gebruikt om de vormen te manipuleren. Het gebruik van de rotate- methode maakt transformaties vaak lastig, dus speel met de parameters totdat u het gewenste resultaat bereikt. Hier is de code:
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 }
Dit is hoe dat eruit ziet:
Je vraagt je misschien af wat al die groene dingen zijn. Dit is hier omdat het 3D-model nu slechts een voorbeeld is. Om dit op te lossen, drukt u op F6 om het model volledig weer te geven. Dit kan enige tijd duren, afhankelijk van de complexiteit. Het voorbeeld ( F5 ) is meestal goed genoeg tijdens het werken. Dit is hoe de uiteindelijke render eruit ziet (met $ fn ingesteld op 100):
Hier is nog een geavanceerd voorbeeld. Stel dat je iets wilt monteren met een bout. Het maken van een gat is eenvoudig genoeg met een cilinder, maar wat als je de boutkop gelijkmatig op de verzonken bouten wilt laten monteren? Je zou eenvoudig een grote cilinder kunnen maken waar de boutkop in kan zitten, maar dat zou niet erg mooi zijn. De oplossing is een afschuining, die u kunt maken met de cilindermethode . De truc hier is om twee diameters op te geven - d1 en d2 . Maak deze verschillende formaten en OpenSCAD doet de rest.
Aangezien ik Brits ben, zal ik hier metrische dimensies gebruiken voor een M5 verzonken bout. U kunt dit eenvoudig aanpassen om te passen op alle bevestigingen die u wilt gebruiken. Hier is de code:
$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); }
Merk op hoe de boutafmetingen worden opgeslagen in variabelen? Dit maakt codering en onderhoud veel eenvoudiger. Een methode die je misschien nog niet tegenkomt, is module . Hiermee kunt u een codeblok definiëren dat moet worden uitgevoerd wanneer u maar wilt. In werkelijkheid is dit een functie . U moet modules en variabelen gebruiken voor elke complexe vorm, omdat ze de dingen gemakkelijker leesbaar maken en sneller wijzigingen aanbrengen. Dit is hoe de schuine kant eruit ziet:
Laten we een laatste voorbeeld bekijken. Stel dat je een reeks gaten rond een cirkel wilde maken. Je zou dit allemaal handmatig kunnen meten, vertalen en roteren, maar zelfs met modules zou dit vervelend zijn. Hier is het eindresultaat, 10 cilinders zelfs verdeeld rond een cirkel:
Hier is de code:
$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); }
Deze code is eenvoudiger dan je zou verwachten. Een for- lus wordt gebruikt om tien keer de make_cylinder- module aan te roepen. Omdat er 360 graden in een cirkel zijn en 360/10 = 36, moet elke cilinder in stappen van 36 graden worden geroteerd. Elke iteratie van deze lus verhoogt de i- variabele met 36. Deze lus roept de make_cylinder- module aan, die eenvoudig een cilinder trekt en positioneert volgens de graden die de lus eraan geeft. Je kunt meer of minder cilinders tekenen door de variabele number_of_holes te wijzigen - hoewel je de spatiëring misschien wilt aanpassen als je dat doet. Dit is hoe 100 cilinders er uit zien, ze overlappen elkaar enigszins:
Exporteren
Nu u weet hoe u in OpenScad moet coderen, is er nog een laatste stap nodig voordat u uw modellen in 3D kunt afdrukken. U moet uw ontwerp exporteren vanuit OpenSCAD naar het standaard STL- formaat dat door de meeste 3D-printers wordt gebruikt. gelukkig is er een export naar STL-knop: Editor Menu > Rechtsboven :
Dat is het voor vandaag. Je zou nu een uitstekende praktische kennis van OpenSCAD moeten hebben - al het complexe materiaal bouwt voort op deze basis, en veel complexe vormen zijn echt heel veel eenvoudige vormen gecombineerd.
Ga voor een uitdaging eens kijken naar enkele van onze 3D-afdrukprojecten en probeer de onderdelen opnieuw te maken in OpenSCAD:
- 3D-printables voor tafelblad-fantasy-RPG's De beste 3D-printables voor tafelblad-fantasy-RPG's De beste 3D-afdrukmogelijkheden voor tafelmodel Fantasy RPG's Als je de voorkeur geeft aan een meeslepende ervaring voor rollenspellen, is er een nieuwe manier om dit te doen: gebruik 3D-printen om fysieke terreinstukken te maken en miniaturen. Lees verder
- Aangepaste snelkoppelingen Maak je eigen aangepaste snelkoppelingen met een Arduino Maak je eigen aangepaste snelkoppelingen met een Arduino De nederige Arduino kan een heleboel dingen doen, maar wist je dat het een USB-toetsenbord kan emuleren? U kunt lange sneltoetsen combineren in een enkele aangepaste sneltoets, met deze eenvoudige schakeling. Lees verder
- Elektronische D20 Roll in stijl met deze DIY Elektronische D20 Die Roll in stijl met deze DIY Elektronische D20 Die Wilt u iets een beetje uniek in uw volgende game-meetup? Bekijk deze DIY elektronische D20, met aangepaste afbeeldingen voor kritieke hits en missers. Lees verder
- Games die u kunt printen 3D 6 coolste games die u thuis kunt printen 6 Coolste games waarmee u thuis 3D kunt printen Iedereen kent 3D-printers, maar wat u misschien niet weet, is hoe leuk 3D-printen is en hoeveel plezier het kan creëren voor uw hele familie. We hebben het over 3D-geprinte tafelspellen. Lees verder
Heb je vandaag nieuwe trucs geleerd? Wat is je favoriete OpenSCAD-functie? Ga je binnenkort overstappen van een andere CAD-tool? Laat het ons weten in de comments hieronder!