From 7d4d4fddf95f422426940171e37ba769b259cb49 Mon Sep 17 00:00:00 2001 From: Shy Date: Thu, 18 Jan 2024 13:20:00 +0100 Subject: [PATCH] Optional beveled edges. --- back.scad | 24 ++++++--- front.scad | 145 ++++++++++++++++++++++++++++------------------------- 2 files changed, 94 insertions(+), 75 deletions(-) diff --git a/back.scad b/back.scad index 6cf2dde..120078b 100644 --- a/back.scad +++ b/back.scad @@ -58,9 +58,12 @@ * side_recess = 4; */ -// Abgerundete Kanten. +// Abgerundete Außenkanten. rounded_edges = true; +// Abgeschrägte Außenkanten. +beveled_edges = false; + // Temporäre Stützstrukturen in den Bohrungen. support = false; @@ -433,7 +436,7 @@ module outer() { *************************************************************************/ module body_back() { - if (rounded_edges) { + if (rounded_edges || beveled_edges) { intersection() { union () { outer(); @@ -444,11 +447,18 @@ module body_back() { linear_extrude(height=1) { import("./svg/back hull.svg"); } - hull() { - $fn = $preview ? 4 : 16; - for (i = [1:5]) { - translate([0, 0, i - 1]) - cylinder(r=sin(i * (90/5)) * 2, h=top + space); + + $fn = $preview ? 4 : 16; + if (beveled_edges) { + // Abgeschrägte Kanten. + cylinder(h=top+space, r1=0.5, r2=(top+space)/2); + } else { + // Abgerundete Kanten. + hull() { + for (i = [1:5]) { + translate([0, 0, i - 1]) + cylinder(r=sin(i * (90/5)) * 2, h=top + space); + } } } } diff --git a/front.scad b/front.scad index a3aaa88..06e0aa3 100644 --- a/front.scad +++ b/front.scad @@ -46,9 +46,12 @@ include ; * Anschlag 7 mm von der Platine. */ -// Abgerundete Kanten. +// Abgerundete Außenkanten. rounded_edges = true; +// Abgeschrägte Außenkanten. +beveled_edges = false; + // Aussparungen für den linken Analog-Stick. analog_stick_l = true; @@ -263,74 +266,8 @@ module outer() { } } -} - -// Kleine Streben zwischen Decke und Rand. -module border_strut(width, length, height) { - x = width/2; - y = length/2; - - polyhedron(points = [ - [-x, -y, 0], - [x, -y, 0], - [x, y, 0], - [-x, y, 0], - [-x, y, height], - [x, y, height] - ], faces = [ - [0, 1, 2, 3], - [1, 5, 2], - [2, 5, 4, 3], - [3, 4, 0], - [0, 4, 5, 1] - ]); - -} - - -/************************************************************************* - * Die Hülle. * - *************************************************************************/ - -module casing_front() { - difference() { - if (rounded_edges) { - intersection() { - union () { - outer(); - } - - color(color_top) - minkowski() { - linear_extrude(height=1) { - import("./svg/front hull.svg"); - } - hull() { - $fn = $preview ? 4 : 16; - for (i = [1:5]) { - translate([0, 0, i - 1]) - cylinder(r=sin(i * (90/5)) * 2, h=top + space); - } - } - } - } - } else { - outer(); - } - - // Vergrößere das zu substrahierende Objekt, um Darstellungsfehler - // in der Voransicht zu vermeiden. - if ($preview) { - translate([0, 0, -0.1]) - resize([0, 0, top + struts + 0.4]) - top_cutouts(); - } else { - top_cutouts(); - } - } - // Zusätzliche Verstrebungen zwischen Decke und Rand. - if (rounded_edges) { + if (rounded_edges || beveled_edges) { color(color_struts) for (pos = [ // [x, y, rotation, länge] @@ -367,6 +304,78 @@ module casing_front() { } } +} + +// Kleine Streben zwischen Decke und Rand. +module border_strut(width, length, height) { + x = width/2; + y = length/2; + + polyhedron(points = [ + [-x, -y, 0], + [x, -y, 0], + [x, y, 0], + [-x, y, 0], + [-x, y, height], + [x, y, height] + ], faces = [ + [0, 1, 2, 3], + [1, 5, 2], + [2, 5, 4, 3], + [3, 4, 0], + [0, 4, 5, 1] + ]); + +} + + +/************************************************************************* + * Die Hülle. * + *************************************************************************/ + +module casing_front() { + difference() { + if (rounded_edges || beveled_edges) { + intersection() { + union () { + outer(); + } + + color(color_top) + minkowski() { + linear_extrude(height=1) { + import("./svg/front hull.svg"); + } + $fn = $preview ? 4 : 16; + if (beveled_edges) { + // Abgeschrägte Kanten. + cylinder(h=top+space, r1=0.5, r2=(top+space)/2); + } else { + // Abgerundete Kanten. + hull() { + for (i = [1:5]) { + translate([0, 0, i - 1]) + cylinder(r=sin(i * (90/5)) * 2, h=top + space); + } + } + } + } + } + } else { + outer(); + } + + // Vergrößere das zu substrahierende Objekt, um Darstellungsfehler + // in der Voransicht zu vermeiden. + if ($preview) { + translate([0, 0, -0.1]) + resize([0, 0, top + struts + 0.4]) + top_cutouts(); + } else { + top_cutouts(); + } + } + // Halterungen für die Aktionsbuttons. // Begrenzung nach oben. color(color_buttons)