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
url = https://github.com/openscad/MCAD.git
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,
"profiles": {
"mcopy": {

2
app/package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{
"version": "1.8.154",
"version": "1.8.155",
"ext_port": 1111,
"profiles": {
"mcopy": {

4
package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{
"version": "1.8.154",
"version": "1.8.155",
"ext_port": 1111,
"profiles": {
"mcopy": {

View File

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

View File

@ -1,4 +1,3 @@
use <./common/common.scad>;
use <./bolex.scad>;
@ -26,13 +25,19 @@ C2 = 90.6;
OFFSETX = 0;
CameraSledBolexZ = 33;
CameraSledBolexX = 100;
CameraSledBolexY = 105;
CameraSledBolexX = 120;
CameraSledBolexY = 110;
CameraSledBolexOffsetX = 13.5;
CameraSledBolexBoltOffsetY = -33;
CameraSledBolexBoltSpacingY = 52;
CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15;
CameraSledBolexPlateOffsetY = 0;
CameraBoltX = (A1 + A2) / 2; //75;
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) {
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);
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
camera_sled_bolex_plate_blank([0, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
translate([-33, -22, 10]) rotate([0, 90, 0]) m5_nut();
translate([-33, -22, 20]) cube([5, 7.9, 20], center = true);
//m5 bolt
translate([-25, -22, 10]) cy(5.1, 25, 40, Y = 90);
translate([-25 - 27, -22, 10]) cy(9, 30, 40, Y = 90);
camera_sled_bolex_plate_blank([CameraSledBolexOffsetX, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
//m5 bolt sides
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);
}
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);
}
PART = "jk_camera_sled_nut";
PART = "jk_camera_sled_bolex";
if (PART == "jk_camera_sled_bolex") {
jk_camera_sled_bolex();

View File

@ -29,13 +29,19 @@ CameraBoltX = 75;
CameraBoltY = 80;
CameraSledBolexZ = 33;
CameraSledBolexX = 100;
CameraSledBolexX = 120;
CameraSledBolexY = 110;
CameraSledBolexOffsetX = 13.5;
CameraSledBolexBoltOffsetY = -33;
CameraSledBolexBoltSpacingY = 52;
CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15;
CameraSledBolexPlateOffsetY = 0;
CameraSledArriSZ = 33 + 52;
CameraSledArriSX = 100;
CameraSledArriSY = 110;
@ -561,7 +567,7 @@ module camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
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);
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
camera_sled_bolex_plate_blank([0, -(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
translate([-25, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) cy(5.1, 25, 40, Y = 90);
translate([-25 - 27, -22, (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2) + 1]) cy(9, 30, 40, Y = 90);
}
camera_sled_bolex_plate_blank([CameraSledBolexOffsetX, -(PlateY / 2), (CameraSledBolexZ / 2) - (CameraSledBolexPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
//m5 bolt sides
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);
}
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;
X = CameraSledBolexX;
Y = CameraSledBolexY;
CameraBoltLen = 20;
CameraBoltLen = 18;
CameraBolts = ["3/8", "1/4", "3/8"];
CameraBoltsY = [ -5.2, -27.35, -55.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
translate([-18, -22, 10]) rotate([0, 90, 0]) m5_nut();
translate([-18, -22, 20]) cube([5, 7.9, 20], center = true);
translate([-25, -22, 10]) 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);
}
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
camera_bolex_plate_lines_y(Z / 2);
@ -1082,8 +1125,9 @@ module debug () {
camera_sled_bolex([0, -90, 54]);
//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]);
//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") {
rail_end(Projector = true);

1
scad/takeup Submodule

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

View File

@ -7,11 +7,11 @@ listParts () {
allParts () {
PARTS=($(listParts "scad/${1}.scad"))
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
}
parallelParts () {
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
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}"
if [ -f "./scad/common/c14n_stl.py" ]; then
python3 ./scad/common/c14n_stl.py "./stl/${3}"

View File

@ -13,26 +13,15 @@ FILES=(
projector_controller
)
PARALLEL=0
HAS_PARALLEL=$(which parallel)
if [[ "${HAS_PARALLEL}" != "" ]]; then
PARALLEL=1
fi
if [[ "${1}" == "all" ]]; then
for file in "${FILES[@]}"; do
allParts "${file}"
bash scad/common/scad.sh "./scad/${file}.scad" "${2}"
bash scripts/bom.sh "./scad/${file}.scad"
done
else
if [ -f "scad/${1}.scad" ]; then
if [ ${PARALLEL} -eq 1 ]; then
parallelParts "${1}"
bash scripts/bom.sh "./scad/${1}.scad"
else
allParts "${1}"
bash scripts/bom.sh "./scad/${1}.scad"
fi
bash scad/common/scad.sh "./scad/${1}.scad" "${2}"
bash scripts/bom.sh "./scad/${1}.scad"
elif [[ "${1}" != "" ]]; then
echo "File scad/${1}.scad not found"
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
endloop
endfacet
facet normal -0.99691737 -0.078458935 0
facet normal -0.99691737 -0.078458935 -7.538855e-9
outer loop
vertex 4.6915197 0.7430637 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
endloop
endfacet
@ -13187,10 +13180,24 @@ solid OpenSCAD_Model
vertex 4.75 0 4.4253755
endloop
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
vertex 4.711031 0.4951493 4.439835
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
endloop
endfacet
@ -13222,13 +13229,6 @@ solid OpenSCAD_Model
vertex 5.0156226 2.8957713 2.9509382
endloop
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
outer loop
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