summaryrefslogtreecommitdiff
path: root/mech/pcb_case/shell.scad
diff options
context:
space:
mode:
Diffstat (limited to 'mech/pcb_case/shell.scad')
-rw-r--r--mech/pcb_case/shell.scad68
1 files changed, 44 insertions, 24 deletions
diff --git a/mech/pcb_case/shell.scad b/mech/pcb_case/shell.scad
index 453100a..bb4c554 100644
--- a/mech/pcb_case/shell.scad
+++ b/mech/pcb_case/shell.scad
@@ -2,13 +2,15 @@ include <bolt.scad>
include <nut.scad>
include <panel.scad>
+use <conversion.scad>
use <rounded_cube.scad>
-module shell_base(dim, t) {
- radius = t;
+module shell_base(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
difference() {
// full body
- rounded_cube(dim, radius);
+ rounded_cube(dim=dim, radius=t);
// cut away upper half
translate([0,0,dim[2]/2])
@@ -16,16 +18,24 @@ module shell_base(dim, t) {
// main PCB space
translate([3*t, t, t])
- rounded_cube([dim[0]-6*t, dim[1]-2*t, dim[2]-2*t], radius);
+ rounded_cube([dim[0]-6*t, dim[1]-2*t, dim[2]-2*t], t);
// remove front and back
translate([0, 2*t, 2*t])
- rounded_cube([dim[0], dim[1]-4*t, dim[2]-4*t], radius);
+ rounded_cube([dim[0], dim[1]-4*t, dim[2]-4*t], t);
// panel holder
- for (x_off = [t, dim[0]-2*t]) {
- translate([x_off, t, t])
- rounded_cube([t+panel_dim_0_tol, dim[1]-2*t+panel_dim_1_2_tol, dim[2]-2*t+panel_dim_1_2_tol], radius);
+ for (x_off = [t-panel_dim_0_tol/2, dim[0]-2*t-panel_dim_0_tol/2]) {
+ translate([x_off, t-panel_dim_0_tol/2, t-panel_dim_0_tol/2]) {
+ rounded_cube(
+ [
+ t+panel_dim_0_tol,
+ dim[1]-2*t+panel_dim_1_2_tol,
+ dim[2]-2*t+panel_dim_1_2_tol
+ ],
+ t
+ );
+ }
}
// bolt drillings
@@ -37,7 +47,9 @@ module shell_base(dim, t) {
}
}
-module shell_connector(dim, t) {
+module shell_connector(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
size_x = dim[0]-6*t;
size_y = 2*nut_h;
size_z = dim[2]/2+3*bolt_ds;
@@ -65,32 +77,40 @@ module shell_connector(dim, t) {
echo(min_shell_bolt_length=t+size_y);
}
-module pcb_case_shell(dim, t, h, sockets) {
+module pcb_case_shell(pcb_dim, drillings, margins, t) {
difference () {
union() {
- shell_base(dim, t);
- shell_connector(dim, t);
- for (socket = sockets) {
- echo(socket=socket);
- translate([socket[0], socket[1], 0])
- cylinder(d=nut_d+2, h=h, $fn=30);
+ shell_base(pcb_dim, margins, t);
+ shell_connector(pcb_dim, margins, t);
+ for (drilling = drillings) {
+ translate([
+ 2*t+margins[0][0]+drilling[0],
+ t+2*nut_h+margins[1][0]+drilling[1],
+ 0
+ ]) cylinder(d=nut_d+2, h=t+margins[2][0], $fn=30);
}
}
- for (socket = sockets) {
- translate([socket[0], socket[1], 0]) {
- cylinder(d=bolt_ds+bolt_ds_tol, h=h, $fn=30);
+ for (drilling = drillings) {
+ translate([
+ 2*t+margins[0][0]+drilling[0],
+ t+2*nut_h+margins[1][0]+drilling[1],
+ 0
+ ]) {
+ cylinder(d=bolt_ds+bolt_ds_tol, h=t+margins[2][0], $fn=30);
cylinder(d=nut_d+nut_d_tol, h=nut_h, $fn=30);
}
}
}
}
-module pcb_case_shell_bottom(dim, t, h, sockets) {
- pcb_case_shell(dim, t, h, sockets);
+module pcb_case_shell_bottom(pcb_dim, drillings, margins, t) {
+ pcb_case_shell(pcb_dim, drillings, margins, t);
}
-module pcb_case_shell_top(dim, t) {
- translate([0,dim[1],dim[2]])
+module pcb_case_shell_top(pcb_dim, margins, t) {
+ dim = dim_pcb_to_case(pcb_dim, margins, t);
+
+ translate([0, dim[1], dim[2]])
rotate([180,0,0])
- pcb_case_shell(dim, t, 0, []);
+ pcb_case_shell(pcb_dim, [], margins, t);
}