163 lines
2.9 KiB
OpenSCAD
163 lines
2.9 KiB
OpenSCAD
$fn = 20;
|
|
e = 0.01;
|
|
s = [6, 16+5, 5];
|
|
t = 2;
|
|
os = [90, t, 7];
|
|
|
|
module mount() {
|
|
w = 1;
|
|
m = 2.5;
|
|
|
|
module holes() {
|
|
for (y=[m:m*2:s[1]-m]) {
|
|
translate([s[0]/2, y, -e])
|
|
cylinder(d=m+0.2, s[0]);
|
|
}
|
|
}
|
|
|
|
difference() {
|
|
cube(s);
|
|
// translate([w, -e, -e]) cube([s[0]-w*2, s[1]-w, w]);
|
|
translate([w, -e, s[2]-w+e]) cube([s[0]-w*2, s[1]-w, w]);
|
|
holes();
|
|
}
|
|
}
|
|
|
|
module bar() {
|
|
m = 3;
|
|
t = 2;
|
|
i = 20;
|
|
translate([0, s[1], 0]) {
|
|
difference() {
|
|
cube(os);
|
|
for (x = [os[2]-m, os[0]/2, os[0]-os[2]+m]) {
|
|
translate([x, -e, os[2]/2]) rotate(-90, [1, 0, 0]) cylinder(d=m, t*2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module assembly(mw) {
|
|
inset = (os[0]-mw-s[0])/2;
|
|
translate([inset, 0, 0]) {
|
|
mount();
|
|
translate([mw, 0, 0 ]) mount();
|
|
}
|
|
bar();
|
|
}
|
|
|
|
module front() {
|
|
assembly(51);
|
|
}
|
|
|
|
module back() {
|
|
assembly(40);
|
|
}
|
|
|
|
module cam() {
|
|
tol = 0.5;
|
|
lens = 7;
|
|
s = [59.5+tol, 41+tol, 24.5+lens];
|
|
t = 1.5;
|
|
r = 2;
|
|
extra = 20;
|
|
module outer() {
|
|
hull() {
|
|
translate([0, 0, s[2]/2-t])
|
|
cube([r*2, r*2, s[2]], center=true);
|
|
translate([s[0], 0, s[2]/2-t])
|
|
cube([r*2, r*2, s[2]], center=true);
|
|
translate([s[0], s[1], -t])
|
|
cylinder(r=r, h=s[2]);
|
|
translate([0, s[1], -t])
|
|
cylinder(r=r, h=s[2]);
|
|
}
|
|
}
|
|
module okbut() {
|
|
x = 6;
|
|
h = 12;
|
|
d = 14;
|
|
translate([x+d/2, s[1]-e, h]) {
|
|
rotate(-90, [1, 0, 0])
|
|
cylinder(d=d, extra);
|
|
translate([-d/2, 0, 0])
|
|
cube([d, d, extra]);
|
|
}
|
|
}
|
|
module bands() {
|
|
d = 3;
|
|
for (y = [s[1]/3, s[1]/3*2]) {
|
|
translate([-10, y, s[2]-lens]) {
|
|
rotate(90, [0, 1, 0])
|
|
cylinder(d=d, s[0]*2);
|
|
translate([0, -d/2, 0])
|
|
cube([s[0]*2, d, extra]);
|
|
}
|
|
}
|
|
}
|
|
module screen() {
|
|
u = [31, 24, extra];
|
|
translate([s[0]/2, 11+u[1]/2, 0])
|
|
cube(u+[t*2, t*2, 0], center=true);
|
|
}
|
|
module leds() {
|
|
u = [2, 12, extra];
|
|
translate([s[0]-t-2, 5, -t*2]) cube(u);
|
|
}
|
|
difference() {
|
|
outer();
|
|
cube(s+[0, 0, extra]);
|
|
okbut();
|
|
bands();
|
|
screen();
|
|
leds();
|
|
}
|
|
mw = 51;
|
|
// translate([0, 0, s[2]/2-5])
|
|
rotate(-5, [1, 0, 0]) {
|
|
translate([1, -22, 0]) {
|
|
mount();
|
|
translate([mw, 0, 0]) mount();
|
|
}
|
|
}
|
|
}
|
|
|
|
module cage() {
|
|
mw = 40;
|
|
h = 30;
|
|
r = 10;
|
|
os = [os[0], os[1], s[2]];
|
|
mount();
|
|
module outer() {
|
|
hull() {
|
|
translate([h, h-r, 0])
|
|
cylinder(r=r, os[2]);
|
|
translate([os[0]-h, h-r, 0])
|
|
cylinder(r=r, os[2]);
|
|
cube(os);
|
|
}
|
|
}
|
|
module holes() {
|
|
r = h/2-t*2;
|
|
r2 = r*6/10;
|
|
extra = 10;
|
|
translate([os[0]/2, r+t*2, -e])
|
|
cylinder(r=r, extra);
|
|
translate([os[0]/2-r*2, r2+t*2, -e])
|
|
cylinder(r=r2, extra);
|
|
translate([os[0]/2+r*2, r2+t*2, -e])
|
|
cylinder(r=r2, extra);
|
|
}
|
|
translate([mw, 0, 0]) mount();
|
|
translate([-os[0]/2+mw/2+s[0]/2, s[1], 0])
|
|
difference() {
|
|
outer();
|
|
holes();
|
|
}
|
|
}
|
|
|
|
cam();
|
|
//cage();
|
|
//back();
|
|
//front();
|