From 540d2c96b1df2325d09caccac3a60da0bc217fe8 Mon Sep 17 00:00:00 2001 From: Daniele Verducci Date: Sun, 4 Jan 2026 23:54:37 +0100 Subject: [PATCH] Speaker grille --- enclosure/cutouts.scad | 9 +++++- enclosure/fabula_enclosure.scad | 10 +++++- enclosure/speaker_grille.svg | 55 +++++++++++++++++++++++++++++++++ enclosure/test_fit.scad | 2 +- 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 enclosure/speaker_grille.svg diff --git a/enclosure/cutouts.scad b/enclosure/cutouts.scad index 7d1b980..7a04883 100644 --- a/enclosure/cutouts.scad +++ b/enclosure/cutouts.scad @@ -14,5 +14,12 @@ module switch_cutout() { cube([14.2, 12.2, 30], true); } +module speaker_grille() { + linear_extrude(height = 10, center = true) { + import("speaker_grille.svg"); + } +} -//usb_cutout(); \ No newline at end of file + +//usb_cutout(); +speaker_grille(); \ No newline at end of file diff --git a/enclosure/fabula_enclosure.scad b/enclosure/fabula_enclosure.scad index d1ea38f..65d2eea 100644 --- a/enclosure/fabula_enclosure.scad +++ b/enclosure/fabula_enclosure.scad @@ -21,9 +21,17 @@ module fabula_enclosure_bottom() { // Cutouts translate([98.4, 29, 17]) rotate([0, -90, 0]) usb_cutout(); - translate([90, 5, 10]) rotate([90, 0, 0]) rotate([0, 90, 0]) #switch_cutout(); + translate([90, 5, 10]) rotate([90, 0, 0]) rotate([0, 90, 0]) switch_cutout(); + translate([-65, -40, 25]) speaker_grille(); // TODO: Speaker cutout, lace hanger, switch cutout } + + // Speaker grille reinforcements + translate([-68, -40, 22.5]) { + for (i = [1 : 14]) { + translate([i*5, 0, 0]) cube([2, 80, 2]); + } + } } module fabula_enclosure_top() { diff --git a/enclosure/speaker_grille.svg b/enclosure/speaker_grille.svg new file mode 100644 index 0000000..32dc5f2 --- /dev/null +++ b/enclosure/speaker_grille.svg @@ -0,0 +1,55 @@ + + + + + + + + + + diff --git a/enclosure/test_fit.scad b/enclosure/test_fit.scad index 6443779..07ab211 100644 --- a/enclosure/test_fit.scad +++ b/enclosure/test_fit.scad @@ -22,4 +22,4 @@ module test_fit_components() { test_fit_components(); translate([0, 0, 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) fabula_enclosure_bottom(); -//translate([0, 0, 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) #fabula_enclosure_top(); \ No newline at end of file +translate([0, 0, 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) #fabula_enclosure_top(); \ No newline at end of file