185 lines
5.5 KiB
OpenSCAD
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();
|
||
|
}
|