diff options
author | xengineering <me@xengineering.eu> | 2023-12-22 21:34:32 +0100 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2024-01-02 14:24:06 +0100 |
commit | 8184bf87fab1eb415807eba8250af0b812205106 (patch) | |
tree | cab3bda42cf3dcecfe78b774197be2baaa03f312 /mech/pcb_case.scad | |
parent | ac348c4044e6252da91de247d77484509677cca0 (diff) | |
download | soundbox-8184bf87fab1eb415807eba8250af0b812205106.tar soundbox-8184bf87fab1eb415807eba8250af0b812205106.tar.zst soundbox-8184bf87fab1eb415807eba8250af0b812205106.zip |
mech: Move generic PCB case to own subdirectory
This should be more decoupled because it is not specific to soundbox. It
might be later extracted to a library repository.
Diffstat (limited to 'mech/pcb_case.scad')
-rw-r--r-- | mech/pcb_case.scad | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/mech/pcb_case.scad b/mech/pcb_case.scad deleted file mode 100644 index bbfe9bc..0000000 --- a/mech/pcb_case.scad +++ /dev/null @@ -1,112 +0,0 @@ -// A generic parametric PCB case - -nut_h = 3; -nut_d = 4.15; -nut_r = nut_d / 2; -bolt_d = 3; -bolt_r = bolt_d / 2; - -module rounded_cube(dim, radius) { - range_y = [radius, dim[1]-radius]; - range_z = [radius, dim[2]-radius]; - height = dim[0]; - - hull() { - for (y=range_y, z=range_z) { - translate([0,y,z]) rotate([0,90,0]) cylinder(r=radius, h=height); - } - } -} - -module shell_base(dim, t) { - radius = t; - difference() { - rounded_cube(dim, radius); - translate([0,0,dim[2]/2]) - cube([dim[0], dim[1], dim[2]/2]); - translate([3*t, t, t]) - rounded_cube([dim[0]-6*t, dim[1]-2*t, dim[2]-2*t], radius); - translate([0, 2*t, 2*t]) - rounded_cube([dim[0], dim[1]-4*t, dim[2]-4*t], radius); - for (x_off = [t, dim[0]-2*t]) { - translate([x_off, t, t]) - rounded_cube([t, dim[1]-2*t, dim[2]-2*t], radius); - } - for (x = [dim[0]/4, dim[0]-dim[0]/4]) { - translate([x,0,dim[2]/2-1.5*bolt_d]) - rotate([-90,0,0]) - cylinder(r=bolt_r, h=1.1*t); - } - } -} - -module shell_connector(dim, t) { - size_x = dim[0]-6*t; - size_y = 2*nut_h; - size_z = dim[2]/2+3*bolt_d; - - difference () { - // base body - translate([3*t,dim[1]-t-size_y,0]) - cube([size_x,size_y,size_z]); - - // bolt holes - for (x = [dim[0]/4, dim[0]-dim[0]/4]) { - translate([x,dim[1]-t,dim[2]/2+1.5*bolt_d]) - rotate([90,0,0]) - cylinder(r=bolt_r, h=size_y); - } - - // nut holes - for (x = [dim[0]/4, dim[0]-dim[0]/4]) { - translate([x,dim[1]-t-size_y,dim[2]/2+1.5*bolt_d]) - rotate([-90,0,0]) - cylinder(r=nut_r, h=nut_h); - } - } - - echo(min_shell_bolt_length=t+size_y); -} - -module pcb_case_shell(dim, t, h, sockets) { - difference () { - union() { - shell_base(dim, t); - shell_connector(dim, t); - for (socket = [0:len(sockets)-1]) { - translate([sockets[socket][0], sockets[socket][1], 0]) - cylinder(d=nut_d+2, h=h); - } - } - for (socket = [0:len(sockets)-1]) { - translate([sockets[socket][0], sockets[socket][1], 0]) { - cylinder(d=bolt_d, h=h); - cylinder(d=0.9*nut_d, h=nut_h); - } - } - } -} - -module pcb_case_shell_bottom(dim, t, h, sockets) { - pcb_case_shell(dim, t, h, sockets); -} - -module pcb_case_shell_top(dim, t) { - translate([0,dim[1],dim[2]]) - rotate([180,0,0]) - pcb_case_shell(dim, t, 0, []); -} - -module pcb_case_panel(dim, t) { - rounded_cube([t,dim[1]-2*t,dim[2]-2*t], t); -} - -module pcb_case_panel_back(dim, t) { - translate([t,t,t]) - pcb_case_panel(dim, t); -} - -module pcb_case_panel_front(dim, t) { - translate([dim[0]-2*t,t,t]) - pcb_case_panel(dim, t); -} |