61 lines
1.8 KiB
OpenSCAD
61 lines
1.8 KiB
OpenSCAD
use <box.scad>
|
|
use <supports.scad>
|
|
use <cutouts.scad>
|
|
|
|
// FABULA open source storyteller enclosure
|
|
|
|
// TODO: open hardware logo, Fabula logo, move switch cutout, tag slot with led mount
|
|
|
|
box_cut_height = 10;
|
|
pcb_screw_size = 3;
|
|
|
|
module fabula_enclosure_bottom() {
|
|
difference() {
|
|
union() {
|
|
cap();
|
|
|
|
// Supports
|
|
translate([-30, 0, 19.1]) supports_speaker();
|
|
translate([28, 0, 14.1]) rotate([0, 180, 90]) supports_battery();
|
|
translate([70.4, 29, 18]) rotate([0, 0, 180]) supports_charging_module();
|
|
}
|
|
|
|
// 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([-65, -40, 25]) speaker_grille();
|
|
// TODO: lace hanger
|
|
}
|
|
|
|
// Speaker grille reinforcements
|
|
translate([-59, -40, 22.5]) {
|
|
for (i = [0 : 10]) {
|
|
translate([i*5.8, 0, 0]) cube([2, 80, 2]);
|
|
}
|
|
}
|
|
}
|
|
|
|
module fabula_enclosure_top() {
|
|
difference() {
|
|
union() {
|
|
box();
|
|
|
|
// Supports
|
|
translate([-66.1, 30.1, -16.2]) pcb_support(pcb_screw_size);
|
|
translate([-66.1, -27.8, -16.2]) pcb_support(pcb_screw_size);
|
|
translate([64.1, 24.2, -16.2]) pcb_support(pcb_screw_size);
|
|
translate([64.1, -26.8, -16.2]) pcb_support(pcb_screw_size);
|
|
}
|
|
|
|
// Cutouts
|
|
translate([90, 5, 10]) rotate([90, 0, 0]) rotate([0, 90, 0]) switch_cutout();
|
|
translate([20, 13.5, -30]) keycap();
|
|
translate([35.5, -12.5, -30]) keycap();
|
|
translate([44.5, 23.5, -30]) keycap();
|
|
translate([61, -2, -30]) keycap();
|
|
}
|
|
}
|
|
|
|
translate([0, -60, 0]) rotate([180, 0, 0]) fabula_enclosure_bottom();
|
|
translate([0, 60, 0]) fabula_enclosure_top();
|