diff --git a/app/data/cfg.json b/app/data/cfg.json index bebf86d..503590b 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.158", + "version": "1.8.159", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index b5426d7..266bdf1 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.158", + "version": "1.8.159", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 7b5bf93..1362084 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.158", + "version": "1.8.159", "description": "GUI for the mcopy small gauge film optical printer platform", "main": "main.js", "scripts": { diff --git a/data/cfg.json b/data/cfg.json index bebf86d..503590b 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.158", + "version": "1.8.159", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/package-lock.json b/package-lock.json index 4a66b5e..eb34b81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.158", + "version": "1.8.159", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.158", + "version": "1.8.159", "license": "MIT", "dependencies": { "alert": "file:app/lib/alert", diff --git a/package.json b/package.json index 362789e..0739f43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.158", + "version": "1.8.159", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index bebf86d..503590b 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.158", + "version": "1.8.159", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scad/jk_takeup.scad b/scad/jk_takeup.scad index e729e50..06afa5d 100755 --- a/scad/jk_takeup.scad +++ b/scad/jk_takeup.scad @@ -13,9 +13,35 @@ MOTOR_SHAFT_HOBBLE = 1; MOTOR_MOUNT_X = 32.5; MOTOR_MOUNT_Y = 17.5; -module hex (diag = 10, h = 1) { - cylinder(r = diag / 2, h = h, center = true, $fn = 6); -} + +ARM_LENGTH = 130; +ARM_WIDTH = 15; +ARM_HEIGHT = 7; +ARM_CUTOFF = 101.25; + +ARM_REINFORCEMENT_OFFSET_X = 20; +ARM_REINFORCEMENT_Y = 5; +ARM_REINFORCEMENT_Z = 4.1; + +ARMS_ANGLE = 40; + +AX = 105; +AY = 26.85 - 2; +AZ = 6.1; + +BX = 105; +BY = 34.4; +BZ = 5; + +BOLTSX = 77; + +M5 = 5; + +FILTER_X = 55.4; +FILTER_Y = 6.5; +FILTER_VOID_X = FILTER_X - 9 + ((4.5 - 2.34) * 2); + +ROLLER_SPACING = 95; module motor_shaft () { difference () { @@ -35,7 +61,187 @@ module debug_assembled () { color("red") translate([0, 0, 34]) daylight_spool_insert(); } -PART = "minimal_mountx"; + + +module m5_nut (pos = [0, 0, 0]) { + translate(pos) hex(9.4, 4); +} + +module block_bolt_voids (pos = [0, 0, 0]) { + translate(pos) { + translate([BOLTSX / 2, 0, 0]) { + cylinder(r = 4.95 / 2, h = BZ + 1, center = true, $fn = 50); + m5_nut([0, 0, 3]); + } + translate([-BOLTSX / 2, 0, 0]) { + cylinder(r = 4.95 / 2, h = BZ + 1, center = true, $fn = 50); + m5_nut([0, 0, 3]); + } + } +} + +module block () { + cube([AX, AY, AZ], center = true); + translate([0, -(AY - BY) / 2, (AZ / 2) + (BZ / 2)]) { + difference () { + union () { + cube([BX, BY, BZ], center = true); + translate([BOLTSX / 2, (BY / 2) - 3.5, 0]) { + cylinder(r= R(13), h = BZ, center = true, $fn = 60); + } + translate([-BOLTSX / 2, (BY / 2) - 3.5, 0]) { + cylinder(r= R(13), h = BZ, center = true, $fn = 60); + } + } + //void for motor parts + translate([0, BY - 5.44, 0]) cube([53.2, BY, BZ + 1], center = true); + //bolts + block_bolt_voids([0, (BY / 2) - 3.5, 0]); + } + } +} + +module original_takeup () { + block(); +} + +module projector_mount (pos = [0, 0, 0], rot = [0, 0, 0]) { + //intersection () {} + $fn = 60; + translate(pos) rotate(rot) { + intersection () { + rotate([0, 180, 0]) minimal_mount(); + translate([-10, 0, 0]) rounded_cube([50, 30, 20], d = 12, center = true); + } + } + //translate([-8.5, 0, 12]) rotate([0, 0, 180]) geared_motor(); + //translate([0, 0, -34]) rotate([180, 0, 0]) daylight_spool_insert(); +} + +module projector_arm (pos = [0, 0, 0], rot = [0, 0, 0]) { + translate(pos) rotate(rot) { + difference () { + union () { + cube([ARM_LENGTH, ARM_WIDTH, ARM_HEIGHT], center = true); + translate([(ARM_CUTOFF/2) - 2.1, 0, 0]) scale([2, 1, 1]) rotate([0, 0, 45]) cube([30, 30, ARM_HEIGHT], center = true); + } + translate([ARM_CUTOFF, 0, 0]) cube([ARM_LENGTH, 52, ARM_HEIGHT + 1], center = true); + } + translate([-ARM_REINFORCEMENT_OFFSET_X / 2, 0, -ARM_REINFORCEMENT_Z / 2]) difference() { + cube([ARM_LENGTH - ARM_REINFORCEMENT_OFFSET_X, ARM_REINFORCEMENT_Y, ARM_HEIGHT + ARM_REINFORCEMENT_Z], center = true); + translate([0, 0, -ARM_HEIGHT - ARM_REINFORCEMENT_Z + 2]) rotate([0, -5, 0]) cube([ARM_LENGTH - ARM_REINFORCEMENT_OFFSET_X + 20, ARM_REINFORCEMENT_Y + 1, ARM_HEIGHT + ARM_REINFORCEMENT_Z], center = true); + } + } +} + +module filter_holder (pos = [0, 0, 0]) { + translate(pos) difference () { + cube([FILTER_X, 13.25, 50.5], center = true); + //center void + cube([42.4, 13.25 + 1, 50.5 + 1], center = true); + translate([0, (13.25/2) - (3.25/2) - 1, 0]) cube([FILTER_VOID_X, 3.25, 50.5 + 1], center = true); + translate([0, (13.25/2) - (3.25/2) - 1 - 3.25 - 1, 0]) cube([FILTER_VOID_X, 3.25, 50.5 + 1], center = true); + } +} + +module filter_reinforcement (pos = [0, 0, 0]) { + Z = 19.5 + 7.83-5.75; + X = AX; + translate(pos) difference () { + cube([X, 15.5, Z], center = true); + cube([FILTER_X - 0.1, 15.5 + 1, Z + 1], center = true); + translate([X - 19.5, -9, 0]) cube([X, 15.5, Z + 1], center = true); + translate([-X + 19.5, -9, 0]) cube([X, 15.5, Z + 1], center = true); + } +} + +module roller_bolts () { + translate([ROLLER_SPACING/2, 2, 0]) { + cylinder(r = R(4.25), h = 80, center = true, $fn = 40); + translate([0, 0, 7]) rotate([0, 0, 30]) m4_nut(); + } + translate([-ROLLER_SPACING/2, 2, 0]) { + cylinder(r = R(4.25), h = 80, center = true, $fn = 40); + translate([0, 0, 7]) rotate([0, 0, 30]) m4_nut(); + } +} + +module jk_takeup () { + difference () { + union () { + block(); + filter_holder([0, 0, -27.5]); + filter_reinforcement([0, -1.1, -16+(5.75/2)]); + } + roller_bolts(); + } + translate([0, 0, 1.8]) { + translate([-30, 0, 0]) rotate([0, 0, ARMS_ANGLE]) { + projector_arm([-ARM_LENGTH/2, 0, 2.75], [0, 0, 180]); + projector_mount([-ARM_LENGTH, 0, 5.5], [0, 0, 180]); + } + translate([30, 0, 0]) rotate([0, 0, -ARMS_ANGLE]) { + projector_arm([ARM_LENGTH/2, 0, 2.75]); + projector_mount([ARM_LENGTH, 0, 5.5]); + } + } +} + +module jk_takeup_halves (HALF = "A") { + difference () { + jk_takeup(); + translate([0, 7, 0]) cylinder(r = R(M5), h = 40, center = true, $fn = 60); + translate([0, -7, 0]) cylinder(r = R(M5), h = 40, center = true, $fn = 60); + if (HALF == "A") { + translate([(ARM_LENGTH) + 10, 0, 0]) cube([ARM_LENGTH * 2, ARM_LENGTH * 2, ARM_LENGTH], center = true); + translate([0, 0, 10 + 2]) cube([20, BY + 1, 20], center = true); + } else if (HALF == "B") { + translate([-(ARM_LENGTH) - 10, 0, 0]) cube([ARM_LENGTH * 2, ARM_LENGTH * 2, ARM_LENGTH], center = true); + translate([0, 0, -10 + 2]) cube([20, BY + 1, 20], center = true); + } + } + +} + +module idle_roller () { + D1 = 16; + D3 = 90; + FN = 60; + difference () { + union() { + difference () { + cylinder(r = R(D1), h = 20.2, center = true, $fn = FN); + cylinder(r = R(D1)+1, h = 17, center = true, $fn = FN); + } + translate([0, 0, 0]) { + difference() { + cylinder(r = R(14), h = 17.1, center = true, $fn = FN); + for (i = [0 : FN - 1]) { + rotate([0, 0, (360 / FN) * i ]) { + translate([(D3/2)+6.1, 0, 0]) rotate([90, 0, 0]) cylinder(r = R(D3), h = 2, center = true, $fn = 200); + } + } + } + } + } + cylinder(r = R(4.25), h = 20.2 + 1, center = true, $fn = 30); + translate([0, 0, (20.2 / 2) - (5 / 2)]) cylinder(r = R(10), h = 5.1, center = true, $fn = FN); + } + +} + +module idle_roller_cap () { + difference () { + cylinder(r = R(10-0.3), h = 5, center = true, $fn = 60); + cylinder(r = R(4.25), h = 20.2 + 1, center = true, $fn = 30); + translate([0, 0, 1.01]) m4_nut(); + } + +} + +//translate([0, 0, 40]) color("red") original_takeup(); + +PART = "jk_takeup"; if (PART == "slip_coupling") { slip_coupling(); @@ -52,6 +258,17 @@ if (PART == "slip_coupling") { daylight_spool_insert_reinforced_nut(); } else if (PART == "minimal_mount") { minimal_mount(); +} else if (PART == "jk_takeup") { + jk_takeup(); +} else if (PART == "jk_takeup_half_a") { + jk_takeup_halves("A"); +} else if (PART == "jk_takeup_half_b") { + jk_takeup_halves("B"); +} else if (PART == "idle_roller") { + idle_roller(); } else { debug_assembled(); } + + +