Better pcb approximation
This commit is contained in:
@@ -1,2 +1,18 @@
|
|||||||
// The cutouts to allow external components (such as buttons and connectors) to be mounted on the box
|
// The cutouts to allow external components (such as buttons and connectors) to be mounted on the box
|
||||||
|
|
||||||
|
// 4056-based li-ion charging module
|
||||||
|
module usb_cutout() {
|
||||||
|
hull() {
|
||||||
|
translate([0, -3, 0]) cylinder(h=11, d=8);
|
||||||
|
translate([0, 3, 0]) cylinder(h=11, d=8);
|
||||||
|
translate([0, 0, 12]) cube([3, 8.9, 2], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 14x12mm rocker switch with 21x15mm flange
|
||||||
|
module switch_cutout() {
|
||||||
|
cube([14, 12, 11], true); // WIP
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//usb_cutout();
|
||||||
@@ -9,14 +9,19 @@ use <cutouts.scad>
|
|||||||
box_cut_height = 10;
|
box_cut_height = 10;
|
||||||
|
|
||||||
module fabula_enclosure_bottom() {
|
module fabula_enclosure_bottom() {
|
||||||
cap();
|
difference() {
|
||||||
|
union() {
|
||||||
|
cap();
|
||||||
|
|
||||||
// Supports
|
// Supports
|
||||||
translate([-30, 0, 19.1]) supports_speaker();
|
translate([-30, 0, 19.1]) supports_speaker();
|
||||||
translate([28, 0, 14.1]) rotate([0, 180, 90]) supports_battery();
|
translate([28, 0, 14.1]) rotate([0, 180, 90]) supports_battery();
|
||||||
translate([70.4, 29, 18]) rotate([0, 0, 180]) #supports_charging_module();
|
translate([70.4, 29, 18]) rotate([0, 0, 180]) supports_charging_module();
|
||||||
|
}
|
||||||
|
|
||||||
// Cutouts
|
// Cutouts
|
||||||
|
translate([98.4, 29, 17]) rotate([0, -90, 0]) usb_cutout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module fabula_enclosure_top() {
|
module fabula_enclosure_top() {
|
||||||
|
|||||||
@@ -44,22 +44,44 @@ module switch() {
|
|||||||
translate([0, 0, 6]) rotate([0, 15, 0]) cube([12, 10, 5], true);
|
translate([0, 0, 6]) rotate([0, 15, 0]) cube([12, 10, 5], true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cherry MX (compatible) mechanical keyboard switch, i.e. Gatheron Blue
|
||||||
|
module mechanical_switch() {
|
||||||
|
// Body
|
||||||
|
cube([15.5, 15.5, 11.5], true);
|
||||||
|
// Stem
|
||||||
|
translate([0, 0, (11.5 + 3.5) / 2]){
|
||||||
|
cube([1, 3.8, 3.5], true);
|
||||||
|
cube([3.8, 1, 3.5], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Mainboard. The highest component is the capacitor with a total height of 18mm, but we round to 20 for good measure.
|
// Mainboard. The highest component is the capacitor with a total height of 18mm, but we round to 20 for good measure.
|
||||||
module pcb() {
|
module pcb() {
|
||||||
translate([0, 0, -10]) {
|
// Board
|
||||||
linear_extrude(height = 20) {
|
translate([-77.89 / 2 - 19.20, -148.35 / 2 - 49.71, 0]) {
|
||||||
hull() {
|
linear_extrude(height = 1.4) {
|
||||||
/*
|
difference() {
|
||||||
Center svg
|
hull() {
|
||||||
Bounding box:
|
/*
|
||||||
Min: 19.20, 49.71
|
Center svg
|
||||||
Max: 97.09, 198.06
|
Bounding box:
|
||||||
Size: 77.89, 148.35
|
Min: 19.20, 49.71
|
||||||
*/
|
Max: 97.09, 198.06
|
||||||
translate([-77.89 / 2 - 19.20, -148.35 / 2 - 49.71, 0]) import("pcb.svg");
|
Size: 77.89, 148.35
|
||||||
|
*/
|
||||||
|
import("pcb.svg");
|
||||||
|
}
|
||||||
|
import("pcb.svg");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Keys
|
||||||
|
translate([-13.4, -20.1, 11.5/2 + 1.4]) mechanical_switch();
|
||||||
|
translate([-23.4, -44.6, 11.5/2 + 1.4]) mechanical_switch();
|
||||||
|
translate([12.6, -35.6, 11.5/2 + 1.4]) mechanical_switch();
|
||||||
|
translate([2.05, -61.05, 11.5/2 + 1.4]) mechanical_switch();
|
||||||
|
// Box to account for the other various components
|
||||||
|
translate([-28, 4, 0]) cube([53, 70, 18]);
|
||||||
}
|
}
|
||||||
|
|
||||||
module battery_18650() {
|
module battery_18650() {
|
||||||
@@ -70,5 +92,6 @@ module battery_18650() {
|
|||||||
//speaker_80();
|
//speaker_80();
|
||||||
//li_ion_4056_charger_module();
|
//li_ion_4056_charger_module();
|
||||||
//switch();
|
//switch();
|
||||||
//pcb();
|
pcb();
|
||||||
//battery_18650();
|
//battery_18650();
|
||||||
|
//mechanical_switch();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ use <fabula_enclosure.scad>
|
|||||||
module test_fit_components() {
|
module test_fit_components() {
|
||||||
// Internal components
|
// Internal components
|
||||||
translate([0, 30, 0]) speaker_80();
|
translate([0, 30, 0]) speaker_80();
|
||||||
translate([0, 0, 35]) pcb();
|
translate([0, 0, 26]) pcb();
|
||||||
translate([0, -28, 9]) rotate([0, 90, 0]) battery_18650();
|
translate([0, -28, 9]) rotate([0, 90, 0]) battery_18650();
|
||||||
|
|
||||||
// Components that require cutout on external shell
|
// Components that require cutout on external shell
|
||||||
@@ -16,5 +16,5 @@ module test_fit_components() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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_bottom();
|
||||||
//translate([0, 0, 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) #fabula_enclosure_top();
|
//translate([0, 0, 20]) rotate([0, 0, -90]) rotate([180, 0, 0]) #fabula_enclosure_top();
|
||||||
Reference in New Issue
Block a user