Work on rails
This commit is contained in:
parent
332b45e1b7
commit
c3711dfeda
|
@ -6,6 +6,7 @@ include <./common/motors.scad>;
|
||||||
include <./common/2020_tslot.scad>;
|
include <./common/2020_tslot.scad>;
|
||||||
include <./takeup/takeup.scad>;
|
include <./takeup/takeup.scad>;
|
||||||
include <./sprocketed_roller/sprocketed_roller_var.scad>;
|
include <./sprocketed_roller/sprocketed_roller_var.scad>;
|
||||||
|
use <./filmless.scad>;
|
||||||
|
|
||||||
|
|
||||||
FrameX = 400;
|
FrameX = 400;
|
||||||
|
@ -105,7 +106,7 @@ LampWireY = 20;
|
||||||
LampGateX = 11;
|
LampGateX = 11;
|
||||||
LampGateZ = 0.5;
|
LampGateZ = 0.5;
|
||||||
|
|
||||||
LampRailsSpacingX = 22.5;
|
LampRailsSpacingX = 23;
|
||||||
LampRailsSpacingY = 13;
|
LampRailsSpacingY = 13;
|
||||||
LampRailsOffsetZ = 1 / 2;
|
LampRailsOffsetZ = 1 / 2;
|
||||||
|
|
||||||
|
@ -427,9 +428,13 @@ module gate_blank () {
|
||||||
SidesY = 2.7;
|
SidesY = 2.7;
|
||||||
RollerVoidY = -2;
|
RollerVoidY = -2;
|
||||||
SprocketShelfZ = 1.75;
|
SprocketShelfZ = 1.75;
|
||||||
|
SprocketShelfOffsetZ = -7.2;
|
||||||
SprocketShelfD = 44.75;
|
SprocketShelfD = 44.75;
|
||||||
RollerShelfZ = 2.3;
|
RollerShelfZ = 2.9;
|
||||||
RollerShelfD = 44.75;
|
RollerShelfD = 44.75;
|
||||||
|
PictureShelfZ = 11;
|
||||||
|
PictureShelfOffsetZ = -0.5;
|
||||||
|
PictureShelfD = 44.75;
|
||||||
|
|
||||||
RoundedBevelD = 55;
|
RoundedBevelD = 55;
|
||||||
RoundedBevelY = -3;
|
RoundedBevelY = -3;
|
||||||
|
@ -444,9 +449,11 @@ module gate_blank () {
|
||||||
|
|
||||||
translate([0, (-42.39 / 2) + RollerVoidY, 0]) cylinder(r = R(42.39), h = 20 + 1, center = true, $fn = 240);
|
translate([0, (-42.39 / 2) + RollerVoidY, 0]) cylinder(r = R(42.39), h = 20 + 1, center = true, $fn = 240);
|
||||||
//sprocket shelf
|
//sprocket shelf
|
||||||
translate([0, (-42.39 / 2) + RollerVoidY, (-Z / 2) + 2.4]) cylinder(r = R(SprocketShelfD), h = SprocketShelfZ, center = true, $fn = 240);
|
translate([0, (-42.39 / 2) + RollerVoidY, SprocketShelfOffsetZ]) cylinder(r = R(SprocketShelfD), h = SprocketShelfZ, center = true, $fn = 240);
|
||||||
//roller shelf
|
//roller shelf
|
||||||
translate([0, (-42.39 / 2) + RollerVoidY, (Z / 2) - (RollerShelfZ / 2) + 0.01]) cylinder(r = R(RollerShelfD), h = RollerShelfZ, center = true, $fn = 240);
|
translate([0, (-42.39 / 2) + RollerVoidY, (Z / 2) - (RollerShelfZ / 2) + 0.01]) cylinder(r = R(RollerShelfD), h = RollerShelfZ, center = true, $fn = 240);
|
||||||
|
//picture channel
|
||||||
|
translate([0, (-42.39 / 2) + RollerVoidY, PictureShelfOffsetZ ]) cylinder(r = R(PictureShelfD), h = PictureShelfZ, center = true, $fn = 240);
|
||||||
|
|
||||||
//gate notches
|
//gate notches
|
||||||
translate([(X / 2) + SidesX, SidesY, 0]) rotate([0, 0, 45]) cube([5, 5, Z + 1], center = true);
|
translate([(X / 2) + SidesX, SidesY, 0]) rotate([0, 0, 45]) cube([5, 5, Z + 1], center = true);
|
||||||
|
@ -474,7 +481,7 @@ module gate_carrier (pos = [0, 0, 0], rot = [0, 0, 0]) {
|
||||||
translate([(-X / 2) - SidesX, SidesY, 0]) rotate([0, 0, 45]) cube([5, 5, 20 + 1], center = true);
|
translate([(-X / 2) - SidesX, SidesY, 0]) rotate([0, 0, 45]) cube([5, 5, 20 + 1], center = true);
|
||||||
difference () {
|
difference () {
|
||||||
translate([0, 6.7, 0]) cube([X + 1, 10 + 1, 20], center = true);
|
translate([0, 6.7, 0]) cube([X + 1, 10 + 1, 20], center = true);
|
||||||
translate([0, 0, 0.5]) cube([X - 4, 10 + 1, 20], center = true);
|
translate([0, 0, 0]) cube([X - 5, 10 + 1, 16], center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([LampRailsSpacingX / 2, -2, LampRailsOffsetZ]) rotate([90, 0, 0]) {
|
translate([LampRailsSpacingX / 2, -2, LampRailsOffsetZ]) rotate([90, 0, 0]) {
|
||||||
|
@ -1423,7 +1430,7 @@ module debug () {
|
||||||
|
|
||||||
panel([0, -10, PanelOffsetZ]);
|
panel([0, -10, PanelOffsetZ]);
|
||||||
|
|
||||||
//color("red") translate([0, -8.5, 10.2]) cube([200, 0.1, 16], center = true);
|
|
||||||
if (!FrameOnly) {
|
if (!FrameOnly) {
|
||||||
translate([0, RollerY, 18]) rotate([180, 0, 0]) difference () {
|
translate([0, RollerY, 18]) rotate([180, 0, 0]) difference () {
|
||||||
//sprocketed_roller_upright();
|
//sprocketed_roller_upright();
|
||||||
|
@ -1553,19 +1560,20 @@ module debug () {
|
||||||
}
|
}
|
||||||
|
|
||||||
module debug_lamp () {
|
module debug_lamp () {
|
||||||
|
//color("red") translate([0, -8.5, 10.6]) rotate([0, 90, 90]) 16mm_film(40, true, true);
|
||||||
color("red") lamp_bolts_voids([0, LampY + 5, (LampBoltH/2) - 1.5 - 2.5]);
|
color("red") lamp_bolts_voids([0, LampY + 5, (LampBoltH/2) - 1.5 - 2.5]);
|
||||||
//color("red") lamp_rails_voids([0, 20, 11 + LampRailsOffsetZ], [90, 0, 0], h = 50);
|
//color("red") lamp_rails_voids([0, 20, 11 + LampRailsOffsetZ], [90, 0, 0], h = 50);
|
||||||
panel([0, -10, -1.5]);
|
panel([0, -10, -1.5]);
|
||||||
//
|
//
|
||||||
lamp_single([0, 10, 2]);
|
lamp_single([0, 10, 2]);
|
||||||
translate([0, -30, 4]) rotate([0, 0, 10]) sprocketed_roller_invert_solid();
|
translate([0, -30, 3.5]) rotate([0, 0, 10]) sprocketed_roller_invert_solid();
|
||||||
lamp_LEDs([0, 19, 11]);
|
lamp_LEDs([0, 19, 11]);
|
||||||
filter_carrier([0, 9, 11]);
|
filter_carrier([0, 9, 11]);
|
||||||
picture_gate([0, -6.2, 11], Type = "full"); //standard
|
picture_gate([0, -6.2, 11], Type = "standard"); //standard
|
||||||
gate_carrier([0, -2.5, 11]);
|
gate_carrier([0, -2.5, 11]);
|
||||||
}
|
}
|
||||||
|
|
||||||
PART = "lamp_single";
|
PART = "gate_carrier";
|
||||||
LIBRARY = true;
|
LIBRARY = true;
|
||||||
|
|
||||||
if (PART == "panel") {
|
if (PART == "panel") {
|
||||||
|
@ -1641,6 +1649,6 @@ if (PART == "panel") {
|
||||||
} else if(PART=="blank") {
|
} else if(PART=="blank") {
|
||||||
//
|
//
|
||||||
} else {
|
} else {
|
||||||
//debug();
|
debug();
|
||||||
debug_lamp();
|
//debug_lamp();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
//OpenSCAD representation of small gauge film formats
|
||||||
|
//Website: https://git.sixteenmillimeter.com/16mm/filmless.git
|
||||||
|
|
||||||
|
module rounded_cube (cube_arr = [1, 1, 1], d = 0, center = false) {
|
||||||
|
off_x = 0;
|
||||||
|
off_y = 0;
|
||||||
|
r = d/2;
|
||||||
|
union () {
|
||||||
|
cube([cube_arr[0] - d, cube_arr[1], cube_arr[2]], center = center);
|
||||||
|
cube([cube_arr[0], cube_arr[1] - d, cube_arr[2]], center = center);
|
||||||
|
translate ([1 * (cube_arr[0] / 2) - r , 1 * (cube_arr[1] / 2)- r, 0]) cylinder(r = r, h = cube_arr[2], center = center);
|
||||||
|
translate ([-1 * (cube_arr[0] / 2) + r, -1 * (cube_arr[1] / 2) + r, 0]) cylinder(r = r, h = cube_arr[2], center = center);
|
||||||
|
translate ([1 * (cube_arr[0] / 2) - r, -1 * (cube_arr[1] / 2) + r, 0]) cylinder(r = r, h = cube_arr[2], center = center);
|
||||||
|
translate ([-1 * (cube_arr[0] / 2) + r, 1 * (cube_arr[1] / 2)- r, 0]) cylinder(r = r, h = cube_arr[2], center = center);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module 16mm_perf () {
|
||||||
|
$fn = 10;
|
||||||
|
PERF_W = 1.829;
|
||||||
|
PERF_H = 1.27;
|
||||||
|
rounded_cube([PERF_W, PERF_H, 2], d = .5, center = true);
|
||||||
|
}
|
||||||
|
|
||||||
|
module 16mm_film (frames = 10, double = false, long = true) {
|
||||||
|
THICKNESS = 0.0047 * 25.4;
|
||||||
|
WIDTH = 16;
|
||||||
|
SPACING_LONG = 7.62; //long pitch (projection)
|
||||||
|
SPACING_SHORT = 7.605; //short pitch
|
||||||
|
PERF_OFFSET = (1.829 / 2) + .85;
|
||||||
|
difference () {
|
||||||
|
if (long) {
|
||||||
|
cube([WIDTH, SPACING_LONG * frames, THICKNESS], center = true);
|
||||||
|
} else {
|
||||||
|
cube([WIDTH, SPACING_SHORT * frames, THICKNESS], center = true);
|
||||||
|
}
|
||||||
|
if (long) {
|
||||||
|
OFFSET = (SPACING_LONG * frames) / 2;
|
||||||
|
for (i = [0 : frames]) {
|
||||||
|
translate([8 - PERF_OFFSET, -OFFSET + SPACING_LONG * i, 0]) 16mm_perf();
|
||||||
|
}
|
||||||
|
if (double) {
|
||||||
|
for (i = [0 : frames]) {
|
||||||
|
translate([-8 + PERF_OFFSET, -OFFSET + SPACING_LONG * i, 0]) 16mm_perf();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
OFFSET = (SPACING_SHORT * frames) / 2;
|
||||||
|
for (i = [0 : frames]) {
|
||||||
|
translate([8 - PERF_OFFSET, -OFFSET + SPACING_LONG * i, 0]) 16mm_perf();
|
||||||
|
}
|
||||||
|
if (double) {
|
||||||
|
for (i = [0 : frames]) {
|
||||||
|
translate([-8 + PERF_OFFSET, -OFFSET + SPACING_LONG * i, 0]) 16mm_perf();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module film_sheet () {
|
||||||
|
STRIPS = 12;
|
||||||
|
FRAMES = 33;
|
||||||
|
PERFS = "single";
|
||||||
|
PITCH = "long";
|
||||||
|
projection() for (i = [0:STRIPS - 1]) {
|
||||||
|
translate([16.01 * i, 0, 0]) {
|
||||||
|
16mm_film(FRAMES, PERFS == "double", PITCH == "long");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo("STRIP LENGTH", (PITCH == "long" ? 7.62 : 7.605) * FRAMES, "mm");
|
||||||
|
echo("PAGE WIDTH", 16 * STRIPS, "mm");
|
||||||
|
echo("PITCH", PITCH);
|
||||||
|
echo("PERFS", PERFS);
|
||||||
|
}
|
||||||
|
|
||||||
|
//film_sheet();
|
Loading…
Reference in New Issue