diff options
Diffstat (limited to 'mech/pcb_case/shell.scad')
-rw-r--r-- | mech/pcb_case/shell.scad | 68 |
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); } |