Update character_retainer_ring.scad, cutouts.scad, fabula_enclosure.scad, and 3 more files

This commit is contained in:
2026-01-13 00:33:03 +01:00
parent e95e0a1625
commit 9adba435c7
6 changed files with 96 additions and 21 deletions

View File

@@ -4,7 +4,7 @@
// Indents at height 4
module retainer_spring() {
rotate_extrude(convexity = 10, angle = 120, $fn = 128)
rotate_extrude(convexity = 10, angle = 90, $fn = 128)
translate([22, 0, 0])
square([2, 10]);
}
@@ -16,22 +16,61 @@ module character_retainer_ring() {
// Body
cylinder(d = 59.5, h = 6);
cylinder(d = 40.5, h = 20, center = true);
// 5mm LED hole
//translate([0, 25, 0]) sphere(d = 5);
// Screw holes
translate([25, 0, 0]) cylinder(d = screw_hole_diameter, h = 6, center = true);
translate([-25, 0, 0]) cylinder(d = screw_hole_diameter, h = 6, center = true);
translate([0, -25, 0]) cylinder(d = screw_hole_diameter, h = 6, center = true);
rotate([0, 0, 120]) translate([0, -25, 0]) cylinder(d = screw_hole_diameter, h = 6, center = true);
rotate([0, 0, 240]) translate([0, -25, 0]) cylinder(d = screw_hole_diameter, h = 6, center = true);
// Retainer springs
rotate([0, 0, 30]) retainer_spring();
rotate([0, 0, 210]) retainer_spring();
rotate([0, 0, 45]) retainer_spring();
rotate([0, 0, 165]) retainer_spring();
rotate([0, 0, 285]) retainer_spring();
}
// Retainer bumps
rotate([0, 0, -30]) translate ([20.25, 0, 4]) sphere(d = 2);
rotate([0, 0, 90]) translate ([20.25, 0, 4]) sphere(d = 2);
rotate([0, 0, 270]) translate ([20.25, 0, 4]) sphere(d = 2);
rotate([0, 0, 210]) translate ([20.25, 0, 4]) sphere(d = 2);
}
module status_led_diffuser() {
$fn = 32;
// Diffuser
hull() {
translate([0, -13, 0]) cylinder(d = 10, h = 13);
translate([15, 13, 0]) cylinder(d = 10, h = 13);
translate([-15, 13, 0]) cylinder(d = 10, h = 13);
}
difference() {
// Flange
cube([50, 40, 2], true);
// Mounting holes
translate([-18, -5, 0]) cylinder(d = 3, h = 3, center = true);
translate([18, -5, 0]) cylinder(d = 3, h = 3, center = true);
}
}
module sdcard_access_port() {
$fn = 32;
difference() {
union() {
translate([-12, -7.5, 0]) cube([24, 15, 8]);
// Flange
hull() {
translate([15, 0, 0]) cylinder(d = 20, h = 2);
translate([-15, 0, 0]) cylinder(d = 20, h = 2);
}
// Text
translate([6, -3, -0.9]) linear_extrude(height = 1) rotate([0, 180, 0]) text("SD", size = 6);
}
// Mounting holes
translate([16, 0, -1]) cylinder(d = 3, h = 10);
translate([-16, 0, -1]) cylinder(d = 3, h = 10);
}
}
//retainer_spring();
character_retainer_ring();
//character_retainer_ring();
//status_led_diffuser();
sdcard_access_port();

View File

@@ -26,15 +26,42 @@ module keycap() {
module character_retainer_cutout() {
$fn = 128;
screw_hole_diameter = 3;
// Ring cutout
cylinder(d = 60, h = 5);
// 5mm LED hole
translate([0, 25, 10]) cylinder(d = 5, h = 15, center = true);
// Screw holes
translate([25, 0, 10]) cylinder(d = screw_hole_diameter, h = 15, center = true);
translate([-25, 0, 10]) cylinder(d = screw_hole_diameter, h = 15, center = true);
translate([0, -25, 10]) cylinder(d = screw_hole_diameter, h = 15, center = true);
rotate([0, 0, 120]) translate([0, -25, 10]) cylinder(d = screw_hole_diameter, h = 15, center = true);
rotate([0, 0, 240]) translate([0, -25, 10]) cylinder(d = screw_hole_diameter, h = 15, center = true);
}
module status_led_diffuser_cutout() {
$fn = 32;
// Diffuser
hull() {
translate([0, -13.2, 0]) cylinder(d = 10.2, h = 13);
translate([15.2, 13.2, 0]) cylinder(d = 10.2, h = 13);
translate([-15.2, 13.2, 0]) cylinder(d = 10.2, h = 13);
}
}
module sdcard_access_port_cutout() {
$fn = 32;
union() {
translate([-13, -8.5, 0]) cube([26, 17, 8]);
// Flange
hull() {
translate([15, 0, 0]) cylinder(d = 21, h = 2);
translate([-15, 0, 0]) cylinder(d = 21, h = 2);
}
// Screw holes
translate([16, 0, -1]) cylinder(d = 2, h = 10);
translate([-16, 0, -1]) cylinder(d = 2, h = 10);
}
}
//usb_cutout();
//speaker_grille();
character_retainer_cutout();
//character_retainer_cutout();
//status_led_diffuser_cutout();
sdcard_access_port_cutout();

View File

@@ -24,7 +24,10 @@ module fabula_enclosure_bottom() {
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
translate([75, 55, 16]) rotate([90, 0, 0]) cylinder(d = 3, h = 20, $fn = 4);
// Logos
translate([60, -10, 28.1]) linear_extrude(height = 1, center = true) rotate([0, 0, 90]) scale([0.10, 0.10, 0.10]) import("oshw-logo-filled-black.svg");
}
// Speaker grille reinforcements
@@ -45,6 +48,9 @@ module fabula_enclosure_top() {
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);
// Url
translate([-80, -42, -22.5]) linear_extrude(height = 1.5, center = true) text("git.ichibi.eu/penguin86/Fabula", size = 6);
}
// Cutouts
@@ -54,6 +60,7 @@ module fabula_enclosure_top() {
translate([44.5, 23.5, -30]) keycap();
translate([61, -2, -30]) keycap();
translate([-50, 0, -30.5]) rotate([0, 0, 90]) character_retainer_cutout();
translate([-10, -51, -10]) rotate([-90, 0, 0]) sdcard_access_port_cutout();
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -27,3 +27,5 @@ module pcb_support(screw_diameter) {
cylinder(d = screw_diameter, h = 18, center = true);
}
}
supports_charging_module();

View File

@@ -24,12 +24,10 @@ module test_fit_components() {
// Components mounted on the external shell
translate([0, 50, 45]) character_retainer_ring();
//translate([24, 0, 38]) rotate([0, 0, -90]) status_led_diffuser();
translate([51, 10, 30]) rotate([90, 0, 0]) rotate([0, 270, 0]) sdcard_access_port();
}
//test_fit_components();
//translate([0, 0, explode_view ? -20 : 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) fabula_enclosure_bottom();
test_fit_components();
translate([0, 0, explode_view ? -20 : 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) fabula_enclosure_bottom();
translate([0, 0, explode_view ? 100 : 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) fabula_enclosure_top();
//DEBUG
//translate([0, 50, 45]) character_retainer_ring();
//DEBUG