diff --git a/preproto_bottom.scad b/preproto_bottom.scad new file mode 100644 index 0000000..9e8ebe1 --- /dev/null +++ b/preproto_bottom.scad @@ -0,0 +1,54 @@ +$fn = 64; + +radius = 7; +inner_radius = 5; +pcb_width = 150.7; +pcb_height = 64.1; +margin = 2; +thickness = 4; + +key_width = 9; +key_height = 6; +key_padding = 1; +key_margin = 1; + +difference() { + union() { + // base shape + hull() { + cylinder(h=thickness, r=radius); + translate([pcb_width+2*margin-2*radius,0,0]) cylinder(h=thickness, r=radius); + translate([0,pcb_height+2*margin-2*radius,0]) cylinder(h=thickness, r=radius); + translate([pcb_width+2*margin-2*radius,pcb_height+2*margin-2*radius,0]) cylinder(h=thickness, r=radius); + } + // nodges + translate([10, -radius, 0]) cylinder(h=thickness, d=10); + translate([(pcb_width+2*margin)/2-radius, -radius, 0]) cylinder(h=thickness, d=10); + translate([pcb_width+2*margin-2*radius-10, -radius, 0]) cylinder(h=thickness, d=10); + translate([10, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + translate([(pcb_width+2*margin)/2-radius, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + translate([pcb_width+2*margin-2*radius-10, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + } + // threaded inserts + translate([0,0,thickness-3]) { + translate([10, -radius-1.5, 0]) cylinder(h=3, d=3); + translate([(pcb_width+2*margin)/2-radius, -radius-1.5, 0]) cylinder(h=3, d=3); + translate([pcb_width+2*margin-2*radius-10, -radius-1.5, 0]) cylinder(h=3, d=3); + translate([10, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=4, d=3); + translate([(pcb_width+2*margin)/2-radius, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=4, d=3); + translate([pcb_width+2*margin-2*radius-10, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=3, d=3); + } + // usb hole + translate([82-radius,-radius-10,0]) cube([18, 20, thickness]); + + translate([0,0,thickness-1]) hull() { + cylinder(h=1, r=inner_radius); + translate([pcb_width-2*inner_radius,0,0]) cylinder(h=1, r=inner_radius); + translate([0,pcb_height-2*inner_radius,0]) cylinder(h=1, r=inner_radius); + translate([pcb_width-2*inner_radius,pcb_height-2*inner_radius,0]) cylinder(h=1, r=inner_radius); + } + + translate([0,-radius+margin,thickness-1-1.5]) cube([64,20,1.5]); + translate([75,-radius+margin,thickness-1-2]) cube([18,20,2]); + translate([0,0,thickness-1-1]) cube([13*key_width+12*key_padding+2*key_margin, 5*key_height+4*key_padding+2*key_margin, 1]); +} \ No newline at end of file diff --git a/preproto_top.scad b/preproto_top.scad new file mode 100644 index 0000000..f5f14f5 --- /dev/null +++ b/preproto_top.scad @@ -0,0 +1,35 @@ +$fn = 64; + +radius = 7; +pcb_width = 150.7; +pcb_height = 64.1; +margin = 2; +thickness = 1; + +difference() { + union() { + // base shape + hull() { + cylinder(h=thickness, r=radius); + translate([pcb_width+2*margin-2*radius,0,0]) cylinder(h=thickness, r=radius); + translate([0,pcb_height+2*margin-2*radius,0]) cylinder(h=thickness, r=radius); + translate([pcb_width+2*margin-2*radius,pcb_height+2*margin-2*radius,0]) cylinder(h=thickness, r=radius); + } + // nodges + translate([10, -radius, 0]) cylinder(h=thickness, d=10); + translate([(pcb_width+2*margin)/2-radius, -radius, 0]) cylinder(h=thickness, d=10); + translate([pcb_width+2*margin-2*radius-10, -radius, 0]) cylinder(h=thickness, d=10); + translate([10, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + translate([(pcb_width+2*margin)/2-radius, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + translate([pcb_width+2*margin-2*radius-10, pcb_height+2*margin-radius, 0]) cylinder(h=thickness, d=10); + } + // screw holes + translate([10, -radius-1.5, 0]) cylinder(h=thickness, d=2); + translate([(pcb_width+2*margin)/2-radius, -radius-1.5, 0]) cylinder(h=thickness, d=2); + translate([pcb_width+2*margin-2*radius-10, -radius-1.5, 0]) cylinder(h=thickness, d=2); + translate([10, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=thickness, d=2); + translate([(pcb_width+2*margin)/2-radius, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=thickness, d=2); + translate([pcb_width+2*margin-2*radius-10, pcb_height+2*margin-radius+1.5, 0]) cylinder(h=thickness, d=2); + // usb hole + translate([82-radius,-radius-10,0]) cube([18, 20, thickness]); +} \ No newline at end of file