109 lines
2.5 KiB
OpenSCAD
109 lines
2.5 KiB
OpenSCAD
w = 47.5;
|
|
h = 25;
|
|
d = 28.5;
|
|
t=1.5;
|
|
|
|
usbw = 8;
|
|
usbh = 3.5;
|
|
usbl = 1;
|
|
|
|
mdw = 25.7;
|
|
|
|
ss = 4;
|
|
ps = 4;
|
|
|
|
module box() {
|
|
difference() {
|
|
cube([w+2*t, d+2*t, h+2*t], center=true);
|
|
cube([w, d, h], center=true);
|
|
}
|
|
}
|
|
|
|
module topSlice() { translate([0,0,h/2]) cube([w+2*t+1, d+2*t+2, h], center=true); }
|
|
module bottomSlice() { translate([0,0,-h/2]) cube([w+2*t+1, d+2*t+2, h], center=true); }
|
|
|
|
module ports() {
|
|
module usb() {
|
|
// cube([usbw, usbh, t+2], center = true);
|
|
d1 = 11;
|
|
d2 = 9;
|
|
difference() {
|
|
cube([usbw, t+2, usbh], center = true);
|
|
translate([(usbw/2+usbw/d1), 0, (usbh/2+usbw/d1)]) rotate([0, 45, 0]) cube([3, t+2, usbh], center = true);
|
|
translate([-(usbw/2+usbw/d1), 0, (usbh/2+usbw/d1)]) rotate([0, -45, 0]) cube([3, t+2, usbh], center = true);
|
|
translate([(usbw/2+usbw/d2), 0, -(usbh/2+usbw/d2)]) rotate([0, -45, 0]) cube([3, t+2, usbh], center = true);
|
|
translate([-(usbw/2+usbw/d2), 0, -(usbh/2+usbw/d2)]) rotate([0, 45, 0]) cube([3, t+2, usbh], center = true);
|
|
}
|
|
}
|
|
translate([w/2-1, d/6, -8]) rotate([0, 90, 0]) cylinder(r=6.2/2, h=t+2, $fn=32);
|
|
translate([w/2-1, -d/6, -8]) rotate([0, 90, 0]) cylinder(r=6.2/2, h=t+2, $fn=32);
|
|
translate([-(w/2-mdw/2), d/2+t/2, -(h/2-(usbh/2)-usbl)]) usb();
|
|
}
|
|
|
|
module divider() {
|
|
translate([mdw-(w/2-t/2), 0, -(h/2-(h/6))]) cube([t, d, h/3], center=true);
|
|
}
|
|
|
|
module pegs() {
|
|
translate([(w/2-ps/2), (d/2-ps/2), -h/10]) cube([ps, ps, h-h/10], center=true);
|
|
translate([(w/2-ps/2), -(d/2-ps/2), -h/10]) cube([ps, ps, h-h/10], center=true);
|
|
|
|
translate([mdw-(w/2-t/2)+t/2+ps/2, (d/2-ps/2), -h/10]) cube([ps, ps, h-h/10], center=true);
|
|
translate([mdw-(w/2-t/2)+t/2+ps/2, -(d/2-ps/2), -h/10]) cube([ps, ps, h-h/10], center=true);
|
|
}
|
|
|
|
module indicators() {
|
|
translate([w/2+t/2, 0, 8]) slit();
|
|
translate([w/2+t/2, -2, 8]) slit();
|
|
translate([w/2+t/2, 2, 8]) slit();
|
|
}
|
|
|
|
module symbols() {
|
|
translate([w/2+t, -(d/2-(d/10)), -8]) one();
|
|
translate([w/2+t, (d/2-(d/10)), -8]) zero();
|
|
}
|
|
|
|
module zero() {
|
|
rotate([0, 90, 0]) linear_extrude(height=1, center=true) circle(r=ss/2, $fn=32);
|
|
}
|
|
|
|
module one() {
|
|
cube([1, 1, ss], center=true);
|
|
}
|
|
|
|
module slit() {
|
|
cube([2*t, 1, ss], center=true);
|
|
}
|
|
|
|
module top() {
|
|
difference() {
|
|
box();
|
|
bottomSlice();
|
|
indicators();
|
|
}
|
|
}
|
|
|
|
module bottom() {
|
|
union() {
|
|
difference() {
|
|
box();
|
|
topSlice();
|
|
ports();
|
|
symbols();
|
|
}
|
|
pegs();
|
|
divider();
|
|
}
|
|
}
|
|
|
|
module enclosure() {
|
|
translate([0,-(d/2+(d/6)),(h/2+t)]) rotate([180, 0, 0]) top();
|
|
translate([0,(d/2+(d/6)),(h/2+t)]) bottom();
|
|
|
|
//translate([0,0,(h/2+t)]) rotate([180, 0, 0]) top();
|
|
//bottom
|
|
}
|
|
|
|
enclosure();
|
|
|