From 6bafb263de1932f580cae39613405b09c1441127 Mon Sep 17 00:00:00 2001 From: mattmcw Date: Sat, 4 Nov 2023 09:38:20 -0400 Subject: [PATCH] Projector rails added and printed --- 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/mcopy_rails.scad | 83 ++++++++++++++++++++++++++++++++------- 8 files changed, 77 insertions(+), 22 deletions(-) diff --git a/app/data/cfg.json b/app/data/cfg.json index 7c22cd1..47c77f0 100644 --- a/app/data/cfg.json +++ b/app/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.64", + "version": "1.8.65", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/app/package-lock.json b/app/package-lock.json index 23eac6d..8e34a47 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.64", + "version": "1.8.65", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/app/package.json b/app/package.json index 376ada9..56630fb 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "mcopy-app", - "version": "1.8.64", + "version": "1.8.65", "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 b9518cf..5d0aaf7 100644 --- a/data/cfg.json +++ b/data/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.64", + "version": "1.8.65", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/package-lock.json b/package-lock.json index 48614c7..e38741f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mcopy", - "version": "1.8.64", + "version": "1.8.65", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcopy", - "version": "1.8.64", + "version": "1.8.65", "license": "MIT", "dependencies": { "arduino": "file:app/lib/arduino", diff --git a/package.json b/package.json index 5ccf681..8182af4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mcopy", - "version": "1.8.64", + "version": "1.8.65", "description": "Small gauge film optical printer platform", "main": "build.js", "directories": { diff --git a/processing/mcopy/cfg.json b/processing/mcopy/cfg.json index 7c22cd1..47c77f0 100644 --- a/processing/mcopy/cfg.json +++ b/processing/mcopy/cfg.json @@ -1,5 +1,5 @@ { - "version": "1.8.64", + "version": "1.8.65", "ext_port": 1111, "profiles": { "mcopy": { diff --git a/scad/mcopy_rails.scad b/scad/mcopy_rails.scad index b6df537..2f42259 100644 --- a/scad/mcopy_rails.scad +++ b/scad/mcopy_rails.scad @@ -135,7 +135,15 @@ module rail_end (pos = [0, 0, 0], rot = [90, 0, 0], Motors = true, Projector = f end_2020([RailSpacing / 2, 0, -15 + 2.4]); } if (Projector) { - translate([]) cube([1, 1, 100], center = true); + difference () { + union () { + extrusion_block([ProjectorFrameSpacingX / 2, 0, 52], [90, 0, 0], End = true); + extrusion_block([-ProjectorFrameSpacingX / 2, 0, 52], [90, 0, 0], End = true); + } + //bolts for upright linear extrusions + lens_sled_m3_bolt_voids([ProjectorFrameSpacingX / 2, 0, 55], [90, 0, 0]); + lens_sled_m3_bolt_voids([-ProjectorFrameSpacingX / 2, 0, 55], [90, 0, 0]); + } } } @@ -222,14 +230,14 @@ module lens_sled_m5_bolt_nut_voids (pos = [0, 0, 0], rot = [0, 0, 0], Angle = 36 } } -module extrusion_block (pos = [0, 0, 0], rot = [0, 0, 0], Y = 40, Z = 30, End = false) { +module extrusion_block (pos = [0, 0, 0], rot = [0, 0, 0], X = 40, Y = 40, Z = 30, End = false) { translate(pos) rotate(rot) { difference () { - rotate([90, 0, 0]) rounded_cube([Y, Y - 10, Z], d = 5, center = true, $fn = 30); + rotate([90, 0, 0]) rounded_cube([X, Y, Z], d = 5, center = true, $fn = 30); cube([RailVoid, Z + 1, RailVoid], center = true); } if (End) { - end_2020([0, 0, 0], [90, 0, 0]); + end_2020([0, -(Z / 2) + (5 / 2), 0], [90, 0, 0]); } } } @@ -249,8 +257,8 @@ module lens_sled (pos = [0, 0, 0], rot = [90, 0, 0]) { difference () { union () { sled(rot = [0, 0, 0], Length = Y); - extrusion_block([LensFrameSpacingX - 35, LensFrameBlockY, LensFrameOffsetZ]); - extrusion_block([-LensFrameSpacingX + 35, LensFrameBlockY, LensFrameOffsetZ]); + extrusion_block([LensFrameSpacingX - 35, LensFrameBlockY, LensFrameOffsetZ], Y = 30); + extrusion_block([-LensFrameSpacingX + 35, LensFrameBlockY, LensFrameOffsetZ], Y = 30); translate([LensFrameSpacingX - 35 - 25 + 21, 48 - 5, -17.5 + 5]) cube([60, 24, 44], center = true); translate([LensFrameSpacingX - 35 - 25 + 21, 48 - 5, -17.5 + 30.5]) difference() { cube([60, 24, 44], center = true); @@ -504,12 +512,57 @@ module lens_frame_top_gantry (pos = [0, 0, 0], rot = [0, 0, 0]) { } } } +} +module projector_orbital_brace (pos = [0, 0, 0], rot = [0, 0, 0]) { + X = 5 * IN; + Y = 150; + Z = 9; + PlateD = 136; + InnerD = 63.5; + M5SpacingX = 75; + M5SpacingY = 120; + M3BoltY = 20; + Corner = 20; + translate(pos) rotate(rot) difference() { + cube([X, Y, Z], center = true); + //corners + translate([X / 2, Y / 2, 0]) rotate([0, 0, 45]) cube([Corner, Corner, Z + 1], center = true); + translate([-X / 2, Y / 2, 0]) rotate([0, 0, 45]) cube([Corner, Corner, Z + 1], center = true); + //plate + translate([0, 0, -6.5]) cylinder(r = R(PlateD), h = Z, center = true, $fn = 300); + //center + cylinder(r = R(InnerD), h = Z + 1, center = true, $fn = 120); + //marks + translate([(X / 2) + 0.1, 0, 0]) rotate([0, 0, 45]) cube([1, 1, Z + 1], center = true); + translate([-(X / 2) - 0.1, 0, 0]) rotate([0, 0, 45]) cube([1, 1, Z + 1], center = true); + + //face plate m3 bolt + m3_bolt_void([ProjectorFrameSpacingX / 2, (Y / 2) - M3BoltY, 1], [180, 0, 0], BoltH = 8, CapH = 10); + m3_bolt_void([-ProjectorFrameSpacingX / 2, (Y / 2) - M3BoltY, 1], [180, 0, 0], BoltH = 8, CapH = 10); + m3_bolt_void([ProjectorFrameSpacingX / 2, -(Y / 2) + M3BoltY, 1], [180, 0, 0], BoltH = 8, CapH = 10); + m3_bolt_void([-ProjectorFrameSpacingX / 2, -(Y / 2) + M3BoltY, 1], [180, 0, 0], BoltH = 8, CapH = 10); + + //m3 bolt top brace + + //attachment m5 bolts + translate([M5SpacingX / 2, M5SpacingY / 2, 0]) cylinder(r = R(5.3), h = Z + 1, center = true, $fn = 40); + translate([-M5SpacingX / 2, M5SpacingY / 2, 0]) cylinder(r = R(5.3), h = Z + 1, center = true, $fn = 40); + translate([M5SpacingX / 2, -M5SpacingY / 2, 0]) cylinder(r = R(5.3), h = Z + 1, center = true, $fn = 40); + translate([-M5SpacingX / 2, -M5SpacingY / 2, 0]) cylinder(r = R(5.3), h = Z + 1, center = true, $fn = 40); + } } module debug () { //translate([50 , -90 - 10, 22]) rotate([0, 90, 0]) bearing_void(); - //rail_end(); + rail_end(Projector = true); + color("green") translate([(ProjectorFrameSpacingX / 2), 0, 50]) rotate([0, 0, 0]) linear_extrude(height=240) 2020_profile(); + color("green") translate([-(ProjectorFrameSpacingX / 2), 0, 50]) rotate([0, 0, 0]) linear_extrude(height=240) 2020_profile(); + color("green") translate([-((ProjectorFrameSpacingX - 20) / 2), 0, 280]) rotate([0, 90, 0]) linear_extrude(height=ProjectorFrameSpacingX-20) 2020_profile(); + projector_orbital_brace([0, 14.5, 180], [90, 0, 0]); + translate([0, 0, 110]) cube([10, 10, 150], center = true); + corner_bracket([30, 0, 260], [0, 180, 90]); + corner_outer_bracket([55, 0, 290], [0, 180, 0]); //camera_sled([0, -90, 0]); //difference () { //lens_sled([0, -90, 0]); @@ -517,12 +570,12 @@ module debug () { //translate([ -50 - (RailSpacing / 2), -90, 0]) cube([100, 100, 100], center = true); //} - color("green") translate([(LensFrameSpacingX / 2) + 15, -20, 50]) rotate([0, 0, 0]) linear_extrude(height=200) 2020_profile(); - color("green") translate([-(LensFrameSpacingX / 2) - 15, -20, 50]) rotate([0, 0, 0]) linear_extrude(height=200) 2020_profile(); + //color("green") translate([(LensFrameSpacingX / 2) + 15, -20, 50]) rotate([0, 0, 0]) linear_extrude(height=200) 2020_profile(); + //color("green") translate([-(LensFrameSpacingX / 2) - 15, -20, 50]) rotate([0, 0, 0]) linear_extrude(height=200) 2020_profile(); //color("green") translate([-(LensFrameSpacingX + 30 + 20) / 2, -20, 260]) rotate([0, 90, 0]) linear_extrude(height = LensFrameSpacingX + 30 + 20) 2020_profile(); - color("blue") translate([LensFrameSpacingX - 35, -LensRodsOffsetZ, 140]) cylinder(r = R(9), h = 300, center = true, $fn = 60); - color("blue") translate([-LensFrameSpacingX + 35, -LensRodsOffsetZ, 140]) cylinder(r = R(9), h = 300, center = true, $fn = 60); + //color("blue") translate([LensFrameSpacingX - 35, -LensRodsOffsetZ, 140]) cylinder(r = R(9), h = 300, center = true, $fn = 60); + //color("blue") translate([-LensFrameSpacingX + 35, -LensRodsOffsetZ, 140]) cylinder(r = R(9), h = 300, center = true, $fn = 60); //difference () { //intersection() { @@ -543,9 +596,9 @@ module debug () { bearing_roller_inner(); } */ - color("blue") side_lens_sled_bearing_plate([(RailSpacing / 2) + 23.5 + 20, 0, 0]); + //color("blue") side_lens_sled_bearing_plate([(RailSpacing / 2) + 23.5 + 20, 0, 0]); - lens_frame_top_gantry([0, -20, 260]); + //lens_frame_top_gantry([0, -20, 260]); //bearing_roller(); @@ -563,7 +616,7 @@ module debug () { } -PART = "rail_end"; +PART = "corner_bracket"; if (PART == "rail_end") { rail_end(Projector = true); @@ -585,6 +638,8 @@ if (PART == "rail_end") { corner_outer_bracket(Rotate = true); } else if (PART == "lens_frame_top_gantry") { lens_frame_top_gantry(rot = [180, 0, 0]); +} else if (PART == "projector_orbital_brace") { + projector_orbital_brace(rot = [180, 0, 0]); } else { debug(); } \ No newline at end of file