Thomas Huijzer

Slikveld 22
3311VT Dordrecht

+31 (0)6 - 52 18 06 31
thomas@thuijzer.nl
PGP key
Of contact me via Signal

IBAN: NL93INGB0006752359
KvK: 57865841
btw: NL181253240B02

user@thuijzer.nl:/home/blog/openscad_en_3d_prints_voor_een_tent/

OpenSCAD en 3D prints voor een tent

M'n zoontje vindt het erg leuk om 'tentjes te bouwen'. Natuurlijk moest pa daarom een 'echte' tent maken van PVC-pijp.
De koppelingen voor de pijp ontwierp ik in OpenSCAD.

OpenSCAD is een soort programmeertaal waarmee je 3D-modellen kan moduleren.
Je typt dat je een cilinder wilt en het programma maakt een 3D-cilinder voor je. Tekenen doe je dus niet zelf, maar eigenlijk geef je het programma opdracht om het voor je te tekenen.
Het mooie hiervan is dat je variabelen kan gebruiken en zo bepaalde eigenschappen, zoals hoogte of diameter, kan koppelen aan een variabele. Pas je de variabele aan, dan wordt het 3D-model volgens de nieuwe waarde getekend.

Het volgende voorbeeld tekent een cilinder van 50 mm hoog en een diameter van 14 mm:


cylinder(h= 50, r = 7);
OpenSCAD cylinder

Wanneer je het aantal segmenten dat OpenSCAD gebruikt te laag vindt, kan je de volgende variabele instellen om dit te wijzigen:


$fn = 100;
OpenSCAD cylinder

Met OpenSCAD kan je ook zogenaamde modules maken. Dat zijn stukjes code die herbruikbaar zijn.
Zo hebben verbindingsstukken voor de PCV-pijpen drie aansluitpunten die steeds gelijk zijn. Ik heb dus een module gemaakt die zo'n aansluitpunt tekent. Deze module wordt drie keer uitgevoerd, maar steeds anders geroteerd.

OpenSCAD module
OpenSCAD module
OpenSCAD module

Daarna in de hoek nog een bal toegevoegd als mooie ronde verbinding:


sphere(7);
OpenSCAD sphere

... en het model is klaar om te printen.

De uiteindelijke code:


radius = 7;
stopper = 1.2;
stopperHeight = 0.4;
height = 5;
rotation = 70;
$fn = 100;


module pole() {
    union() {
	     cylinder(h = radius * height * stopperHeight, r = radius * stopper);
	     cylinder(h = radius * height, r = radius);
    }
}

module support() {
    translate([radius * height * stopperHeight, -0.5, -radius * stopper]) {
        cube([radius * height * (1 - stopperHeight), 1, radius * stopper - radius]);
    }
    translate([radius * height -1, -2, -radius * stopper]) {
        cube([1, 4, radius * stopper - radius + 1]);
    }
}


union() {
    sphere(radius * stopper);
    rotate([0, 90, 0]) {
        pole();
    }
    rotate([0, 90 - rotation, 0]) {
        pole();
    }
    rotate([-90, 0, 0]) {
        pole();
    }
    support();
    rotate([0, 0, 90]) {
        support();
    }
}

En hier het resultaat geprint op m'n Ultimaker ('lage' kwaliteit).

OpenSCAD 3D print

Reacties


Plaats een reactie