mcopy/scad/mitchell_mount.scad

261 lines
9.7 KiB
OpenSCAD

use <./common/common.scad>;
IN = 25.4;
RailsSpacing = 160;
RailsD = 22.25;
CarriageX = 134;
CarriageY = 106.22;
CarriageZ = 20;
BoltsX = 70.8;
BoltsY = 92.25;
BoltD = 5.25;
BoltsOffsetX = 41.3 + 3;
MitchellY = (8 + (13/16)) * IN;
BolexBaseZ = 38;
BolexFrameZ = 107;
module debug_bolt (pos = [0, 0, 0]) {
translate(pos) cylinder(r = R(BoltD), h = CarriageZ + 1, center = true, $fn = 40);
}
module debug_rails (Length = 200) {
translate([RailsSpacing / 2, 0, 0]) rotate([90, 0, 0]) cylinder(r = R(RailsD), h = Length, center = true, $fn = 60);
translate([-RailsSpacing / 2, 0, 0]) rotate([90, 0, 0]) cylinder(r = R(RailsD), h = Length, center = true, $fn = 60);
}
module debug_bolts (pos = [0, 0, 0]) {
translate(pos) {
debug_bolt([BoltsX / 2, BoltsY / 2, 0]);
debug_bolt([BoltsX / 2, -BoltsY / 2, 0]);
debug_bolt([-BoltsX / 2, BoltsY / 2, 0]);
debug_bolt([-BoltsX / 2, -BoltsY / 2, 0]);
}
}
module debug_jk_carriage (pos = [0, 0, 0]) {
translate(pos) difference () {
cube([CarriageX, CarriageY, CarriageZ], center = true);
cube([107, 76, CarriageZ + 1], center = true);
//bolts
debug_bolts([(-BoltsX / 2) + BoltsOffsetX, 0, 0]);
}
}
module debug_mitchell (pos = [0, 0, 0]) {
translate(pos) {
difference () {
union () {
echo("Mitchell Y", (8 + (13/16)) * IN);
cube([148.7, MitchellY, 10], center = true);
}
translate([0, (MitchellY / 2) - 94.5, 0]) cylinder(r = R(9.6), h = 10 + 1, center = true, $fn = 30);
}
translate([-57.25, MitchellY / 2, (112.7 - (10)) / 2]) cube([1, 1, 112.7], center = true);
translate([-57.25, (MitchellY / 2) - (10 / 2), 112.7 - (10 / 2)]) cube([16, 10, 7.49], center = true);
}
}
module debug_tester () {
difference () {
cube([BoltsX + 15, BoltsY + 15, 10], center = true);
cube([BoltsX - 15, BoltsY - 15, 10 + 1], center = true);
debug_bolts();
}
}
module debug_bolex_base (pos = [0, 0, 0]) {
translate(pos) {
cube([CarriageX - 40, CarriageY, BolexBaseZ], center = true);
}
}
module debug_bolex_frame (pos = [0, 0, 0]) {
translate(pos) {
cube([10, 10, BolexFrameZ], center = true);
}
}
module long_cylinder (r, h, l, $fn = 60) {
translate([-l / 2, 0, 0]) cylinder(r = r, h = h, center = true, $fn = $fn);
cube([l, r * 2, h], center = true);
translate([l / 2, 0, 0]) cylinder(r = r, h = h, center = true, $fn = $fn);
}
module carriage_bolt (pos = [0, 0, 0]) {
translate(pos) {
cylinder(r = R(BoltD), h = 100, center = true, $fn = 40);
translate([0, 0, 45]) m5_nut(100);
}
}
module m5_nut (h = 4) {
hex(9.15, h);
}
module m5_bolt (pos = [0, 0, 0]) {
translate(pos) {
cylinder(r = R(BoltD), h = 100, center = true, $fn = 40);
translate([0, 0, -50]) cylinder(r = R(9), h = 100, center = true, $fn = 40);
}
}
module mitchell_mount (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
difference () {
union () {
cube([200, 200, 33], center = true);
translate([20, 0, 0]) cube([200, 200, 33], center = true);
translate([0, 0, -19]) cube([105, 74, 33], center = true);
}
//trim side
translate([-170, 0, 0]) cube([200, 200 + 1, 33 + 1], center = true);
//center camera bolt
translate([58 - 11, 2, 0]) {
long_cylinder(r = R(10), h = 33 + 1, l = 5, $fn = 40);
translate([0, 0, -10]) long_cylinder(r = R(22), l = 5, h = 33, $fn = 80);
translate([0, 0, -20]) long_cylinder(r = R(22), h = 33, l = 5, $fn = 80);
}
//remove corner
translate([(-105 / 2) + (15 / 2) - 0.01, (74 / 2) - (15 / 2) + .01, -33]) cube([15, 15, 33], center = true);
//voids for threaded rods
translate([105 / 2, 0, -33 - 4]) rotate([90, 0, 0]) cylinder(r = R(20), h = 100, center = true, $fn = 40);
translate([-105 / 2, 0, -33 - 4]) rotate([90, 0, 0]) cylinder(r = R(20), h = 100, center = true, $fn = 40);
//carriage bolts
translate([6 + 3, 0, 0]) {
carriage_bolt([BoltsX / 2, BoltsY / 2, 0]);
carriage_bolt([BoltsX / 2, -BoltsY / 2, 0]);
carriage_bolt([-BoltsX / 2, BoltsY / 2, 0]);
carriage_bolt([-BoltsX / 2, -BoltsY / 2, 0]);
}
//bottom lock bolts
carriage_bolt([40 / 2, 40 / 2, -15]);
carriage_bolt([40 / 2, -40/ 2, -15]);
carriage_bolt([-40 / 2, 40 / 2, -15]);
carriage_bolt([-40 / 2, -40 / 2, -15]);
//material saver voids
translate([0, 0, -20]) rotate([0, 0, 45]) cube([30, 30, 60], center = true);
translate([25, 75, -10]) intersection () {
difference () {
cube([150, 35, 33], center = true);
cube([150 + 1, 5, 33 + 1], center = true);
}
union () {
translate([-80, 0, 0]) for (i = [0 : 8]) {
translate([i * 40, 0, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([(i * 40) + 20, 20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([(i * 40) + 20, -20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
}
}
}
translate([25, -75, -10]) intersection () {
difference () {
cube([150, 35, 33], center = true);
cube([150 + 1, 5, 33 + 1], center = true);
}
union () {
translate([-80, 0, 0]) for (i = [0 : 8]) {
translate([i * 40, 0, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([(i * 40) + 20, 20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([(i * 40) + 20, -20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
}
}
}
translate([95, 0, -10]) intersection () {
difference () {
cube([35, 100, 33], center = true);
cube([5, 150 + 1, 33 + 1], center = true);
}
union () {
translate([0, -80, 0]) for (i = [0 : 8]) {
translate([0, i * 40, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([20, (i * 40) + 20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
translate([-20, (i * 40) + 20, 0]) rotate([0, 0, 45]) cube([25, 25, 33], center = true);
}
}
}
translate([(-140 / 2) + 10, 130 / 2, 0]) rotate([180, 0, 0]) carriage_bolt();
translate([(-140 / 2) + 10, -130 / 2, 0]) rotate([180, 0, 0]) carriage_bolt();
translate([(-140 / 2) + 10, 180 / 2, 10]) rotate([0, 90, 0]){
m5_nut();
cylinder(r = R(BoltD), h = 25, center = true, $fn = 30);
translate([-20, 0, 0]) cube([40, 8, 4], center = true);
}
translate([(-140 / 2) + 10, 180 / 2, -10]) rotate([0, 90, 0]){
m5_nut();
cylinder(r = R(BoltD), h = 25, center = true, $fn = 30);
translate([20, 0, 0]) cube([40, 8, 4], center = true);
}
//voids in back for rails set screws
ScrewVoidX1 = 15.5; //TODO
ScrewVoidX2 = 124; //TODO
ScrewVoidX = 18;
ScrewVoidY = 47;
ScrewVoidZ = 10;
translate([(-145 /2) + ScrewVoidX1, (-200 / 2) + (ScrewVoidY / 2) - 0.1 , (-33 / 2) + (ScrewVoidZ / 2) - 0.1]) cube([ScrewVoidX, ScrewVoidY, ScrewVoidZ], center = true);
translate([(-145 /2) + ScrewVoidX2, (-200 / 2) + (ScrewVoidY / 2) - 0.1 , (-33 / 2) + (ScrewVoidZ / 2) - 0.1]) cube([ScrewVoidX, ScrewVoidY, ScrewVoidZ], center = true);
}
}
}
module bottom_lock () {
difference () {
cube([80, 110, 8], center = true);
//bottom lock bolts
m5_bolt([40 / 2, 40 / 2, 0]);
m5_bolt([40 / 2, -40/ 2, 0]);
m5_bolt([-40 / 2, 40 / 2, 0]);
m5_bolt([-40 / 2, -40 / 2, 0]);
translate([6, 0, 0]) {
translate([BoltsX / 2, BoltsY / 2, 0]) cylinder(r = R(20), h = 8 + 1, center = true, $fn = 40);
translate([BoltsX / 2, -BoltsY / 2, 0]) cylinder(r = R(20), h = 8 + 1, center = true, $fn = 40);
translate([-BoltsX / 2, BoltsY / 2, 0]) {
cylinder(r = R(20), h = 8 + 1, center = true, $fn = 40);
translate([-10, 0, 0]) cube([20, 20, 8 + 1], center = true);
}
translate([-BoltsX / 2, -BoltsY / 2, 0]) {
cylinder(r = R(20), h = 8 + 1, center = true, $fn = 40);
translate([-10, 0, 0]) cube([20, 20, 8 + 1], center = true);
}
}
}
}
module debug () {
translate([0, 0, -30]) {
color("green") debug_rails();
color("blue") debug_jk_carriage([0, 0, (RailsD / 2) + (CarriageZ / 2)]);
//color("red") debug_mitchell([57.25 - 30 + 30, (-MitchellY / 2) + (CarriageY / 2) + 45, (RailsD / 2) + CarriageZ + (10 / 2) + 32]);
//debug_bolex_base([0, 0, 50]);
color("red") debug_bolex_frame([0, 100, 50 + (BolexBaseZ / 2) + (BolexFrameZ / 2)]);
mitchell_mount([0, 0, 47]);
color("salmon")translate([0, 0, 7]) bottom_lock();
}
}
PART = "mount";
if (PART == "mount") {
rotate([180, 0, 0]) mitchell_mount([0, 0, 33 / 2]);
} else if (PART == "lock") {
rotate([180, 0, 0]) bottom_lock();
} else {
debug();
}
//debug_tester();