Beginnersgids voor OpenSCAD-programmering 3D-afgedrukte modellen
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 niets anders dan 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 modelbouwer. 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 te klikken nieuwe knop.
Eenmaal geopend, krijgt u deze kale interface te zien:
Dit is opgesplitst in drie hoofdgebieden. Aan de linkerkant is jouw 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 troosten. Dit toont u eventuele fouten bij het bouwen van het model.
Het laatste deel is het hoofdinterface in de rechterbovenhoek. Hier kunt u communiceren met uw model, maar u kunt het hier niet bewerken (u 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 in de bewerkingsmenu of door naar te gaan het dossier > 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:
kubus(); // maak een kubus
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 drukken F5 om een verversing 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. Je doet dit door de parameters door te geven aan de kubus methode:
kubus (grootte = [10, 20, 30]); // rechthoek
De waarden 10, 20, en 30 representeer 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 centrum parameter naar waar. Hier is de code om dit naar de rechthoek te doen:
kubus (grootte = [10, 20, 30], midden = waar); // rechthoek gecentreerd
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:
cilinder (d = 10, h = 10, midden = waar); // cilinder
anders kubussen, cilinders worden automatisch getekend in het midden van de X- en Y-as. De d parameter staat voor diameter (je kunt in plaats daarvan in de radius passeren als je dat liever hebt). De h parameter is de hoogte. Er is hier echter iets mis. Deze cilinder ziet er redelijk uit “blokkerig”. 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:
cilinder (d = 10, h = 10, midden = waar, $ 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 weergavetijden 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 draaien methode:
roteren (a = [0, 90, 0]) cilinder (d = 10, h = 10, midden = waar); // gedraaide cilinder
De waarden doorgegeven aan de een parameter 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 3D-ruimte verplaatsen. Nogmaals, u moet de hoeveelheid beweging doorgeven voor elke as. Dit is het resultaat:
Hier is de code:
transleren (v = [0, 25, 0]) cilinder (d = 10, h = 10, midden = waar); // vertaalde cilinder
Inzicht in de vertalen methode is een van de belangrijkste dingen die je kunt doen. Het is vereist voor het ontwerpen van de meest complexe ontwerpen.
Eindelijk, een andere nuttige vorm is een gebied:
Hier is de code:
bol (d = 100);
Net als de cilinder kunt u dit gladstrijken met de $ fn code hierboven.
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. U hoeft dit niet te doen, en u kunt het “dingen verzinnen” als je gaat, maar het helpt wel om een ruw plan te hebben - ook al zit het alleen in je hoofd.
Laten we een geavanceerde vorm creëren: een kubus met een uitgehold bol-interieur. Maak een kubus en een gebied met centrum ingesteld op waar. Trek de een van de ander af met behulp van de verschil methode:
difference () // aftrekkubus (size = [50, 50, 50], center = true); // buitenste kubusbol (d = 65, middelpunt = waar); // innerlijke bol
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 bepaalde manipulaties eerst 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. Let op hoe het verschil methode wordt opnieuw gebruikt, en hoe de vertalen en draaien methoden worden gebruikt om de vormen te manipuleren. De ... gebruiken draaien methode maakt transformaties vaak lastig, dus speel met de parameters totdat je het gewenste resultaat hebt bereikt. Hier is de code:
difference () // aftrekkubus (size = [50, 150, 50]); // translatie van de buitenste kubus (v = [25, 150, 50]) roteren (a = [90, 0, 0]) cilinder (d = 40, h = 150); // cilinderkanaal
Dit is hoe dat eruit ziet:
Je vraagt je misschien af wat alle groene dingen zijn. Dit is hier omdat het 3D-model nu slechts een voorbeeld is. Om dit op te lossen, druk je 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. Een gat maken is eenvoudig genoeg om te gebruiken cilinder, maar wat als u wilde dat de boutkop vlak voor verzonken bouten werd gemonteerd? 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 cilinder methode. 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; // boutinstellingen m5_clearance_diameter = 5,5; m5_head_clearance_diameter = 11; m5_head_depth = 5; difference () // kubus aftrekken (20, 20, 20); bolt_hole (10, 10, 20); bolt_bevel (10, 10, 15); module bolt_hole (x, y, height) / * M5-gat bij 90 graden. * / translate (v = [x, y, 0]) cilinder (d = m5_clearance_diameter, h = hoogte); module bolt_bevel (x, y, z) // M5 schuine translatie (v = [x, y, z]) cilinder (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 bent tegengekomen is module. Hiermee kunt u een codeblok definiëren dat moet worden uitgevoerd wanneer u maar wilt. In werkelijkheid is dit een functie. Je zou ... moeten gebruiken modules en variabelen 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 definieert het aantal keren dat deze code make_cylinder (i) uitvoert; module make_cylinder (i) // cilinder maken en zelfs verdelen roteren ([0, 0, i]) transleren ([10, 0, 0]) cilinder (h = 2, r = 2);
Deze code is eenvoudiger dan je zou verwachten. EEN voor lus wordt gebruikt om het te bellen make_cylinder module tien keer. 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 ik variabele door 36. Deze lus roept de make_cylinder module, die eenvoudig een cilinder trekt en positioneert volgens de graden die de lus eraan geeft. Je kunt meer of minder cilinders tekenen door het number_of_holes variabele - hoewel u de spatiëring mogelijk wilt aanpassen als u dit 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 vanuit OpenSCAD exporteren naar de 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 die u thuis kunt printen 3D 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!
Ontdek meer over: 3D-modellering, 3D-printen.