47 lines
1.6 KiB
OpenSCAD
47 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);
|
||
|
}
|
||
|
}
|