Overhaul of scad submodules and scripts. Use the scad.sh script in the common module

This commit is contained in:
Matt McWilliams 2025-02-12 22:36:18 -05:00
parent 71e541afb5
commit 02e697822b
21 changed files with 47145 additions and 26839 deletions

4
.gitmodules vendored
View File

@ -10,3 +10,7 @@
path = scad/MCAD path = scad/MCAD
url = https://github.com/openscad/MCAD.git url = https://github.com/openscad/MCAD.git
ignore = dirty ignore = dirty
[submodule "scad/takeup"]
path = scad/takeup
url = https://git.sixteenmillimeter.com/modules/takeup.git
ignore = dirty

View File

@ -1,5 +1,5 @@
{ {
"version": "1.8.154", "version": "1.8.155",
"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.154", "version": "1.8.155",
"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.154", "version": "1.8.155",
"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.154", "version": "1.8.155",
"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.154", "version": "1.8.155",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "mcopy", "name": "mcopy",
"version": "1.8.154", "version": "1.8.155",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"alert": "file:app/lib/alert", "alert": "file:app/lib/alert",

View File

@ -1,6 +1,6 @@
{ {
"name": "mcopy", "name": "mcopy",
"version": "1.8.154", "version": "1.8.155",
"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.154", "version": "1.8.155",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

View File

@ -1,8 +1,8 @@
use <./common/common.scad>; use <./common/common.scad>;
BolexFilmPlaneZ = 108.7; BolexFilmPlaneZ = 108.7;
BolexFilmPlaneX = 0; BolexFilmPlaneX = -13.5;
BolexFilmPlaneY = 0; BolexFilmPlaneY = (78 / 2) - 4;
module debug_bolex_film_plane (pos = [0, 0, 0], rot = [0, 0, 0]) { module debug_bolex_film_plane (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) { translate(pos) rotate(rot) {

View File

@ -1,4 +1,3 @@
use <./common/common.scad>; use <./common/common.scad>;
use <./bolex.scad>; use <./bolex.scad>;
@ -26,13 +25,19 @@ C2 = 90.6;
OFFSETX = 0; OFFSETX = 0;
CameraSledBolexZ = 33; CameraSledBolexZ = 33;
CameraSledBolexX = 100; CameraSledBolexX = 120;
CameraSledBolexY = 105; CameraSledBolexY = 110;
CameraSledBolexOffsetX = 13.5;
CameraSledBolexBoltOffsetY = -33;
CameraSledBolexBoltSpacingY = 52;
CameraSledBolexPlateX = 60; CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90; CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15; CameraSledBolexPlateZ = 15;
CameraSledBolexPlateOffsetY = 0;
CameraBoltX = (A1 + A2) / 2; //75; CameraBoltX = (A1 + A2) / 2; //75;
CameraBoltY = (C1 + C2) / 2; CameraBoltY = (C1 + C2) / 2;
@ -128,7 +133,7 @@ module jk_camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) { translate(pos) rotate(rot) {
difference () { difference () {
rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40); translate([CameraSledBolexOffsetX, 0, 0]) rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40);
translate([0, 0, -20]) rounded_cube([CameraBoltX - 10, CameraBoltY - 10, Z], d = 10, center = true, $fn = 40); translate([0, 0, -20]) rounded_cube([CameraBoltX - 10, CameraBoltY - 10, Z], d = 10, center = true, $fn = 40);
enlarged_m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z); enlarged_m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z);
@ -145,14 +150,33 @@ module jk_camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
//void for plate //void for plate
camera_sled_bolex_plate_blank([0, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1); camera_sled_bolex_plate_blank([CameraSledBolexOffsetX, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
translate([-33, -22, 10]) rotate([0, 90, 0]) m5_nut(); //m5 bolt sides
translate([-33, -22, 20]) cube([5, 7.9, 20], center = true); translate([-25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
//m5 bolt translate([-27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([-25, -22, 10]) cy(5.1, 25, 40, Y = 90); translate([-9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([-25 - 27, -22, 10]) cy(9, 30, 40, Y = 90); translate([-9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([-25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([-27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([-9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([-9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([9, 0, 11]) cube([5, 7.9, 20], center = true);
}
} }
} }
@ -202,7 +226,7 @@ module debug () {
translate([-A2 / 2, -C2 / 2, 90]) cylinder(r = R(5), h = 80, center = true, $fn = 30); translate([-A2 / 2, -C2 / 2, 90]) cylinder(r = R(5), h = 80, center = true, $fn = 30);
} }
PART = "jk_camera_sled_nut"; PART = "jk_camera_sled_bolex";
if (PART == "jk_camera_sled_bolex") { if (PART == "jk_camera_sled_bolex") {
jk_camera_sled_bolex(); jk_camera_sled_bolex();

View File

@ -29,13 +29,19 @@ CameraBoltX = 75;
CameraBoltY = 80; CameraBoltY = 80;
CameraSledBolexZ = 33; CameraSledBolexZ = 33;
CameraSledBolexX = 100; CameraSledBolexX = 120;
CameraSledBolexY = 110; CameraSledBolexY = 110;
CameraSledBolexOffsetX = 13.5;
CameraSledBolexBoltOffsetY = -33;
CameraSledBolexBoltSpacingY = 52;
CameraSledBolexPlateX = 60; CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90; CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15; CameraSledBolexPlateZ = 15;
CameraSledBolexPlateOffsetY = 0;
CameraSledArriSZ = 33 + 52; CameraSledArriSZ = 33 + 52;
CameraSledArriSX = 100; CameraSledArriSX = 100;
CameraSledArriSY = 110; CameraSledArriSY = 110;
@ -561,7 +567,7 @@ module camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) { translate(pos) rotate(rot) {
difference () { difference () {
rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40); translate([CameraSledBolexOffsetX, 0, 0]) rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40);
translate([0, 0, -20]) rounded_cube([CameraBoltX - 10, CameraBoltY - 10, Z], d = 10, center = true, $fn = 40); translate([0, 0, -20]) rounded_cube([CameraBoltX - 10, CameraBoltY - 10, Z], d = 10, center = true, $fn = 40);
m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z); m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z);
@ -578,15 +584,34 @@ module camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
//void for plate //void for plate
camera_sled_bolex_plate_blank([0, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1); camera_sled_bolex_plate_blank([CameraSledBolexOffsetX, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
translate([-33, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) rotate([0, 90, 0]) m5_nut();
translate([-33, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 11]) cube([5, 7.9, 20], center = true);
//m5 bolt //m5 bolt sides
translate([-25, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) cy(5.1, 25, 40, Y = 90); translate([-25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
translate([-25 - 27, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) cy(9, 30, 40, Y = 90); cy(5.1, 25, 40, Y = 90);
translate([-27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([-9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([-9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([-25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([-27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([-9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([-9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([9, 0, 11]) cube([5, 7.9, 20], center = true);
}
translate([25 + CameraSledBolexOffsetX, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) {
cy(5.1, 25, 40, Y = 90);
translate([27 , 0, 0]) cy(9, 30, 40, Y = 90);
translate([9, 0, 0]) rotate([0, 90, 0]) m5_nut();
translate([9, 0, 11]) cube([5, 7.9, 20], center = true);
}
} }
} }
} }
@ -652,7 +677,7 @@ module camera_sled_bolex_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
Z = CameraSledBolexZ; Z = CameraSledBolexZ;
X = CameraSledBolexX; X = CameraSledBolexX;
Y = CameraSledBolexY; Y = CameraSledBolexY;
CameraBoltLen = 20; CameraBoltLen = 18;
CameraBolts = ["3/8", "1/4", "3/8"]; CameraBolts = ["3/8", "1/4", "3/8"];
CameraBoltsY = [ -5.2, -27.35, -55.8 ]; CameraBoltsY = [ -5.2, -27.35, -55.8 ];
CameraBoltsX = [0, 0, 6.8 ]; CameraBoltsX = [0, 0, 6.8 ];
@ -667,9 +692,27 @@ module camera_sled_bolex_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
} }
} }
//m5 nut drop in //m5 nut drop in
translate([-18, -22, 10]) rotate([0, 90, 0]) m5_nut(); translate([-20, CameraSledBolexBoltOffsetY, 10]) {
translate([-18, -22, 20]) cube([5, 7.9, 20], center = true); rotate([0, 90, 0]) m5_nut();
translate([-25, -22, 10]) cy(5.1, 25, 40, Y = 90); translate([0, 0, 10]) cube([5, 7.9, 20], center = true);
translate([-7, 0, 0]) cy(5.1, 25, 40, Y = 90);
}
translate([-20, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, 10]) {
rotate([0, 90, 0]) m5_nut();
translate([0, 0, 10]) cube([5, 7.9, 20], center = true);
translate([-7, 0, 0]) cy(5.1, 25, 40, Y = 90);
}
translate([20, CameraSledBolexBoltOffsetY, 10]) {
rotate([0, 90, 0]) m5_nut();
translate([0, 0, 10]) cube([5, 7.9, 20], center = true);
translate([7, 0, 0]) cy(5.1, 25, 40, Y = 90);
}
translate([20, CameraSledBolexBoltOffsetY + CameraSledBolexBoltSpacingY, 10]) {
rotate([0, 90, 0]) m5_nut();
translate([0, 0, 10]) cube([5, 7.9, 20], center = true);
translate([7, 0, 0]) cy(5.1, 25, 40, Y = 90);
}
//lines //lines
camera_bolex_plate_lines_y(Z / 2); camera_bolex_plate_lines_y(Z / 2);
@ -1082,8 +1125,9 @@ module debug () {
camera_sled_bolex([0, -90, 54]); camera_sled_bolex([0, -90, 54]);
//camera_sled_arris([0, -90, 54 + 26]); //camera_sled_arris([0, -90, 54 + 26]);
color("red") camera_sled_bolex_plate([13.5, -91, 55]);
debug_bolex([0, -90, 70.75]); debug_bolex([13.5, -90, 70.75]);
//debug_arris([0, -91, 70.75 + 51.75]); //debug_arris([0, -91, 70.75 + 51.75]);
//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();
@ -1171,7 +1215,7 @@ module debug2 () {
} }
PART = "camera_sled_arris_platex"; PART = "camera_sled_bolex_plate";
if (PART == "rail_end") { if (PART == "rail_end") {
rail_end(Projector = true); rail_end(Projector = true);

1
scad/takeup Submodule

@ -0,0 +1 @@
Subproject commit dbb3eca85a46c0474c7e68e7febf43db508b53a8

View File

@ -7,11 +7,11 @@ listParts () {
allParts () { allParts () {
PARTS=($(listParts "scad/${1}.scad")) PARTS=($(listParts "scad/${1}.scad"))
for part in "${PARTS[@]}"; do for part in "${PARTS[@]}"; do
bash ./scripts/openscadPart.sh "${1}.scad" "${part}" "${1}_${part}.stl" bash ./scripts/openscadPart.sh "scad/${1}.scad" "${part}" "stl/${1}_${part}.stl"
done done
} }
parallelParts () { parallelParts () {
PARTS=($(listParts "scad/${1}.scad")) PARTS=($(listParts "scad/${1}.scad"))
parallel --jobs 8 bash ./scripts/openscadPart.sh "${1}.scad" "{}" "${1}_{}.stl" ::: "${PARTS[@]}" parallel --jobs 8 bash ./scripts/openscadPart.sh "scad/${1}.scad" "{}" "${1}_{}.stl" ::: "${PARTS[@]}"
} }

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
openscad --export-format=asciistl --enable manifold -o "./stl/${3}" -D"PART=\"${2}\"" "./scad/${1}" openscad --export-format=asciistl --enable manifold -o "./stl/${3}" -D"PART=\"${2}\"" "./${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}"

View File

@ -13,26 +13,15 @@ FILES=(
projector_controller projector_controller
) )
PARALLEL=0
HAS_PARALLEL=$(which parallel)
if [[ "${HAS_PARALLEL}" != "" ]]; then
PARALLEL=1
fi
if [[ "${1}" == "all" ]]; then if [[ "${1}" == "all" ]]; then
for file in "${FILES[@]}"; do for file in "${FILES[@]}"; do
allParts "${file}" bash scad/common/scad.sh "./scad/${file}.scad" "${2}"
bash scripts/bom.sh "./scad/${file}.scad" bash scripts/bom.sh "./scad/${file}.scad"
done done
else else
if [ -f "scad/${1}.scad" ]; then if [ -f "scad/${1}.scad" ]; then
if [ ${PARALLEL} -eq 1 ]; then bash scad/common/scad.sh "./scad/${1}.scad" "${2}"
parallelParts "${1}" bash scripts/bom.sh "./scad/${1}.scad"
bash scripts/bom.sh "./scad/${1}.scad"
else
allParts "${1}"
bash scripts/bom.sh "./scad/${1}.scad"
fi
elif [[ "${1}" != "" ]]; then elif [[ "${1}" != "" ]]; then
echo "File scad/${1}.scad not found" echo "File scad/${1}.scad not found"
exit 2 exit 2

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -13138,17 +13138,10 @@ solid OpenSCAD_Model
vertex 4.6915197 0.7430637 4.4181356 vertex 4.6915197 0.7430637 4.4181356
endloop endloop
endfacet endfacet
facet normal -0.99691737 -0.078458935 0 facet normal -0.99691737 -0.078458935 -7.538855e-9
outer loop outer loop
vertex 4.6915197 0.7430637 1.5 vertex 4.6915197 0.7430637 1.5
vertex 4.75 0 1.5 vertex 4.75 0 1.5
vertex 4.75 0 4.4253755
endloop
endfacet
facet normal -0.99691737 -0.07845898 -1.1285662e-8
outer loop
vertex 4.6915197 0.7430637 1.5
vertex 4.75 0 4.4253755
vertex 4.711031 0.4951493 4.439835 vertex 4.711031 0.4951493 4.439835
endloop endloop
endfacet endfacet
@ -13187,10 +13180,24 @@ solid OpenSCAD_Model
vertex 4.75 0 4.4253755 vertex 4.75 0 4.4253755
endloop endloop
endfacet endfacet
facet normal 0.74258214 0.03891691 0.6686234 facet normal -0.99691737 -0.07845898 0
outer loop
vertex 4.711031 0.4951493 4.439835
vertex 4.75 0 1.5
vertex 4.75 0 4.4253755
endloop
endfacet
facet normal 0.7425821 0.038916904 0.66862345
outer loop outer loop
vertex 4.711031 0.4951493 4.439835 vertex 4.711031 0.4951493 4.439835
vertex 4.75 0 4.4253755 vertex 4.75 0 4.4253755
vertex 5.051449 0 4.0905824
endloop
endfacet
facet normal 0.74258214 0.038916975 0.6686234
outer loop
vertex 4.711031 0.4951493 4.439835
vertex 5.051449 0 4.0905824
vertex 5.0237765 0.5280202 4.0905824 vertex 5.0237765 0.5280202 4.0905824
endloop endloop
endfacet endfacet
@ -13222,13 +13229,6 @@ solid OpenSCAD_Model
vertex 5.0156226 2.8957713 2.9509382 vertex 5.0156226 2.8957713 2.9509382
endloop endloop
endfacet endfacet
facet normal 0.7425821 0.03891697 0.66862345
outer loop
vertex 4.75 0 4.4253755
vertex 5.051449 0 4.0905824
vertex 5.0237765 0.5280202 4.0905824
endloop
endfacet
facet normal 0.77290034 -0.62588215 -0.104386926 facet normal 0.77290034 -0.62588215 -0.104386926
outer loop outer loop
vertex 4.770971 -4.295801 -1.016824 vertex 4.770971 -4.295801 -1.016824

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