Compare commits

..

2 Commits

18 changed files with 887164 additions and 155903 deletions

View File

@ -1,5 +1,5 @@
{ {
"version": "1.8.15", "version": "1.8.17",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

2
app/package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{ {
"version": "1.8.15", "version": "1.8.17",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

4
package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{ {
"version": "1.8.15", "version": "1.8.17",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

View File

@ -196,7 +196,7 @@ module stepper_mount_block (pos = [0, 0, 0]) {
bolt_and_cap_void([-BoltX, -BoltY, 10], H, H); bolt_and_cap_void([-BoltX, -BoltY, 10], H, H);
// //
LED_void([0, 17.25, -4.5], [0, 0, 45]); LED_void([0, 17.25, -4.5], [0, 0, 45]);
LED_void([0, -17.25, 1.5], [0, 0, 45], true); LED_void([0, -17.25, 2.5], [0, 0, 45], true);
} }
} }
} }
@ -259,17 +259,18 @@ module gate_key (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate([0, 0, -3]) scale([1.07, 1.07, 1]) { translate([0, 0, -3]) scale([1.07, 1.07, 1]) {
NEMA17_motor_shaft([0, 0, -5]); NEMA17_motor_shaft([0, 0, -5]);
} }
//octagon_void([0, 0, 3.5]); octagon_void([0, 0, 3.5], D = 24);
translate([0, 0, OctoVoidZ]) { /*translate([0, 0, OctoVoidZ]) {
for (i = [0 : 7]) { for (i = [0 : 7]) {
rotate([0, 0, i * (360 / 8)]) { rotate([0, 0, i * (360 / 8)]) {
translate([OctoVoidX, 0, 0]) rotate([0, 45, 0]) cube([2, 35, 2], center = true); translate([OctoVoidX, 0, 0]) rotate([0, 45, 0]) cube([2, 35, 2], center = true);
//translate([OctoVoidX, 0, 0]) rotate([90, 0, 0]) cylinder(r = R(2), h = 35, center = true, $fn = 30); //translate([OctoVoidX, 0, 0]) rotate([90, 0, 0]) cylinder(r = R(2), h = 35, center = true, $fn = 30);
} }
} }
} }*/
//normalization flat
translate([0, 27, -3.5 - (Extension / 2)]) cube([29, 29, 10 + Extension + 1], center = true); //registration flat
translate([0, 26.5, -3.5 - (Extension / 2)]) cube([29, 29, 10 + Extension + 1], center = true);
//key //key
rotate ([0, 0, 45]) { rotate ([0, 0, 45]) {
translate([0, (10 / 2) + (KeyWidth / 2), KeyZ]) cube([10, 10, 10], center = true); translate([0, (10 / 2) + (KeyWidth / 2), KeyZ]) cube([10, 10, 10], center = true);
@ -341,11 +342,11 @@ module debug () {
panel(); panel();
translate([0, -50, 0]) cube([60, 100, 150], center = true); translate([0, -50, 0]) cube([60, 100, 150], center = true);
} }
gate_key([0, -KeyDistance / 2, -13.5], [0, 0, 0]);
}
translate([50, 0, 0]) rotate([0, 0, 45]) cube([100, 250, 150], center = true);
}
}
//translate([50, 0, 0]) rotate([0, 0, 45]) cube([100, 250, 150], center = true);
}
gate_key([0, -KeyDistance / 2, -13.5], [0, 0, 45]);
} }
PART = "gate_key"; PART = "gate_key";

View File

