187 lines
6.6 KiB
OpenSCAD
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
} |