Save gate work (broken).

This commit is contained in:
Matt McWilliams 2024-09-12 23:10:08 -04:00
parent 95f8674d72
commit 73418031ae
8 changed files with 218 additions and 8 deletions

View File

@ -1,5 +1,5 @@
{
"version": "1.8.125",
"version": "1.8.126",
"ext_port": 1111,
"profiles": {
"mcopy": {

2
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "mcopy-app",
"version": "1.8.125",
"version": "1.8.126",
"lockfileVersion": 2,
"requires": true,
"packages": {

View File

@ -1,6 +1,6 @@
{
"name": "mcopy-app",
"version": "1.8.125",
"version": "1.8.126",
"description": "GUI for the mcopy small gauge film optical printer platform",
"main": "main.js",
"scripts": {

View File

@ -1,5 +1,5 @@
{
"version": "1.8.125",
"version": "1.8.126",
"ext_port": 1111,
"profiles": {
"mcopy": {

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "mcopy",
"version": "1.8.125",
"version": "1.8.126",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mcopy",
"version": "1.8.125",
"version": "1.8.126",
"license": "MIT",
"dependencies": {
"alert": "file:app/lib/alert",

View File

@ -1,6 +1,6 @@
{
"name": "mcopy",
"version": "1.8.125",
"version": "1.8.126",
"description": "Small gauge film optical printer platform",
"main": "build.js",
"directories": {

View File

@ -1,5 +1,5 @@
{
"version": "1.8.125",
"version": "1.8.126",
"ext_port": 1111,
"profiles": {
"mcopy": {

210
scad/mcopy_gate.scad Normal file
View File

@ -0,0 +1,210 @@
include <./common/common.scad>;
PlateZ = 1.3 + 1;
PlateX = 35.1;
PlateY = 30.1;
FrontPlateVoidX = 14.2;
FrontPlateVoidY = 12.9;
BackPlateVoidX = 10.77;
BackPlateVoidY = 8.71;
FrontPlateClearanceX = 10.5;
FrontPlateSpacerX = 15;
FrontPlateSpacerZ = 0.5;
PerfSpacingX = 12.1;
PerfSpacingY = 22.75;
AlignmentX = 13.2;
AlignmentSpacingY = 22.7;
PlateBoltSpacingY = 14;
PlateBoltX = 2.58;
BoltD = 2;
Super16X = 12.4;
Super16Y = 7.5;
module perf_void (pos = [0, 0, 0]) {
translate(pos) cube([2.3, 1.79, 10], center = true);
}
module perfs_void () {
perf_void([PerfSpacingX / 2, PerfSpacingY / 2, 0]);
perf_void([-PerfSpacingX / 2, PerfSpacingY / 2, 0]);
perf_void([PerfSpacingX / 2, -PerfSpacingY / 2, 0]);
perf_void([-PerfSpacingX / 2, -PerfSpacingY / 2, 0]);
}
module front_plate_void (pos = [0, 0, 0]) {
translate(pos) {
//large void
cube([FrontPlateVoidX + 3.5, FrontPlateVoidY, PlateZ + 1], center = true);
//film Clearance
film_clearance_void([0, 0, -1 - 0.2]);
//perfs
perfs_void();
}
}
module front_plate () {
difference () {
union () {
rounded_cube([PlateX, PlateY, PlateZ], d = 2, $fn = 25, center = true);
//front plate spacer
translate([-(PlateX / 2) + (FrontPlateSpacerX / 2), 0, (-PlateZ / 2) - (FrontPlateSpacerZ / 2)]) cube([FrontPlateSpacerX, PlateY, FrontPlateSpacerZ], center = true);
}
front_plate_void([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, -0.2]);
//corners
translate([(-PlateX / 2), (PlateY / 2) - 0.8, 0]) rotate([0, 0, 35]) cube([7.1 * 2, 7.1, PlateZ + 2], center = true);
translate([(-PlateX / 2), (-PlateY / 2) + 0.8, 0]) rotate([0, 0, -35]) cube([7.1 * 2, 7.1, PlateZ + 2], center = true);
//bolts
translate([(-PlateX / 2) + PlateBoltX, PlateBoltSpacingY / 2, 0]) cylinder(r = R(BoltD), h = 10, center = true , $fn = 30);
translate([(-PlateX / 2) + PlateBoltX, -PlateBoltSpacingY / 2, 0]) cylinder(r = R(BoltD), h = 10, center = true , $fn = 30);
//alignment rod voids
translate([(-PlateX / 2) + AlignmentX, AlignmentSpacingY / 2, 0]) cylinder(r = R(BoltD + 0.1), h = 10, center = true , $fn = 30);
translate([(-PlateX / 2) + AlignmentX, -AlignmentSpacingY / 2, 0]) cylinder(r = R(BoltD + 0.1), h = 10, center = true , $fn = 30);
}
}
module gate_mask_slide (pos = [0, 0, 0], pad = 0.0, format = "") {
Z = -1;
GuideAdjust = -1.5;
FormatBevelY = format == "super16" ? 5 : 5.5;
translate(pos) {
difference () {
union () {
translate([0, 0, Z]) cube([20, FrontPlateVoidY + pad, PlateZ + 2], center = true);
intersection () {
translate([0, 0, Z]) cube([20, 100, PlateZ + 2], center = true);
union () {
translate([0, FrontPlateVoidY / 2 + GuideAdjust, Z]) rotate([45, 0, 0]) cube([20, PlateZ + 2 + pad, PlateZ + 2 + pad], center = true);
translate([0, -FrontPlateVoidY / 2 - GuideAdjust, Z]) rotate([45, 0, 0]) cube([20, PlateZ + 2 + pad, PlateZ + 2 + pad], center = true);
}
}
if (format != "") {
translate([(20 / 2) + .6, 0, -3.5]) cube([2, FrontPlateVoidY + 8, PlateZ + 2 + 5], center = true);
}
}
// difference
if (format != "") {
difference () {
film_clearance_void([0, 0, 1 + 0.2]);
if (format == "standard16" || format == "super16") {
difference () {
cube([BackPlateVoidX + 10, BackPlateVoidY + 6, 10], center = true);
translate([0, BackPlateVoidY / 2 + FormatBevelY, 4.5]) rotate([-20, 0, 0]) cube([FrontPlateClearanceX + 3, 10, 10], center = true);
translate([0, -BackPlateVoidY / 2 - FormatBevelY, 4.5]) rotate([20, 0, 0]) cube([FrontPlateClearanceX + 3, 10, 10], center = true);
}
}
}
}
if (format == "standard16") {
cube([BackPlateVoidX, BackPlateVoidY, 10], center = true);
translate([0, 0, -4.5]) trap_cube(height = 5, top_x = BackPlateVoidX, top_y = BackPlateVoidY, bottom_x = BackPlateVoidX + 5, bottom_y = BackPlateVoidY + 5, wall_thickness = 50);
} else if (format == "super16") {
translate([(-BackPlateVoidX / 2) + (Super16X / 2), 0, 0]) {
cube([Super16X, Super16Y, 10], center = true);
translate([0, 0, -4.5]) trap_cube(height = 5, top_x = Super16X, top_y = Super16Y, bottom_x = Super16X + 5, bottom_y = Super16Y + 5, wall_thickness = 50);
}
}
}
//translate([0, 0, -5]) trap_cube(height = 5, top_x = BackPlateVoidX, top_y = BackPlateVoidY, bottom_x = BackPlateVoidX + 5, bottom_y = BackPlateVoidY + 5, wall_thickness = 50);
}
}
module gate_mask_slide_standard16 (pos = [0, 0, 0]) {
gate_mask_slide(pos, pad = 0.0, format = "standard16");
}
module gate_mask_slide_super16 (pos = [0, 0, 0]) {
gate_mask_slide(pos, pad = 0.0, format = "super16");
}
module film_clearance_void (pos = [0, 0, 0]) {
Z = -0.5;
translate(pos) {
//film clearance
cube([FrontPlateClearanceX, PlateY + 1, PlateZ], center = true);
//bevels
intersection () {
union () {
translate([FrontPlateClearanceX / 2, 0, 0]) rotate([0, 45, 0]) cube([2, PlateY + 1, 2], center = true);
translate([-FrontPlateClearanceX / 2, 0, 0]) rotate([0, 45, 0]) cube([2, PlateY + 1, 2], center = true);
}
cube([FrontPlateClearanceX + 40, PlateY + 1, PlateZ], center = true);
}
}
}
module back_plate_void (pos = [0, 0, 0]) {
translate(pos) {
//large void
translate([(PlateX / 2) - (20 / 2) - (FrontPlateVoidX / 2) , 0, 0]) {
cube([20, FrontPlateVoidY + 0.2, 10], center = true);
gate_mask_slide( pad = 0.2);
}
//film clearance
film_clearance_void([0, 0, 1 + 0.2]);
//perfs
perfs_void();
}
}
module back_plate () {
RodZ = 4;
ExtraPlateZ = 1;
difference () {
union () {
rounded_cube([PlateX, PlateY, PlateZ], d = 2, $fn = 25, center = true);
translate([0, 0, -(PlateZ / 2) - (ExtraPlateZ / 2)]) rounded_cube([PlateX, PlateY, 2], d = ExtraPlateZ, $fn = 25, center = true);
}
back_plate_void([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, 0]);
//corners
translate([(-PlateX / 2), (PlateY / 2) - 0.8, 0]) rotate([0, 0, 35]) cube([7.1 * 2, 7.1, 10], center = true);
translate([(-PlateX / 2), (-PlateY / 2) + 0.8, 0]) rotate([0, 0, -35]) cube([7.1 * 2, 7.1, 10], center = true);
//bolts
translate([(-PlateX / 2) + PlateBoltX, PlateBoltSpacingY / 2, 0]) cylinder(r = R(BoltD), h = 10, center = true , $fn = 30);
translate([(-PlateX / 2) + PlateBoltX, -PlateBoltSpacingY / 2, 0]) cylinder(r = R(BoltD), h = 10, center = true , $fn = 30);
}
//alignment rods
translate([(-PlateX / 2) + AlignmentX, AlignmentSpacingY / 2, RodZ / 2]) cylinder(r = R(BoltD), h = RodZ, center = true , $fn = 30);
translate([(-PlateX / 2) + AlignmentX, -AlignmentSpacingY / 2, RodZ / 2]) cylinder(r = R(BoltD), h = RodZ, center = true , $fn = 30);
}
module debug () {
//front_plate();
translate([0, 0, -3]) back_plate();
gate_mask_slide_standard16([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, -3]);
gate_mask_slide_super16([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, -3+3]);
//front_plate_void([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, 0]);
film_clearance_void([0, 0, 15]);
}
PART="gate_mask_slide_super16";
if (PART == "front_plate") {
rotate([0, 180, 0]) front_plate();
} else if (PART == "back_plate") {
back_plate();
} else if (PART == "gate_mask_slide") {
rotate([0, 90, 0]) gate_mask_slide();
} else if (PART == "gate_mask_slide_standard16") {
rotate([0, 90, 0]) gate_mask_slide_standard16();
} else if (PART == "gate_mask_slide_super16") {
rotate([0, 90, 0]) gate_mask_slide_super16();
} else {
debug();
}