@ -13,7 +13,7 @@ include <./common/rods.scad>
RailSpacing = 100; //160 RailSpacing = 100; //160
ThreadedRodSpacing = 50; ThreadedRodSpacing = 50;
RailEndX = RailSpacing + 40; RailEndX = RailSpacing + 72;
TNutVoid = 17; TNutVoid = 17;
BoltSpacingX = RailSpacing - 30; BoltSpacingX = RailSpacing - 30;
@ -35,8 +35,8 @@ module m3_bolt_void (pos = [0, 0, 0], BoltH = 20, CapH = 3) {
module bolt_voids_2020 (pos = [0, 0, 0], rot = [0, 0, 0]) { module bolt_voids_2020 (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate (rot) { translate(pos) rotate (rot) {
//translate([0, -25, 0]) rotate([90, 0, 0]) m3_bolt_void(CapH = 6); //translate([0, -25, 0]) rotate([90, 0, 0]) m3_bolt_void(CapH = 6);
translate([0, 20, 0]) rotate([-90, 0, 0]) m3_bolt_void(CapH = 20); translate([0, 25, 0]) rotate([-90, 0, 0]) m3_bolt_void(CapH = 20);
translate([-16, 0, 0]) rotate([0, -90, 0]) m3_bolt_void(CapH = 6, BoltH = 10); translate([-25, 0, 0]) rotate([0, -90, 0]) m3_bolt_void(CapH = 6, BoltH = 20);
} }
} }
@ -136,7 +136,7 @@ module sled (pos = [0, 0, 0], rot = [90, 0, 0], Length = 60) {
translate([-RailSpacing / 2, 0, 0]) cube([21, 22, Z + 1], center = true); translate([-RailSpacing / 2, 0, 0]) cube([21, 22, Z + 1], center = true);
translate([RailSpacing / 2, 0, 0]) cube([21, 22, Z + 1], center = true); translate([RailSpacing / 2, 0, 0]) cube([21, 22, Z + 1], center = true);
//void for bearing roller //void for top bearing rollers
translate([-RailSpacing / 2, -20, 0]) cube([13, 22, Z + 1], center = true); translate([-RailSpacing / 2, -20, 0]) cube([13, 22, Z + 1], center = true);
translate([RailSpacing / 2, -20, 0]) cube([13, 22, Z + 1], center = true); translate([RailSpacing / 2, -20, 0]) cube([13, 22, Z + 1], center = true);
@ -158,10 +158,11 @@ module camera_sled (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) sled(Length = 110); translate(pos) sled(Length = 110);
} }
module sled_bearing_void (pos = [0, 0, 0], rot = [0, 0, 0]) { module top_sled_bearing_void (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) { translate(pos) rotate(rot) {
cylinder(r = R(27), h = 11, center = true, $fn = 120); cylinder(r = R(27), h = 11, center = true, $fn = 120);
translate([0, -27 / 2, 0]) cube([27, 27, 11 ], center = true, $fn = 60); translate([0, -27 / 2, 0]) cube([27, 27, 11 ], center = true, $fn = 60);
cylinder(r = R(8.3), h = 16, center = true, $fn = 80); cylinder(r = R(8.3), h = 16, center = true, $fn = 80);
translate([0, -50, 0]) cube([8.3, 100, 16 ], center = true, $fn = 60); translate([0, -50, 0]) cube([8.3, 100, 16 ], center = true, $fn = 60);
cylinder(r = R(5.2), h = 40, center = true, $fn = 60); cylinder(r = R(5.2), h = 40, center = true, $fn = 60);
@ -169,6 +170,31 @@ module sled_bearing_void (pos = [0, 0, 0], rot = [0, 0, 0]) {
} }
} }
module side_sled_bearing_void (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
cylinder(r = R(27), h = 11, center = true, $fn = 120);
translate([0, -27 / 2, 0]) cube([27, 27, 11 ], center = true, $fn = 60);
translate([0, 1, 0]) {
cylinder(r = R(8.3), h = 16, center = true, $fn = 80);
translate([0, -50, 0]) cube([8.3, 100, 16 ], center = true, $fn = 60);
}
translate([0, -18, 0]) cube([50, 27, 16.2], center = true, $fn = 60);
/*translate([0, -35 / 2, 0]) rotate([90, 0, 0]) {
cylinder(r = R(5.2), h = 40, center = true, $fn = 60);
translate([0, 0, 27]) cylinder(r = R(9), h = 30, center = true, $fn = 60);
}*/
}
}
module side_lens_sled_bearing_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
Y = 40;
translate(pos) rotate(rot) {
difference () {
cube([25, Y, 15.9], center = true);
}
}
}
module lens_sled_m3_bolt_voids (pos = [0, 0, 0], rot = [0, 0, 0]) { module lens_sled_m3_bolt_voids (pos = [0, 0, 0], rot = [0, 0, 0]) {
D = 16; D = 16;
translate(pos) rotate(rot) { translate(pos) rotate(rot) {
@ -183,7 +209,9 @@ module lens_sled (pos = [0, 0, 0], rot = [90, 0, 0]) {
Y = 40; Y = 40;
LensDriveX = -ThreadedRodSpacing / 2; LensDriveX = -ThreadedRodSpacing / 2;
RailVoid = 20.4; RailVoid = 20.4;
LensFrameSpacingX = (RailEndX / 2) - (Y / 2);
LensFrameM3VoidsZ = (60 / 2) + (40 / 2) - 12.5 + 5 + 6; LensFrameM3VoidsZ = (60 / 2) + (40 / 2) - 12.5 + 5 + 6;
translate(pos) rotate(rot) { translate(pos) rotate(rot) {
difference () { difference () {
union () { union () {
@ -196,12 +224,15 @@ module lens_sled (pos = [0, 0, 0], rot = [90, 0, 0]) {
//camera drive passthrough //camera drive passthrough
translate([-LensDriveX, 0, 0]) cylinder(r = R(ThreadDiameter + 1), h = Y + 1, center = true, $fn = 60); translate([-LensDriveX, 0, 0]) cylinder(r = R(ThreadDiameter + 1), h = Y + 1, center = true, $fn = 60);
// //
sled_bearing_void([RailSpacing / 2, 21.5, 0], [0, 90, 0]); top_sled_bearing_void([RailSpacing / 2, 21.5, 0], [0, 90, 0]);
sled_bearing_void([-RailSpacing / 2, 21.5, 0], [0, -90, 0]); top_sled_bearing_void([-RailSpacing / 2, 21.5, 0], [0, -90, 0]);
side_sled_bearing_void([(RailSpacing / 2) + 21.5, 0, 0], [90, -90, 0]);
side_sled_bearing_void([-(RailSpacing / 2) - 21.5, 0, 0], [-90, -90, 0]);
//lens carriage frame //lens carriage frame
translate([RailSpacing / 2, 53.5, 0]) cube([RailVoid, 32, RailVoid], center = true); translate([LensFrameSpacingX, 53.5, 0]) cube([RailVoid, 32, RailVoid], center = true);
translate([-RailSpacing / 2, 53.5, 0]) cube([RailVoid, 32, RailVoid], center = true); translate([-LensFrameSpacingX, 53.5, 0]) cube([RailVoid, 32, RailVoid], center = true);
// //
lens_sled_m3_bolt_voids([(RailEndX / 2) - (Y / 2), LensFrameM3VoidsZ, 0]); lens_sled_m3_bolt_voids([(RailEndX / 2) - (Y / 2), LensFrameM3VoidsZ, 0]);
@ -209,8 +240,8 @@ module lens_sled (pos = [0, 0, 0], rot = [90, 0, 0]) {
} }
//rail ends for snug fit //rail ends for snug fit
end_2020([(RailEndX / 2) - (Y / 2), LensFrameM3VoidsZ - (6 / 2) - 5.1, 0], [90, 0, 0]); end_2020([LensFrameSpacingX, LensFrameM3VoidsZ - (6 / 2) - 5.1, 0], [90, 0, 0]);
end_2020([(-RailEndX / 2) + (Y / 2), LensFrameM3VoidsZ - (6 / 2) - 5.1, 0], [90, 0, 0]); end_2020([-LensFrameSpacingX, LensFrameM3VoidsZ - (6 / 2) - 5.1, 0], [90, 0, 0]);
//debug //debug
//translate([-ThreadedRodSpacing / 2, 0, -(Y / 2) + 8.4]) T_nut(); //translate([-ThreadedRodSpacing / 2, 0, -(Y / 2) + 8.4]) T_nut();
//translate([-ThreadedRodSpacing / 2, 0, (Y / 2) - 7.5]) rotate([180, 0, 0]) T_nut(); //translate([-ThreadedRodSpacing / 2, 0, (Y / 2) - 7.5]) rotate([180, 0, 0]) T_nut();
@ -261,13 +292,13 @@ module bearing_roller_inner (pos = [0, 0, 0], rot = [0, 0, 0]) {
module debug () { module debug () {
//translate([50 , -90 - 10, 22]) rotate([0, 90, 0]) bearing_void(); //translate([50 , -90 - 10, 22]) rotate([0, 90, 0]) bearing_void();
rail_end(); //rail_end();
//camera_sled([0, -90, 0]); //camera_sled([0, -90, 0]);
/*difference () { difference () {
lens_sled([0, -90, 0]); lens_sled([0, -90, 0]);
translate([ 50 + (RailSpacing / 2), -90 - 50, 0]) cube([100, 100, 100], center = true); translate([ 50 + (RailSpacing / 2), -90 - 50, 0]) cube([100, 100, 100], center = true);
//translate([ -50 - (RailSpacing / 2), -90, 0]) cube([100, 100, 100], center = true); //translate([ -50 - (RailSpacing / 2), -90, 0]) cube([100, 100, 100], center = true);
}*/ }
//color("green") translate([RailSpacing / 2, -90 + 15, 20]) rotate([0, 0, 0]) linear_extrude(height=100) 2020_profile(); //color("green") translate([RailSpacing / 2, -90 + 15, 20]) rotate([0, 0, 0]) linear_extrude(height=100) 2020_profile();
//difference () { //difference () {
@ -282,6 +313,13 @@ module debug () {
bearing_roller_inner(); bearing_roller_inner();
} }
translate([(RailSpacing / 2) + 21.5, -90, 0]) rotate([0, 0, 0]) {
bearing_roller();
bearing_roller_inner();
}
color("blue") side_lens_sled_bearing_plate([(RailSpacing / 2) + 30, -90, 0]);
//bearing_roller(); //bearing_roller();
//debug //debug
@ -293,7 +331,7 @@ module debug () {
} }
PART = "rail_end"; PART = "lens_sledx";
if (PART == "rail_end") { if (PART == "rail_end") {
rail_end(); rail_end();

View File

@ -13,5 +13,5 @@ allParts () {
parallelParts () { parallelParts () {
PARTS=($(listParts "scad/${1}.scad")) PARTS=($(listParts "scad/${1}.scad"))
parallel --use-cpus-instead-of-cores -j -1 bash ./scripts/openscadPart.sh "${1}.scad" "{}" "${1}_{}.stl" ::: "${PARTS[@]}" parallel --jobs 8 bash ./scripts/openscadPart.sh "${1}.scad" "{}" "${1}_{}.stl" ::: "${PARTS[@]}"
} }

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
openscad --enable=fast-csg -o "./stl/${3}" -D"PART=\"${2}\"" "./scad/${1}" openscad --enable=fast-csg --enable=fast-csg-trust-corefinement --export-format=asciistl -o "./stl/${3}" -D"PART=\"${2}\"" "./scad/${1}"
echo "Compiled ${3} from ${1}" echo "Compiled ${3} from ${1}"
if [ -f "./scad/common/c14n_stl.py" ]; then if [ -f "./scad/common/c14n_stl.py" ]; then
python3 ./scad/common/c14n_stl.py "./stl/${3}" python3 ./scad/common/c14n_stl.py "./stl/${3}"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff