CAD/revocam/revocam.scad

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();