From e9b89bd10bdb32270cb37c183c9cdb7fbe6eb579 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Tue, 5 Nov 2024 15:15:31 -0500 Subject: [PATCH] Add adjustments for new filmless library --- app/data/cfg.json | 2 +- app/package-lock.json | 2 +- app/package.json | 2 +- data/cfg.json | 2 +- package-lock.json | 4 +- package.json | 2 +- processing/mcopy/cfg.json | 2 +- scad/filmless.scad | 77 ++++++++++++++++++++++++++++++++++ scad/mcopy_gate.scad | 4 +- scad/projector_controller.scad | 2 +- 10 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 scad/filmless.scad diff --git a/app/data/cfg.json b/app/data/cfg.json index 95c7c95..da52e71 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.142", + "version": "1.8.143", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index a70ca1b..37d9ba3 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.142", + "version": "1.8.143", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 7ba50a3..ef6f1fd 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.142", + "version": "1.8.143", "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 95c7c95..da52e71 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.142", + "version": "1.8.143", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/package-lock.json b/package-lock.json index 39b13f1..6b486b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.142", + "version": "1.8.143", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.142", + "version": "1.8.143", "license": "MIT", "dependencies": { "alert": "file:app/lib/alert", diff --git a/package.json b/package.json index 24b91f6..c4871e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.142", + "version": "1.8.143", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index 95c7c95..da52e71 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.142", + "version": "1.8.143", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scad/filmless.scad b/scad/filmless.scad new file mode 100644 index 0000000..83581d1 --- /dev/null +++ b/scad/filmless.scad @@ -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(); \ No newline at end of file diff --git a/scad/mcopy_gate.scad b/scad/mcopy_gate.scad index 0b743a0..25bb4a6 100644 --- a/scad/mcopy_gate.scad +++ b/scad/mcopy_gate.scad @@ -1,5 +1,6 @@ use <./common/common.scad>; use <./sprocketed_roller/sprocketed_roller_var.scad>; +use <./filmless.scad>; PlateZ = 1.3 + 1; PlateX = 35.1; @@ -115,6 +116,7 @@ module front_plate_void (pos = [0, 0, 0]) { } } +//BOM: 1, M2.5x10mm module front_plate () { difference () { union () { @@ -692,7 +694,7 @@ module debug () { } } -PART="front_block_16mm"; +PART="front_block_16mmx"; if (PART == "front_plate") { rotate([0, 180, 0]) front_plate(); diff --git a/scad/projector_controller.scad b/scad/projector_controller.scad index 88a2add..854862a 100644 --- a/scad/projector_controller.scad +++ b/scad/projector_controller.scad @@ -1,7 +1,7 @@ include ; include ; -PART="usb_protector"; +PART="electronics_mount"; CaseX = 121; CaseY = 172;