Optional beveled edges.

This commit is contained in:
Shy 2024-01-18 13:20:00 +01:00
parent 1932345e0b
commit 7d4d4fddf9
2 changed files with 94 additions and 75 deletions

View file

@ -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,8 +447,14 @@ module body_back() {
linear_extrude(height=1) {
import("./svg/back hull.svg");
}
hull() {
$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);
@ -453,6 +462,7 @@ module body_back() {
}
}
}
}
} else {
outer();
}

View file

@ -46,9 +46,12 @@ include <colors.scad>;
* 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)