Update character_retainer_ring.scad, cutouts.scad, fabula_enclosure.scad, and 3 more files
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
// Indents at height 4
|
// Indents at height 4
|
||||||
|
|
||||||
module retainer_spring() {
|
module retainer_spring() {
|
||||||
rotate_extrude(convexity = 10, angle = 120, $fn = 128)
|
rotate_extrude(convexity = 10, angle = 90, $fn = 128)
|
||||||
translate([22, 0, 0])
|
translate([22, 0, 0])
|
||||||
square([2, 10]);
|
square([2, 10]);
|
||||||
}
|
}
|
||||||
@@ -16,22 +16,61 @@ module character_retainer_ring() {
|
|||||||
// Body
|
// Body
|
||||||
cylinder(d = 59.5, h = 6);
|
cylinder(d = 59.5, h = 6);
|
||||||
cylinder(d = 40.5, h = 20, center = true);
|
cylinder(d = 40.5, h = 20, center = true);
|
||||||
// 5mm LED hole
|
|
||||||
//translate([0, 25, 0]) sphere(d = 5);
|
|
||||||
// Screw holes
|
// Screw holes
|
||||||
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);
|
||||||
translate([-25, 0, 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
|
// Retainer springs
|
||||||
rotate([0, 0, 30]) retainer_spring();
|
rotate([0, 0, 45]) retainer_spring();
|
||||||
rotate([0, 0, 210]) retainer_spring();
|
rotate([0, 0, 165]) retainer_spring();
|
||||||
|
rotate([0, 0, 285]) retainer_spring();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retainer bumps
|
// 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, 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();
|
//retainer_spring();
|
||||||
character_retainer_ring();
|
//character_retainer_ring();
|
||||||
|
//status_led_diffuser();
|
||||||
|
sdcard_access_port();
|
||||||
|
|||||||
@@ -26,15 +26,42 @@ module keycap() {
|
|||||||
|
|
||||||
module character_retainer_cutout() {
|
module character_retainer_cutout() {
|
||||||
$fn = 128;
|
$fn = 128;
|
||||||
|
screw_hole_diameter = 3;
|
||||||
// Ring cutout
|
// Ring cutout
|
||||||
cylinder(d = 60, h = 5);
|
cylinder(d = 60, h = 5);
|
||||||
// 5mm LED hole
|
|
||||||
translate([0, 25, 10]) cylinder(d = 5, h = 15, center = true);
|
|
||||||
// Screw holes
|
// Screw holes
|
||||||
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);
|
||||||
translate([-25, 0, 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();
|
//usb_cutout();
|
||||||
//speaker_grille();
|
//speaker_grille();
|
||||||
character_retainer_cutout();
|
//character_retainer_cutout();
|
||||||
|
//status_led_diffuser_cutout();
|
||||||
|
sdcard_access_port_cutout();
|
||||||
@@ -24,7 +24,10 @@ module fabula_enclosure_bottom() {
|
|||||||
translate([98.4, 29, 17]) rotate([0, -90, 0]) usb_cutout();
|
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();
|
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
|
// Speaker grille reinforcements
|
||||||
@@ -45,6 +48,9 @@ module fabula_enclosure_top() {
|
|||||||
translate([-66.1, -27.8, -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, 24.2, -16.2]) pcb_support(pcb_screw_size);
|
||||||
translate([64.1, -26.8, -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
|
// Cutouts
|
||||||
@@ -54,6 +60,7 @@ module fabula_enclosure_top() {
|
|||||||
translate([44.5, 23.5, -30]) keycap();
|
translate([44.5, 23.5, -30]) keycap();
|
||||||
translate([61, -2, -30]) keycap();
|
translate([61, -2, -30]) keycap();
|
||||||
translate([-50, 0, -30.5]) rotate([0, 0, 90]) character_retainer_cutout();
|
translate([-50, 0, -30.5]) rotate([0, 0, 90]) character_retainer_cutout();
|
||||||
|
translate([-10, -51, -10]) rotate([-90, 0, 0]) sdcard_access_port_cutout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
enclosure/oshw-logo-filled-black.svg
Normal file
2
enclosure/oshw-logo-filled-black.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.1 KiB |
@@ -27,3 +27,5 @@ module pcb_support(screw_diameter) {
|
|||||||
cylinder(d = screw_diameter, h = 18, center = true);
|
cylinder(d = screw_diameter, h = 18, center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
supports_charging_module();
|
||||||
|
|||||||
@@ -24,12 +24,10 @@ module test_fit_components() {
|
|||||||
|
|
||||||
// Components mounted on the external shell
|
// Components mounted on the external shell
|
||||||
translate([0, 50, 45]) character_retainer_ring();
|
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();
|
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 ? -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();
|
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
|
|
||||||
Reference in New Issue
Block a user