board/case/case_bottom_3d-print.scad

187 lines
6.6 KiB
OpenSCAD

$fn=30;
BOARD_WIDTH=96.5;
BOARD_HEIGHT=96.0;
BOARD_THICKNESS=1.6;
HOLE_NW_X=4.0;
HOLE_NW_Y=4.0;
HOLE_NE_X=92.5;
HOLE_NE_Y=4.0;
HOLE_SW_X=4.0;
HOLE_SW_Y=92.0;
HOLE_SE_X=92.5;
HOLE_SE_Y=92.0;
WALL_SPACE=1.0;
WALL_THICKNESS=2.0;
HOLE_HEIGHT=15.0; // USB A is 14.5
module pillar() {
translate([0,0,HOLE_HEIGHT/2]) {
difference() {
cylinder(h=HOLE_HEIGHT, d=6, center=true);
cylinder(h=HOLE_HEIGHT, d=3.5, center=true);
}
}
}
mirror([1,0,0]) { // we used bottom view
// bottom plate
cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS]);
// screw mounts
translate([WALL_THICKNESS+WALL_SPACE+HOLE_NW_X,WALL_THICKNESS+WALL_SPACE+HOLE_NW_Y,WALL_THICKNESS]) {
pillar();
}
translate([WALL_THICKNESS+WALL_SPACE+HOLE_NE_X,WALL_THICKNESS+WALL_SPACE+HOLE_NE_Y,WALL_THICKNESS]) {
pillar();
}
translate([WALL_THICKNESS+WALL_SPACE+HOLE_SW_X,WALL_THICKNESS+WALL_SPACE+HOLE_SW_Y,WALL_THICKNESS]) {
pillar();
}
translate([WALL_THICKNESS+WALL_SPACE+HOLE_SE_X,WALL_THICKNESS+WALL_SPACE+HOLE_SE_Y,WALL_THICKNESS]) {
pillar();
}
// side
MARGIN=1.0;
USB_B_WIDTH=12.0+MARGIN;
USB_B_HEIGHT=11.0+MARGIN;
USB_A_WIDTH=7.0+MARGIN;
USB_A_HEIGHT=14.5+MARGIN;
BARREL_WIDTH=9.0+MARGIN;
BARREL_HEIGHT=11.3+MARGIN;
INDUCTOR_HEIGHT=7.5;
// side north
difference() {
cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]);
// DFP 7 USB A
translate([WALL_THICKNESS+WALL_SPACE+12.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 7 BARREL
translate([WALL_THICKNESS+WALL_SPACE+28-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
// DFP 6 USB A
translate([WALL_THICKNESS+WALL_SPACE+40.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 6 BARREL
translate([WALL_THICKNESS+WALL_SPACE+56-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
// DFP 5 USB A
translate([WALL_THICKNESS+WALL_SPACE+68.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 5 BARREL
translate([WALL_THICKNESS+WALL_SPACE+84-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
}
// side west
difference() {
cube([WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]);
// USB B
translate([0,WALL_THICKNESS+WALL_SPACE+48-USB_B_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-USB_B_HEIGHT]) {
cube([WALL_THICKNESS,USB_B_WIDTH,USB_B_HEIGHT]);
}
// 5V BARREL
translate([0,WALL_THICKNESS+WALL_SPACE+33-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]);
}
// 12V BARREL
translate([0,WALL_THICKNESS+WALL_SPACE+63-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]);
}
}
// side south
translate([0,BOARD_HEIGHT+WALL_THICKNESS+2*WALL_SPACE,0]) {
difference() {
cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]);
// DFP 1 USB A
translate([WALL_THICKNESS+WALL_SPACE+27.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 1 BARREL
translate([WALL_THICKNESS+WALL_SPACE+12-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
// DFP 2 USB A
translate([WALL_THICKNESS+WALL_SPACE+55.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 2 BARREL
translate([WALL_THICKNESS+WALL_SPACE+40-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
// DFP 3 USB A
translate([WALL_THICKNESS+WALL_SPACE+83.5-USB_A_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([USB_A_WIDTH,WALL_THICKNESS,USB_A_HEIGHT]);
}
// DFP 3 BARREL
translate([WALL_THICKNESS+WALL_SPACE+68-BARREL_WIDTH/2,0,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([BARREL_WIDTH,WALL_THICKNESS,BARREL_HEIGHT]);
}
}
}
// side east
translate([BOARD_WIDTH+WALL_THICKNESS+2*WALL_SPACE,0,0]) {
difference() {
cube([WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]);
// DFP 4 USB A
translate([0,WALL_THICKNESS+WALL_SPACE+40.5-USB_A_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-USB_A_HEIGHT]) {
cube([WALL_THICKNESS,USB_A_WIDTH,USB_A_HEIGHT]);
}
// DFP 4 BARREL
translate([0,WALL_THICKNESS+WALL_SPACE+56-BARREL_WIDTH/2,WALL_THICKNESS+HOLE_HEIGHT-BARREL_HEIGHT]) {
cube([WALL_THICKNESS,BARREL_WIDTH,BARREL_HEIGHT]);
}
}
}
// top plate
SWITCH_WIDTH=3.0+0.5;
SWITCH_LENGTH=6.0+0.5;
translate([0,0,WALL_THICKNESS+HOLE_HEIGHT+BOARD_THICKNESS+INDUCTOR_HEIGHT]) {
difference() {
cube([BOARD_WIDTH+2*WALL_SPACE+2*WALL_THICKNESS, BOARD_HEIGHT+2*WALL_SPACE+2*WALL_THICKNESS, WALL_THICKNESS]);
// DFP 7
translate([WALL_THICKNESS+WALL_SPACE+20.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
// DFP 6
translate([WALL_THICKNESS+WALL_SPACE+48.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
// DFP 5
translate([WALL_THICKNESS+WALL_SPACE+76.0, WALL_THICKNESS+WALL_SPACE+6.7,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
// DFP 4
translate([WALL_THICKNESS+WALL_SPACE+89.7, WALL_THICKNESS+WALL_SPACE+48.0,WALL_THICKNESS/2]) {
cube([SWITCH_LENGTH, SWITCH_WIDTH, WALL_THICKNESS], center=true);
}
// DFP 3
translate([WALL_THICKNESS+WALL_SPACE+76.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
// DFP 2
translate([WALL_THICKNESS+WALL_SPACE+48.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
// DFP 1
translate([WALL_THICKNESS+WALL_SPACE+20.0, WALL_THICKNESS+WALL_SPACE+89.3,WALL_THICKNESS/2]) {
cube([SWITCH_WIDTH, SWITCH_LENGTH, WALL_THICKNESS], center=true);
}
}
}
}