u23-gameconsole-body/edge.scad

46 lines
1.6 KiB
OpenSCAD

/*************************************************************************
* Hülle für die u23-Spielekonsole. *
* Funktionen zur Modifikation der Außenkanten. *
* *
* Author: Shy *
* License: CC0 *
*************************************************************************/
// Objekt, um abgerundete oder abgeschrägte Außenkanten zu "schneiden".
module edge_cutter(beveled, outline) {
minkowski() {
linear_extrude(height=0.1) {
import(outline);
}
$fn = $preview ? 4 : 16;
if (beveled) {
// Abgeschrägte Kanten.
cylinder(h=4, r1=1.5, r2=0);
} else {
// Abgerundete Kanten. Dafür generieren wir einen konkaven Kegel.
// Kurve der Kegelseite.
curve = $preview
? [1.34, 0.84, 0.46, 0.2, 0.05, 0]
: [1.34, 1.07, 0.84, 0.63, 0.46, 0.32, 0.2, 0.11, 0.05, 0.01, 0];
// Vertikale Auflösung.
v_step = $preview ? 1 : 0.5;
for (i = [0:len(curve)-2]) {
translate([0, 0, i*v_step])
cylinder(h=v_step, r1=curve[i], r2=curve[i+1]);
}
}
}
}
// Erzeugt abgerundete oder abgeschrägte Außenkanten.
module edge_modifier(beveled, outline) {
difference() {
children();
translate([0, 0, -0.1])
edge_cutter(beveled_edges, outline);
}
}