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);  }  | 
