110_cartridge/scad/110_cartridge.scad

185 lines
5.5 KiB
OpenSCAD

use <./common/common.scad>;
$fn = 150;
SPACING = 42;
WALL_THICKNESS = 1.25 + .5;
PLANE_BACK = 1.55;
CART_H = 16.85 + .75;
FEED_D = 19.14;
TAKEUP_D = 22.04;
TAKEUP_OFFSET_Y = -(TAKEUP_D - FEED_D) / 2;
CONNECT_X = SPACING - (TAKEUP_D / 2) - (FEED_D / 2) + 2;
CONNECT_Y = 8.85;
CONNECT_Z = 1.3;
CONNECT_OFFSET_X = ((TAKEUP_D / 2) - (FEED_D / 2)) / 2;
CONNECT_OFFSET_Y = (FEED_D / 2) - (CONNECT_Y / 2) - 5.02;
CONNECT_OFFSET_Z = -(CART_H / 2) + (CONNECT_Z / 2);
FILM_NEG_Y = .75;
FILM_NEG_OFFSET_Y = 8.5;
CAP_LIP_H = 5.92;
CAP_LIP = .56;
CAP_THICKNESS = .5;
TOP_H = 1;
module 110_cartridge_case () {
H = 19;
FOD = FEED_D + 3;
FID = FEED_D + .5;
TOD = TAKEUP_D + 3;
TID = TAKEUP_D + .5;
MID = 17;
MID_OFFSET = 2.55;
difference () {
union () {
translate([SPACING / 2, 0, 0]) cylinder(r = R(FOD), h = H, center = true);
translate([-SPACING / 2, TAKEUP_OFFSET_Y, 0]) cylinder(r = R(TOD), h = H, center = true);
translate([0, MID_OFFSET, 0]) cube([SPACING, MID, H], center = true);
}
translate([0, 0, -1]) union () {
translate([SPACING / 2, 0, 0]) cylinder(r = R(FID), h = H, center = true);
translate([-SPACING / 2, TAKEUP_OFFSET_Y, 0]) cylinder(r = R(TID), h = H, center = true);
translate([0, MID_OFFSET - .25, 0]) cube([SPACING, MID - 2, H], center = true);
}
}
}
module 110_cartridge_cover () {
H = 4;
FOD = FEED_D + 3;
TOD = TAKEUP_D + 3;
MID = 17;
MID_OFFSET = 2.55;
difference () {
union () {
translate([SPACING / 2, 0, 0]) cylinder(r = R(FOD + 3), h = H, center = true);
translate([-SPACING / 2, TAKEUP_OFFSET_Y, 0]) cylinder(r = R(TOD + 3), h = H, center = true);
translate([0, MID_OFFSET, 0]) cube([SPACING, MID + 3, H], center = true);
}
translate([0, 0, 1.5]) union () {
translate([SPACING / 2, 0, 0]) cylinder(r = R(FOD), h = H, center = true);
translate([-SPACING / 2, TAKEUP_OFFSET_Y, 0]) cylinder(r = R(TOD), h = H, center = true);
translate([0, MID_OFFSET, 0]) cube([SPACING, MID, H], center = true);
}
}
}
module 110_cartridge_takeup () {
H = 15.95;
D = 15.5;
INNER_D = 14;
difference() {
cylinder(r = R(D), h = H, center = true);
translate([0, 0, .65]) cylinder(r = R(INNER_D), h = H, center = true);
translate([-3, 7, .65]) rotate([0, 0, 60]) cube([10, .5, H], center = true);
}
translate([0, 0, -(D / 2) + 1.5]) cylinder(r = R(4), h = 3, center = true);
for (i = [0:3]) {
rotate([0, 0, i * 90]) translate([(D / 4) - .75, 1.25, -(D / 2) + 1.5]) cube([(D / 2) + 1, 1, 3], center = true);
}
}
module 110_cartridge_takeup_cover () {
INNER_D = TAKEUP_D - WALL_THICKNESS;
difference () {
union () {
cylinder(r = R(TAKEUP_D), h = 1, center = true);
translate([TAKEUP_D / 4, TAKEUP_D / 4, 0]) {
cube([TAKEUP_D / 2, TAKEUP_D / 2, 1], center = true);
}
translate([0, 0, -1.5]) cylinder(r = R(13.87) + .2, h = 3, center = true);
}
translate([0, 0, .65]) cylinder(r = R(13.87) - .5, h = 100, center = true);
}
translate([(TAKEUP_D / 2) - 1, 7.5, -1]) cube([1.8, 1.8, 1.8], center = true);
}
module feed (pos = [0, 0, 0]) {
INNER_D = FEED_D - WALL_THICKNESS;
1_OFFSET_Z = (CART_H / 2) - (CAP_LIP_H / 2);
translate(pos) difference () {
union () {
cylinder(r = R(FEED_D), h = CART_H, center = true);
translate([-FEED_D / 4, FEED_D / 4, 0]) {
cube([FEED_D / 2, FEED_D / 2, CART_H], center = true);
}
}
translate([0, 0, WALL_THICKNESS]) cylinder(r = R(INNER_D), h = CART_H, center = true);
//film neg
translate ([-FEED_D / 2, FILM_NEG_OFFSET_Y, WALL_THICKNESS / 2]) {
cube([FEED_D, FILM_NEG_Y, CART_H], center = true);
}
}
}
module feed_cap () {
cylinder(r = R(FEED_D), h = CART_H, center = true);
}
module feed_cap_neg () {
INNER_D = FEED_D - CAP_LIP;
difference () {
cylinder(r = R(FEED_D), h = CAP_LIP_H, center = true);
translate([0, 0, WALL_THICKNESS]) cylinder(r = R(INNER_D), h = CART_H, center = true);
translate([-FEED_D / 4, FEED_D / 4, 0]) {
cube([FEED_D / 2, FEED_D / 2, CART_H], center = true);
}
}
}
module takeup (pos = [0, 0, 0]) {
INNER_D = TAKEUP_D - WALL_THICKNESS;
translate(pos) difference () {
union () {
cylinder(r = R(TAKEUP_D), h = CART_H, center = true);
translate([TAKEUP_D / 4, TAKEUP_D / 4, 0]) {
cube([TAKEUP_D / 2, TAKEUP_D / 2, CART_H], center = true);
}
}
//notch
translate([0, 0, WALL_THICKNESS]) cylinder(r = R(INNER_D), h = CART_H, center = true);
//film neg
translate ([TAKEUP_D / 2, FILM_NEG_OFFSET_Y - TAKEUP_OFFSET_Y, WALL_THICKNESS / 2]) {
cube([TAKEUP_D, FILM_NEG_Y, CART_H], center = true);
}
}
}
module connector (pos = [0, 0, 0]) {
translate(pos) cube([CONNECT_X, CONNECT_Y, CONNECT_Z], center = true);
}
module 110_cartridge_body () {
feed([SPACING / 2, 0, 0]);
takeup([-SPACING / 2, TAKEUP_OFFSET_Y, 0]);
connector([CONNECT_OFFSET_X, CONNECT_OFFSET_Y, CONNECT_OFFSET_Z]);
}
PART = "body";
if (PART == "case") {
rotate([180, 0, 0]) 110_cartridge_case();
} else if (PART == "cover") {
110_cartridge_cover();
} else if (PART == "takeup") {
110_cartridge_takeup();
} else if (PART == "body") {
110_cartridge_body();
}