OpenScad

OpenSCAD is een ontwerptool voor het tekenen van 3D objecten. De designs worden gemaakt door code te schrijven. De code lijkt heel erg op php en zal daarom waarschijnlijk snel vertrouwd aanvoelen. OpenSCAD wordt veel gebruikt door ontwerpers om onderdelen en prototypes te ontwerpen van modellen, om die vervolgens met een 3D-printer uit te kunnen printen. OpenSCAD is niet gericht op het maken van mooie 3D renders, daar gaan we later naar kijken, OpenSCAD is bedoeld om technische tekeningen te maken.

Leerdoelen

We willen je vooral laten zien wat je allemaal nog meer kunt met code en je een waardevol stuk gereedschap geven waarmee je, als je dat zou willen, verder zelf aan de slag kunt. Aan het einde van deze workshop heb je kennis gemaakt met een aantal manieren waarop je een probleem kunt benaderen in code.

Meedoen

Om mee te doen met de stapjes in deze les kun je het beste OpenSCAD even op je computer installeren. Er is ook een web interface, deze kun je voor nu ook even gebruiken. Het programma werkt prettiger.

OpenSCAD downloaden Webinterface gebruiken

Eerste stapjes

Er zijn verschillende manieren om tot een ontwerp te komen, vandaag gaan we als een soort beeldhouder te werk door ons ontwerp op te bouwen uit kleine bouwblokjes. Maten zijn in OpenSCAD altijd in millimeters.

Primitives

Primitives zijn basis bouwblokken van waaruit meer complexe vormen gemaakt kunnen worden door samen te voegen.

Soort object Omschrijving Voorbeeld
cube Een cubus cube([20,30,10]); // Een cubus, 20mm breed, 30mm lang, 10mm hoog
sphere Een bol sphere(d = 10); // een bol met een diameter van 10mm.
cylinder Een cylinder of kegel cylinder(d=100, h= 50); // een cylinder met een diameter van 100mm die 50mm hoog is.
polyhedron Een veelvlakkig object Zie documentatie

Neem de onderstaande code over en render door op F5 te drukken (of op play button als je webinterface gebruikt). Als het goed is zie je dan een kubus verschijnen, de afmetingen van de kubus zijn 20mm breed bij 30mm lang bij 10mm hoog.

1 2
//teken een cubus van 20 x 30 x 10 mm cube([20,30,10]);

Transformaties

Transformaties doen iets met een object, bijvoorbeeld het verplaatsen or draaien of uittrekken, spiegelen etc.

Verplaatsen

Met translate kun je een object verplaatsen.

1 2 3 4
translate([25,25,0]){ cube([50,50,40]); } cube([100,100,10]);

Resultaat

Booleaanse bewerkingen

Misschien heb je weleens gehoord van AND, NOT en OR, je hebt ze al veel gebruikt in elk geval want if then en else zijn er op gebaseerd.

Titel In het nederlands Operatie Uitleg
union Samenvoegen OR Maak een samengevoegd object van 2 of meer andere objecten en laat dat object de ruimte innemen van alle objecten die je er in hebt gezet
difference Aftrekken / Verschil NOT Haal alles van object 1 weg waar het overlapt met object 2, 3 et cetera
intersection Waar ze overlappen AND Laat alleen de stukken staan waar de objecten elkaar overlappen.

Union (samenvoegen)

Objecten samenvoegen kan met de union functie.

1 2 3 4 5
// Samenvoegen union(){ cube([100,100,10]); cube([50,50,40]); }

Resultaat

Difference (verschil, aftrekken)

Je kan objecten ook van elkaar aftrekken, hiervoor is de difference functie

1 2 3 4
difference(){ cube([50,50,40]); cube([100,100,10]); }

Resultaat

Intersect (waar ze overlappen)

Met intersection blijft alleen het stuk van een of meerdere objecten over waar overlap is.

1 2 3 4
intersection(){ cube([50,50,40]); cube([100,100,10]); }

Resultaat

Variabelen

Wanneer tekeningen complexer worden dan is het handiger om variabelen te gaan gebruiken voor afmetingen.

1 2 3 4 5
telefoonLengte = 165.22; telefoonBreedte = 75.73; telefoonDikte = 9.14; cube([telefoonLengte,telefoonBreedte,telefoonDikte]);

Resultaat

Modules

In OpenSCAD heb je modules en je hebt functies, modules lijken erg op functies PHP alleen return bestaat niet en ze heten module ipv function. Modules kun je hergebruiken en argumenten mee geven. Voor heel veel dingen zijn al modules beschikbaar libraries

Iterators

Ook in een ontwerp is het vaak handig om te kunnen loopen, OpenSCAD heeft daar verschillende functies voor. Loopen in OpenSCAD

Opdracht: Handvat + behuizing

Ontwerp een ergonomisch handvat waarin de electronica en eventueel de batterij kan worden verborgen.

Verborgen componenten

Component Afmeting
Micro controller 91mm x 19mm x 7.2m
LiION batterij 34,8mm x 16,6mm
USB-C 8,4mm x 2,6mm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
// Beginnetje / voorbeeld $fn = 100; module handvat(){ // Iets tekenen cylinder(h=110,d=22); } module ledssTick() { cylinder(h=130,d=16); } module assemblage(){ difference(){ handvat(); // Verplaatsen translate([0,0,90]){ ledssTick(); } } } assemblage();

Navigatie

« Programma Downloads »