All work on mcopy hardware. Improvements to gate peg bars, film path, front block and gate mask slides. Improvement to rails mounts for Bolex and Arri. Improvements to projector controller electronics mount.

This commit is contained in:
Matt McWilliams 2024-11-19 01:24:27 -05:00
parent 34dfb25f57
commit d40957063c
63 changed files with 647351 additions and 809666 deletions

4
.gitignore vendored
View File

@ -11,4 +11,6 @@ dist
notes/mphd
./lib
./lib
./debug

View File

@ -1,5 +1,5 @@
{
"version": "1.8.148",
"version": "1.8.149",
"ext_port": 1111,
"profiles": {
"mcopy": {

2
app/package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{
"version": "1.8.148",
"version": "1.8.149",
"ext_port": 1111,
"profiles": {
"mcopy": {

BIN
debug/mcopy_gate.stl Normal file

Binary file not shown.

View File

@ -1,13 +1,16 @@
module,quantity,part,part_id,description
front_block_pegs,2,M2.5 hex cap bolts 10mm,N/A,Fasctens front_block_pegs to front_block
front_block,2,M5 hex cap bolt 25mm,N/A,
front_block,4,M2.5 hex nut,N/A,Attach the film path blocks
front_block,2,M5 hex cap bolt 25mm,N/A,Attach the front_block to the body
body,2,Bearing,N/A,Center sprocketed_roller in gate voids and allow for smooth rotation
body,2,M3 hex nut,N/A,Attach slide_catch to gate
body,12,M2.5 hex nut,N/A,Attach idle_roller and filter_holder and slide_rail to gate
body,12,M2.5 hex nut,ISO 4032,Attach idle_roller and filter_holder and slide_rail to gate
body,4,M2.5 hex cap bolt 10mm,N/A,Attach slide_rail to gate
body,2,M2.5 hex cap bolt 25mm,N/A,Attach filter_holder to gate
body,6,M2.5 hex cap bolt 15mm,N/A,Attach idle_roller to gate
body,2,M5 hex nut,N/A,Attach front_block to gate
body,2,M5 hex cap bolt 20mm,N/A,Attach gate to projector
sprocketed_roller_nut_16mm,s,,,
sprocketed_roller_nut_16mm,2,M2.5 hex nut,ISO 4032,Attaches the bolt to the nut
sprocketed_roller_nut_16mm,2,M2.5 hex cap bolt 16mm,ISO 4762,Attaches the nut to the sprocketed roller
back_plate,1,M2.5 hex cap bolt 10mm,N/A,Join the front_plate to the back_plate
front_plate,1,M2.5 hex nut,N/A,Join the front_plate to the back_plate
front_plate,1,M2.5 hex nut,ISO 4032,Join the front_plate to the back_plate

1 module quantity part part_id description
2 front_block_pegs 2 M2.5 hex cap bolts 10mm N/A Fasctens front_block_pegs to front_block
3 front_block 2 4 M5 hex cap bolt 25mm M2.5 hex nut N/A Attach the film path blocks
4 front_block 2 M5 hex cap bolt 25mm N/A Attach the front_block to the body
5 body 2 Bearing N/A Center sprocketed_roller in gate voids and allow for smooth rotation
6 body 2 M3 hex nut N/A Attach slide_catch to gate
7 body 12 M2.5 hex nut N/A ISO 4032 Attach idle_roller and filter_holder and slide_rail to gate
8 body 4 M2.5 hex cap bolt 10mm N/A Attach slide_rail to gate
9 body 2 M2.5 hex cap bolt 25mm N/A Attach filter_holder to gate
10 body 6 M2.5 hex cap bolt 15mm N/A Attach idle_roller to gate
11 body 2 M5 hex nut N/A Attach front_block to gate
12 body 2 M5 hex cap bolt 20mm N/A Attach gate to projector
13 sprocketed_roller_nut_16mm s 2 M2.5 hex nut ISO 4032 Attaches the bolt to the nut
14 sprocketed_roller_nut_16mm 2 M2.5 hex cap bolt 16mm ISO 4762 Attaches the nut to the sprocketed roller
15 back_plate 1 M2.5 hex cap bolt 10mm N/A Join the front_plate to the back_plate
16 front_plate 1 M2.5 hex nut N/A ISO 4032 Join the front_plate to the back_plate

View File

@ -3,10 +3,11 @@ quantity,part_id,part,price
2,"M5 hex cap bolt 25mm",N/A,0
2,"M5 hex cap bolt 20mm",N/A,0
2,"M3 hex nut",N/A,6
13,"M2.5 hex nut",N/A,0
19,"M2.5 hex nut",N/A,171
2,"M2.5 hex cap bolts 10mm",N/A,0
2,"M2.5 hex cap bolt 25mm",N/A,0
2,"M2.5 hex cap bolt 16mm","ISO 4762",0
6,"M2.5 hex cap bolt 15mm",N/A,0
5,"M2.5 hex cap bolt 10mm",N/A,0
0.0,"","",0.0
36.0,N/A,TOTALS,6.0
2,Bearing,N/A,0
46,N/A,TOTALS,177

1 quantity part_id part price
3 2 M5 hex cap bolt 25mm N/A 0
4 2 M5 hex cap bolt 20mm N/A 0
5 2 M3 hex nut N/A 6
6 13 19 M2.5 hex nut N/A 0 171
7 2 M2.5 hex cap bolts 10mm N/A 0
8 2 M2.5 hex cap bolt 25mm N/A 0
9 2 M2.5 hex cap bolt 16mm ISO 4762 0
10 6 M2.5 hex cap bolt 15mm N/A 0
11 5 M2.5 hex cap bolt 10mm N/A 0
12 0.0 2 Bearing N/A 0.0 0
13 36.0 46 N/A TOTALS 6.0 177

View File

@ -0,0 +1,4 @@
module,quantity,part,part_id,description
sled,8,Radial bearing,N/A,For something
sled,2,Linear bearing,N/A,For center rails
sled,2,T8 Nut,N/A,For drive screw
1 module quantity part part_id description
2 sled 8 Radial bearing N/A For something
3 sled 2 Linear bearing N/A For center rails
4 sled 2 T8 Nut N/A For drive screw

View File

@ -0,0 +1,5 @@
quantity,part_id,part,price
2,"T8 Nut",N/A,0
8,"Radial bearing",N/A,0
2,"Linear bearing",N/A,0
12,N/A,TOTALS,0
1 quantity part_id part price
2 2 T8 Nut N/A 0
3 8 Radial bearing N/A 0
4 2 Linear bearing N/A 0
5 12 N/A TOTALS 0

View File

@ -0,0 +1,4 @@
module,quantity,part,part_id,description
electronics_attachment,2,M3 hex cap bolt 12mm,N/A,Attach to electronics mount
electronics_mount,2,M3 hex nut,N/A,Attach electronics attachment
electronics_mount,4,M3 hex cap bolt 8mm,N/A,Attach Arduino Uno
1 module quantity part part_id description
2 electronics_attachment 2 M3 hex cap bolt 12mm N/A Attach to electronics mount
3 electronics_mount 2 M3 hex nut N/A Attach electronics attachment
4 electronics_mount 4 M3 hex cap bolt 8mm N/A Attach Arduino Uno

View File

@ -0,0 +1,5 @@
quantity,part_id,part,price
2,"M3 hex nut",N/A,6
4,"M3 hex cap bolt 8mm",N/A,0
2,"M3 hex cap bolt 12mm",N/A,18
8,N/A,TOTALS,24
1 quantity part_id part price
2 2 M3 hex nut N/A 6
3 4 M3 hex cap bolt 8mm N/A 0
4 2 M3 hex cap bolt 12mm N/A 18
5 8 N/A TOTALS 24

View File

@ -1,4 +1,5 @@
part,part_id,price,url
M3 hex nut,N/A,3,https://amzn.to/4hAnwjc
M3 hex cap bolt 12mm,N/A,9,https://amzn.to/48CGa5Y
608-RS Ball Bearing,608-RS,8,https://amzn.to/4fKxDA7
608-RS Ball Bearing,608-RS,8,https://amzn.to/4fKxDA7
M2.5 hex nut, ISO 4032,9,https://www.metricscrewandtool.com/product-page/m2-5-hex-nuts
1 part part_id price url
2 M3 hex nut N/A 3 https://amzn.to/4hAnwjc
3 M3 hex cap bolt 12mm N/A 9 https://amzn.to/48CGa5Y
4 608-RS Ball Bearing 608-RS 8 https://amzn.to/4fKxDA7
5 M2.5 hex nut ISO 4032 9 https://www.metricscrewandtool.com/product-page/m2-5-hex-nuts

4
package-lock.json generated
View File

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

View File

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

View File

@ -1,5 +1,5 @@
{
"version": "1.8.148",
"version": "1.8.149",
"ext_port": 1111,
"profiles": {
"mcopy": {

View File

@ -38,6 +38,12 @@ BearingInnerDiameter = 11.5;
capM3OffsetZ = 11.5;
module debug_arris (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
color("green") cube([60, 80, 0.1], center = true);
color("red") translate([0, 0, 57]) cube([16, 0.1, 10], center = true);
}
}
module motorBarrel () {
$fn = 200;

24
scad/bolex.scad Normal file
View File

@ -0,0 +1,24 @@
use <./common/common.scad>;
BolexFilmPlaneZ = 108.7;
BolexFilmPlaneX = 0;
BolexFilmPlaneY = 0;
module debug_bolex_film_plane (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
color("red") cube([16, 0.1, 10], center = true);
}
}
module debug_bolex_base_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
color("green") cube([56, 78, 0.1], center = true);
}
}
module debug_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
debug_bolex_film_plane([BolexFilmPlaneX, BolexFilmPlaneY, BolexFilmPlaneZ]);
debug_bolex_base_plate();
}
}

View File

@ -79,7 +79,7 @@ module plug_pin_voids (PinH) {
plug_pin(PinSpacing, -PinSpacing, PinH); //7
}
module socket_pin_voids (PinH) {
module socket_pin_voids (PinH, OnlyPins) {
socket_pin(0, 0, PinH); //5
socket_pin(PinSpacing, 0, PinH); //4
socket_pin(-PinSpacing, 0, PinH); //6

View File

@ -1,9 +1,72 @@
include <./common.scad>;
use <./common/common.scad>;
use <./bolex.scad>;
RAIL_SPACING = 160;
RAIL_H = 70;
RAIL_LEN = 400;
RAIL_D=25.4;
RAIL_D = 25.4;
X = 134;
Y = 105.5;
Z = 19;
VX = 106.7;
VY = 76;
A1 = 61;
A2 = 60.2;
B1 = 80.8;
B2 = 80.3;
C1 = 91.7;
C2 = 90.6;
OFFSETX = 0;
CameraSledBolexZ = 33;
CameraSledBolexX = 100;
CameraSledBolexY = 105;
CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15;
CameraBoltX = (A1 + A2) / 2; //75;
CameraBoltY = (C1 + C2) / 2;
module cy (D, H, FN = $fn, X = 0, Y = 0, Z = 0) {
rotate([X, Y, Z]) cylinder(r = R(D), h = H, center = true, $fn = FN);
}
module m5_nut (H = 5, DIAG = 9.1) {
hex(diag = DIAG, h = H);
}
module enlarged_m5_bolt_void (pos = [0, 0, 0], rot = [0, 0, 0], BoltH = 20, CapH = 20) {
$fn = 50;
translate(pos) rotate(rot) {
translate([0, 0, (CapH / 2) - 0.1]) cy(10, CapH);
translate([0, 0, -(BoltH / 2) + 0.1]) cy(6, BoltH);
}
}
module camera_sled_bolex_plate_blank (pos = [0, 0, 0], rot = [0, 0, 0], PadX = 0, PadY = 0, PadZ = 0) {
X = CameraSledBolexPlateX + PadX;
Y = CameraSledBolexPlateY + PadY;
Z = CameraSledBolexPlateZ + PadZ;
BevelZ = 5;
translate(pos) rotate(rot) {
difference () {
cube([X, Y, Z], center = true);
translate([X - BevelZ, 0, Z - BevelZ]) cube([X, Y + 1, Z], center = true);
translate([-X + BevelZ, 0, Z - BevelZ]) cube([X, Y + 1, Z], center = true);
translate([-(X / 2) - 7.83, 0, -3.45]) rotate([0, 20, 0]) cube([20, Y + 1, 20], center = true);
translate([(X / 2) + 7.83, 0, -3.45]) rotate([0, -20, 0]) cube([20, Y + 1, 20], center = true);
}
}
}
module rail (H = 100) {
cylinder(r = R(RAIL_D), h = H, center = true, $fn = 60);
@ -40,7 +103,111 @@ module end () {
}
}
module jk_camera_sled () {
difference () {
cube([X, Y, Z], center = true);
cube([VX, VY, Z + 1], center = true);
translate([OFFSETX, 0, 0]) {
translate([A1 / 2, C1 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([-A1 / 2, C2 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([A2 / 2, -C1 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([-A2 / 2, -C2 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([B1 / 2, C1 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([-B1 / 2, C2 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([B2 / 2, -C1 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
translate([-B2 / 2, -C2 / 2, 0]) cylinder(r = R(5), h = Z * 2, center = true, $fn = 30);
}
}
}
color("blue") rails();
translate([0, RAIL_LEN / 2, 0]) end();
translate([0, -RAIL_LEN / 2, 0]) rotate([0, 0, 180]) end();
module jk_camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
Z = CameraSledBolexZ;
X = CameraSledBolexX;
Y = CameraSledBolexY;
PlateY = 20;
translate(pos) rotate(rot) {
difference () {
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);
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);
enlarged_m5_bolt_void([-CameraBoltX / 2, -CameraBoltY / 2, -10], BoltH = Z * 2, CapH = Z);
//film plane
translate([X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true);
translate([-X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true);
//center
translate([0, 0, Z / 2]) rotate([90, 0, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Y + 1], center = true);
//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);
}
}
}
module jk_camera_sled_nut () {
D = 13;
Ridges = 40;
RidgeD = 1;
difference () {
union () {
difference () {
cylinder(r = R(D), h = 5, center = true, $fn = 50);
translate([0, 0, 2]) m5_nut(5);
cylinder(r = R(5.1), h = 5 + 1, center = true, $fn = 40);
}
for (i = [0 : Ridges - 1]) {
rotate([0, 0, i * (360 / Ridges)]) translate([D / 2, 0, 0]) cylinder(r = R(RidgeD), h = 5, center = true, $fn = 20);
}
}
translate([0, 0, -2]) difference () {
cylinder(r = R(D + 2), h = 2, center = true, $fn = 50);
cylinder(r1 = R(D) - 1, r2 = R(D) + 1, h = 2.01, center = true, $fn = 50);
}
translate([0, 0, 2]) difference () {
cylinder(r = R(D + 2), h = 2, center = true, $fn = 50);
cylinder(r1 = R(D) + 1, r2 = R(D) - 1, h = 2.01, center = true, $fn = 50);
}
}
}
module debug () {
color("blue") rails();
translate([0, RAIL_LEN / 2, 0]) end();
translate([0, -RAIL_LEN / 2, 0]) rotate([0, 0, 180]) end();
translate([0, 0, 79.4]) jk_camera_sled();
jk_camera_sled_bolex([0, 0, 105]);
//debug_bolex([0, 0, 90 + 33]);
translate([0, -150, 160]) cube([10, 10, 145], center = true);
translate([A1 / 2, C1 / 2, 90]) cylinder(r = R(5), h = 80, center = true, $fn = 30);
translate([-A1 / 2, C2 / 2, 90]) cylinder(r = R(5), h = 80, center = true, $fn = 30);
translate([A2 / 2, -C1 / 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";
if (PART == "jk_camera_sled_bolex") {
jk_camera_sled_bolex();
} else if (PART == "jk_camera_sled_nut") {
jk_camera_sled_nut();
} else {
debug();
}

View File

@ -1,19 +1,18 @@
include <./bellows.scad>;
include <./connectors.scad>;
include <./light.scad>;
include <./motor.scad>;
//include <./bellows.scad>;
//include <./connectors.scad>;
//include <./light.scad>;
//include <./motor.scad>;
//use <./mcopy_rails.scad>;
//use <./mcopy_projector.scad>;
//use <./mcopy_lens_assembly.scad>;
//translate([0, 2.5, 0]) rotate([90, 0, 0]) color("red") adafruit_pixie();
//translate([0, 6, 0]) color("blue") pixie_mount();
//translate([0, 0, -50]) color("red") fan(35);
//color("green") diffuser_mount();
//translate([0, 0, -51.2]) light_body35();
//translate([0, 0, 20]) light_vent_top();
//translate ([0, -20, 0]) rotate([90, 90, 0]) color("red") diffuser_insert();
//translate ([0, -10, 0]) rotate([90, 90, 0]) color("red") diffuser_spacer();
//rotate([0, 0, 90]) flashlight_mount();
translate([0, -8.5, 0]) rotate([0, 0, 90]) impromptu_mount();
//translate([30, -8.5, 0]) rotate([90, 0, 90]) flashlight_mount_cap();
//translate([0, -9, 0]) cube([15, 15, 15], center = true);
//light_fresnel();
module assembled_mcopy_gate (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate(pos) rotate(rot) {
include <./mcopy_gate.scad>;
}
}
assembled_mcopy_gate(rot = [90, 90, 0]);

View File

@ -1,6 +1,8 @@
use <./common/common.scad>;
use <./sprocketed_roller/sprocketed_roller_var.scad>;
use <./filmless.scad>;
use <./bolex.scad>;
use <./arri_s.scad>;
PlateZ = 1.3 + 1;
PlateX = 35.1;
@ -128,7 +130,7 @@ module front_plate_void (pos = [0, 0, 0]) {
}
}
//BOM: 1, M2.5 hex nut, N/A, Join the front_plate to the back_plate
//BOM: 1, M2.5 hex nut, ISO 4032, Join the front_plate to the back_plate
module front_plate () {
ExtraPlateZ = 1 / 2;
difference () {
@ -156,11 +158,11 @@ module front_plate () {
//alignment rod voids
translate([(-PlateX / 2) + AlignmentX, AlignmentSpacingY / 2, 0]) {
cylinder(r = R(AlignmentD + 0.45), h = 10, center = true , $fn = 30);
translate([0, 0, 2.2]) cylinder(r = R(AlignmentD + 0.45), r2 = R(AlignmentD + 0.45) + 0.5, h = 1 , center = true , $fn = 30);
translate([0, 0, 2.2]) cylinder(r1 = R(AlignmentD + 0.45), r2 = R(AlignmentD + 0.45) + 0.5, h = 1 , center = true , $fn = 30);
}
translate([(-PlateX / 2) + AlignmentX, -AlignmentSpacingY / 2, 0]) {
cylinder(r = R(AlignmentD + 0.45), h = 10, center = true , $fn = 30);
translate([0, 0, 2.2]) cylinder(r = R(AlignmentD + 0.45), r2 = R(AlignmentD + 0.45) + 0.5, h = 1 , center = true , $fn = 30);
translate([0, 0, 2.2]) cylinder(r1 = R(AlignmentD + 0.45), r2 = R(AlignmentD + 0.45) + 0.5, h = 1 , center = true , $fn = 30);
}
//gate bolt and nut void
translate([-6, 0, 0]) cylinder(r = R(BoltD), h = 20, center = true, $fn = 40);
@ -170,17 +172,17 @@ module front_plate () {
}
}
module text_void (string = "example", pos = [0, 0, 0], rot = [0, 0, 0], letter_size = 5, letter_height = 2) {
module gate_mask_text_void (string = "example", pos = [0, 0, 0], rot = [0, 0, 0], letter_size = 3, letter_height = 2) {
translate(pos) rotate(rot) linear_extrude(height = letter_height) {
text(string, size = letter_size, font = "Liberation Sans", halign = "center", valign = "center", $fn = 16);
text(string, size = letter_size, font = "Liberation Sans:style=Bold", halign = "center", valign = "center", $fn = 16);
}
}
module gate_mask_text (format = "") {
if (format == "standard16") {
text_void("16mm", pos= [11, 0, -3], rot = [90, 0, 90], letter_size = 4);
gate_mask_text_void("16mm", pos = [11, 0, -2.5], rot = [90, 0, 90]);
} else if (format == "super16") {
text_void("super16", pos= [11, 0, -4], rot = [90, 0, 90], letter_size = 4);
gate_mask_text_void("super16", pos = [11, 0, -2.5], rot = [90, 0, 90]);
}
}
@ -190,6 +192,7 @@ module gate_mask_slide (pos = [0, 0, 0], pad = 0.0, format = "") {
FormatBevelY = format == "super16" ? 4.5 : 5;
PadZ = format == "" ? 0.3 : 0;
FrontMaskZ = 0.375;
translate(pos) {
difference () {
union () {
@ -203,9 +206,10 @@ module gate_mask_slide (pos = [0, 0, 0], pad = 0.0, format = "") {
}
}
if (format != "") {
//tab
translate([(20 / 2) + 0.1, 0, -3.5]) difference () {
rotate([0, 90, 0]) rounded_cube([PlateZ + 2 + 5, FrontPlateVoidY + 8, 2], d = 2, $fn = 20, center = true);
film_entry_side_bevel([1.5, 0, 5]);
translate([0, 0, 1]) rotate([0, 90, 0]) rounded_cube([PlateZ + 4, FrontPlateVoidY + 8, 2], d = 2, $fn = 20, center = true);
film_entry_side_bevel([1.5, 0, 4.5]);
}
}
}
@ -364,7 +368,7 @@ module sprocketed_roller_text (pos = [0, 0, 0], rot = [0, 0, 0], font_size = 3,
rotate(-i * step_angle) {
translate([0, radius + font_size / 2, 0]) {
linear_extrude(height = h) {
text(chars[i], font = "Liberty Sans:style=Bold", size = font_size, valign = "center", halign = "center");
text(chars[i], font = "Liberation Sans:style=Bold", size = font_size, valign = "center", halign = "center");
}
}
}
@ -399,13 +403,14 @@ module sprocketed_roller_16mm (pos = [0, 0, 0], rot = [0, 0, 0], side = "TOP") {
//m2.5 bolt
translate([0, 0, -15.85]) rotate([0, 90, 0]) cylinder(r = R(2.75), h = 30, center = true, $fn = 30);
//
sprocketed_roller_text([0, 0, 16], chars=TopChars);
sprocketed_roller_text([0, 0, 16], chars = TopChars);
}
}
}
//BOM: s
//BOM: 2, M2.5 hex cap bolt 16mm, ISO 4762, Attaches the nut to the sprocketed roller
//BOM: 2, M2.5 hex nut, ISO 4032, Attaches the bolt to the nut
module sprocketed_roller_nut_16mm (pos = [0, 0, 0], rot = [0, 0, 0]) {
$fn = 80;
translate(pos) rotate(rot) difference() {
@ -433,9 +438,9 @@ module sprocketed_roller_nut_16mm (pos = [0, 0, 0], rot = [0, 0, 0]) {
//BOM: 6, M2.5 hex cap bolt 15mm, N/A, Attach idle_roller to gate
//BOM: 2, M2.5 hex cap bolt 25mm, N/A, Attach filter_holder to gate
//BOM: 4, M2.5 hex cap bolt 10mm, N/A, Attach slide_rail to gate
//BOM: 12, M2.5 hex nut, N/A, Attach idle_roller and filter_holder and slide_rail to gate
//BOM: 12, M2.5 hex nut, ISO 4032, Attach idle_roller and filter_holder and slide_rail to gate
//BOM: 2, M3 hex nut, N/A, Attach slide_catch to gate
//BOM, 2, Bearing, N/A, Center sprocketed_roller in gate voids and allow for smooth rotation
//BOM: 2, Bearing, N/A, Center sprocketed_roller in gate voids and allow for smooth rotation
module body (pos = [0, 0, 0], gauge = "16mm") {
SlideRailsOffsetZ = -5;
translate(pos) {
@ -628,15 +633,19 @@ module slide_catch_slot_void (pos = [0, 0, 0], rot = [0, 0, 0]) {
}
module slide_catch (pos = [0, 0, 0], rot = [0, 0, 0]) {
Length = 51;
Length = 54;
Thickness = 2.5;
SlideCatchVoidsOffset = 6;
SlideCatchVoidsDistance = 18;
translate(pos) rotate(rot) {
difference () {
cube([8, Length, 1.5], center = true);
translate([0, -(Length / 2) - 0.25, -1]) rotate([45, 0, 0]) cube([8 + 1, 3, 3], center = true);
slide_catch_slot_void([0, 8, 0]);
slide_catch_slot_void([0, -10, 0]);
cube([8, Length, Thickness], center = true);
translate([0, -(Length / 2) - 0.25, -1]) rotate([45, 0, 0]) cube([8 + 1, 3, 10], center = true);
translate([0, -(Length / 2) - 0.9, -1]) cube([8 + 1, 3, 10], center = true);
slide_catch_slot_void([0, SlideCatchVoidsOffset, 0]);
slide_catch_slot_void([0, SlideCatchVoidsOffset - SlideCatchVoidsDistance, 0]);
}
translate([0, Length / 2, (5 / 2) - (1.5 / 2)]) cube([8, 1.5, 5], center = true);
translate([0, Length / 2, (5 / 2) - (Thickness / 2)]) cube([8, Thickness, 5], center = true);
}
}
@ -662,11 +671,14 @@ module front_block_bolt_and_nut_void (pos = [0, 0, 0], rot = [0, 0, 0]) {
module front_block_film_path (pos = [0, 0, 0], rot = [0, 0, 0]) {
Nut = 4;
Width = 16.75;
CircularOffsetY = -7;
CircularOffsetZ = -11;
translate(pos) rotate(rot) {
difference () {
cube([17, 13, 17.5], center = true);
translate([0, -6, -12]) rotate([0, 90, 0]) cylinder(r = R(20), h = 17 + 1, center = true, $fn = 120);
translate([0, -6, -12]) rotate([0, 90, 0]) cylinder(r = R(23.5), h = 15, center = true, $fn = 120);
cube([Width, 13, 17.5], center = true);
translate([0, CircularOffsetY, CircularOffsetZ]) rotate([0, 90, 0]) cylinder(r = R(20), h = Width + 1, center = true, $fn = 120);
translate([0, CircularOffsetY, CircularOffsetZ]) rotate([0, 90, 0]) cylinder(r = R(23.5), h = 14.75, center = true, $fn = 120);
translate([10 / 2, 0, 5]) rotate([90, 0, 0]) {
cylinder(r = R(2.75), h = 20, center = true, $fn = 40);
@ -680,8 +692,10 @@ module front_block_film_path (pos = [0, 0, 0], rot = [0, 0, 0]) {
}
}
//BOM: 2, M5 hex cap bolt 25mm, N/A
//BOM: 2, M5 hex cap bolt 25mm, N/A, Attach the front_block to the body
//BOM: 4, M2.5 hex nut, N/A, Attach the film path blocks
module front_block (pos = [0, 0, 0], rot = [0, 0, 0]) {
FrontBlockFilmPathOffset = 12.625;
translate(pos) rotate(rot) {
difference () {
union () {
@ -692,11 +706,11 @@ module front_block (pos = [0, 0, 0], rot = [0, 0, 0]) {
}
translate([(BodyX / 2) + ((48 - BodyX) / 2) - 5.5, 0, 0]) cylinder(r = R(19), h = 6.5 + 1, center = true, $fn = 100);
front_block_bolt_and_nut_void([12.75, 24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([12.75 + 10, 24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([FrontBlockFilmPathOffset, 24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([FrontBlockFilmPathOffset + 10, 24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([12.75, -24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([12.75 + 10, -24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([FrontBlockFilmPathOffset, -24.5, -0.5], [-90, 0, 0]);
front_block_bolt_and_nut_void([FrontBlockFilmPathOffset + 10, -24.5, -0.5], [-90, 0, 0]);
//m5 bolts
translate([0, FrontPlatePostSpacingX / 2, 0]) cylinder(r = R(5.25), h = 40, center = true, $fn = 40);
@ -709,15 +723,15 @@ module front_block (pos = [0, 0, 0], rot = [0, 0, 0]) {
translate([-5, -PlateBoltSpacingY / 2, -10 / 2]) cylinder(r = R(6), h = 10, center = true, $fn = 40);
//for pegs
translate([10.25, 0, -1.75]) {
translate([-3, 0, 0]) rounded_cube([16.4, 31.4, 4], d = 3, center = true, $fn = 30);
translate([12.25, 0, -1.75]) {
translate([3.5, 0, 0]) rounded_cube([33.4, 31.4, 4], d = 3, center = true, $fn = 30);
translate([-3, 12, -2]) {
cylinder(r = R(2.75), h = 20, center = true, $fn = 40);
translate([0, 0, 7.51]) m2_5_nut(4);
translate([0, 0, 7]) m2_5_nut(4);
}
translate([-3, -12, -2]) {
cylinder(r = R(2.75), h = 20, center = true, $fn = 40);
translate([0, 0, 7.51]) m2_5_nut(4);
translate([0, 0, 7]) m2_5_nut(4);
}
}
}
@ -727,15 +741,18 @@ module front_block (pos = [0, 0, 0], rot = [0, 0, 0]) {
module front_block_peg (pos = [0, 0, 0], rot = [0, 0, 0], h = 10) {
BaseX = 1.4;
translate(pos) rotate(rot) {
translate([0, 0, h / 4]) cube([2.1, 1.5, h / 2], center = true);
translate([0, 0, h / 4]) cube([1.8, 1.4, h / 2], center = true);
difference () {
cube([1.6, 1.3, h], center = true);
translate([1.2, 0, -h / 2]) rotate([0, 10, 0]) cube([2, 1.75 + 1, h], center = true);
translate([-1.2, 0, -h / 2]) rotate([0, -10, 0]) cube([2, 1.75 + 1, h], center = true);
cube([1.8, 1.4, h], center = true);
translate([1.3, 0, -h / 2]) rotate([0, 10, 0]) cube([2, 1.75 + 1, h], center = true);
translate([-1.3, 0, -h / 2]) rotate([0, -10, 0]) cube([2, 1.75 + 1, h], center = true);
translate([0, -1.05, -h / 2]) rotate([10, 0, 0]) cube([2 + 1, 1.75, h], center = true);
translate([0, 1.05, -h / 2]) rotate([-10, 0, 0]) cube([2 + 1, 1.75, h], center = true);
translate([0, 0, -3.5]) difference() {
cube([2, 2, 5], center = true);
translate([0, 0, 5 / 2]) rotate([0, 90, 0]) cylinder(r = R(1.3), h = 2 + 1, center = true, $fn = 30);
}
}
}
}
@ -745,9 +762,9 @@ module front_block_pegs (pos = [0, 0, 0], rot = [0, 0, 0]) {
BoltSpacingY = 24;
translate(pos) rotate(rot) {
difference () {
translate([-3, 0, 0]) rounded_cube([16, 31, 3], d = 3, center = true, $fn = 30);
translate([5.5, 0, 0]) rounded_cube([33, 31, 3], d = 3, center = true, $fn = 30);
translate([-6, 0, 0]) cylinder(r = R(8), h = 3 + 1, center = true, $fn = 40);
translate([6, 0, 0]) rounded_cube([12, 16, 3 + 1], d = 3, center = true, $fn = 30);
translate([9, 0, 0]) rounded_cube([15, 12, 3 + 1], d = 3, center = true, $fn = 30);
translate([-3, BoltSpacingY / 2, 0]) cylinder(r = R(2.75), h = 10, center = true, $fn = 40);
translate([-3, -BoltSpacingY / 2, 0]) cylinder(r = R(2.75), h = 10, center = true, $fn = 40);
@ -757,6 +774,10 @@ module front_block_pegs (pos = [0, 0, 0], rot = [0, 0, 0]) {
}
front_block_peg([1.75, (PerfSpacingY / 2) + Standard16OffsetY, -6 / 2], h = 7);
front_block_peg([1.75, (-PerfSpacingY / 2) + Standard16OffsetY, -6 / 2], h = 7);
front_block_peg([1.75 + PerfSpacingX, (PerfSpacingY / 2) + Standard16OffsetY, -4.75 / 2], h = 7);
front_block_peg([1.75 + PerfSpacingX, (-PerfSpacingY / 2) + Standard16OffsetY, -4.75 / 2], h = 7);
}
}
@ -775,8 +796,8 @@ module filter_block (pos = [0, 0, 0], rot = [0, 0, 0], side = "A") {
m2_5_bolt_void([8, 13.1, BoltOffsetZ], [0, 90, 0], bolt = 24);
m2_5_bolt_void([8, -13.1, BoltOffsetZ], [0, 90, 0], bolt = 24);
m2_5_bolt_void([-28, 13.1, BoltOffsetZ + (SlideRailBoltSpacingZ / 2)], [0, -90, 0], bolt = 26, pad = 0.2);
m2_5_bolt_void([-28, -13.1, BoltOffsetZ + (SlideRailBoltSpacingZ / 2)], [0, -90, 0], bolt = 26, pad = 0.2);
m2_5_bolt_void([-21, 13.1, BoltOffsetZ + (SlideRailBoltSpacingZ / 2)], [0, -90, 0], bolt = 26, pad = 0.2);
m2_5_bolt_void([-21, -13.1, BoltOffsetZ + (SlideRailBoltSpacingZ / 2)], [0, -90, 0], bolt = 26, pad = 0.2);
if (side == "A") {
translate([0, 50, 0]) cube([100, 100, 100], center = true);
@ -788,18 +809,20 @@ module filter_block (pos = [0, 0, 0], rot = [0, 0, 0], side = "A") {
}
module debug () {
FilmRetractionDistanceZ = -7.2;
difference () {
//color("blue") translate([8, 4.6, FilmZ]) 16mm_film(18, true, true);
union () {
FilmZ = - 4.2; //retraction distance
translate([(-BodyX / 2) - 1, 0, -BodyZ / 2]) body(gauge = "16mm");
FilmZ = - 7.2; //retraction distance
//translate([(-BodyX / 2) - 1, 0, -BodyZ / 2]) body(gauge = "16mm");
translate([0, 0, FilmZ + 1.4]) front_plate();
//translate([0, 0, FilmZ - 1.4]) back_plate();
gate_mask_slide_standard16([(PlateX / 2) - (FrontPlateVoidX / 2) - 1.9, 0, FilmZ - .9]);
//gate_mask_slide_super16([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, -3]);
translate([0, 0, FilmZ - 1.4]) back_plate();
//gate_mask_slide_standard16([(PlateX / 2) - (FrontPlateVoidX / 2) - 1.9, 0, FilmZ - .9]);
gate_mask_slide_super16([(PlateX / 2) - (FrontPlateVoidX / 2) - 1.9, 0, FilmZ - .9]);
//front_plate_void([(PlateX / 2) - (FrontPlateVoidX / 2) - 2.41, 0, 0]);
//film_clearance_void([0, 0, 15]);
color("blue") translate([8, 4.6, FilmZ]) 16mm_film(18, true, true);
sprocketed_roller_16mm([1.5, KeySpacingY / 2, KeyZ], [0, 90, 0], side = "TOP");
sprocketed_roller_16mm([1.5, -KeySpacingY / 2, KeyZ], [0, 90, 0], side = "BOTTOM");
@ -818,25 +841,26 @@ module debug () {
idle_roller_16mm([9, -IdleRollerSpacingBY / 2, (BodyZ / 2) - IdleRollerBZ - (BodyZ / 2)], [0, 90, 0]);*/
slide_rail([-BodyX + (7 / 2) - 0.6, 11.5, (-BodyZ / 2) - 7], "A");
//slide_rail([-BodyX + (7 / 2) - 0.6, -11.5, (-BodyZ / 2) - 7], "B");
slide_rail([-BodyX + (7 / 2) - 0.6, -11.5, (-BodyZ / 2) - 7], "B");
slide([-BodyX + (7 / 2) - 0.4, 0, FilmZ + (-BodyZ / 2) + 1]);
slide_catch([-13, 34, -51.5]);
front_block([(-BodyX / 2) - 1, 0, (6.5 / 2) + 15]);
//color("yellow") front_block_pegs([0, 0, 2]);
//front_block_film_path([(17 / 2) - 1, (58.5 / 2) + (13 / 2), -2.25]);
//front_block_film_path([(17 / 2) - 1, (-58.5 / 2) - (13 / 2), -2.25 ], [0, 0, 180]);
filter_block([11+ 10, 0, -29], side = "A");
slide_catch([-13, 36, -51.5]);
translate([0, 0, 0]) {
front_block([(-BodyX / 2) - 1, 0, (6.5 / 2)]);
color("yellow") front_block_pegs([0, 0, 2]);
front_block_film_path([(16.75 / 2) - 1, (58.5 / 2) + (13 / 2), -2.25]);
front_block_film_path([(16.75 / 2) - 1, (-58.5 / 2) - (13 / 2), -2.25], [0, 0, 180]);
}
filter_block([11, 0, -29], side = "A");
filter_block([11, 0, -29], side = "B");
}
//translate([-60, 0, 0]) cube([100, 100, 100], center = true);
}
}
PART="front_platex";
PART="front_block_16mm";
if (PART == "front_plate") {
//1

View File

@ -11,6 +11,8 @@ include <./common/common.scad>
include <./common/motors.scad>
include <./common/rods.scad>
use <./capper.scad>
use <./bolex.scad>;
use <./arri_s.scad>;
IN = 25.4;
@ -34,6 +36,14 @@ CameraSledBolexPlateX = 60;
CameraSledBolexPlateY = 90;
CameraSledBolexPlateZ = 15;
CameraSledArriSZ = 33 + 52;
CameraSledArriSX = 100;
CameraSledArriSY = 110;
CameraSledArriSPlateX = 60;
CameraSledArriSPlateY = 90;
CameraSledArriSPlateZ = 15;
LensBearingsSpacing = 28;
LensBearingM5Spacing = 62;
@ -215,11 +225,12 @@ module rail_end (pos = [0, 0, 0], rot = [90, 0, 0], Motors = true, Projector = f
}
}
echo("sled");
echo("BOM: ", "(2) T8 Nut");
echo("BOM: ", "(1 or 2) Linear bearing");
echo("BOM: ", "(4 or 8) Radial bearings ()");
//BOM: 2,T8 Nut, N/A, For drive screw
//BOM: 2, Linear bearing, N/A, For center rails
//BOM: 8, Radial bearing, N/A, For something
module sled (pos = [0, 0, 0], rot = [90, 0, 0], Length = 60) {
X = RailEndX;
Y = 60;
Z = Length;
@ -547,9 +558,9 @@ module camera_sled_bolex (pos = [0, 0, 0], rot = [0, 0, 0]) {
X = CameraSledBolexX;
Y = CameraSledBolexY;
PlateY = 20;
translate(pos) rotate(rot) {
difference () {
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);
@ -568,13 +579,54 @@ 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, 10]) rotate([0, 90, 0]) m5_nut();
translate([-33, -22, 20]) cube([5, 7.9, 20], center = true);
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, 10]) cy(5.1, 25, 40, Y = 90);
translate([-25 - 27, -22, 10]) cy(9, 30, 40, Y = 90);
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);
}
}
}
module camera_sled_arris (pos = [0, 0, 0], rot = [0, 0, 0]) {
Z = CameraSledArriSZ;
X = CameraSledArriSX;
Y = CameraSledArriSY;
PlateY = 20;
translate(pos) rotate(rot) {
difference () {
rounded_cube([X, Y, Z], d = 10, center = true, $fn = 40);
//center void
translate([0, 0, -20]) rounded_cube([CameraBoltX - 20, CameraBoltY - 20, Z], d = 10, center = true, $fn = 40);
translate([0, 0, -20]) rotate([0, 90, 0]) rounded_cube([Z, CameraBoltY - 20, X + 1], d = 10, center = true, $fn = 40);
translate([0, 0, -20]) rotate([90, 0, 0]) rounded_cube([CameraBoltX - 20, Z, Y + 1], d = 10, center = true, $fn = 40);
m5_bolt_void([CameraBoltX / 2, CameraBoltY / 2, -30], BoltH = Z * 2, CapH = Z);
m5_bolt_void([-CameraBoltX / 2, CameraBoltY / 2, -30], BoltH = Z * 2, CapH = Z);
m5_bolt_void([CameraBoltX / 2, -CameraBoltY / 2, -30], BoltH = Z * 2, CapH = Z);
m5_bolt_void([-CameraBoltX / 2, -CameraBoltY / 2, -30], BoltH = Z * 2, CapH = Z);
//film plane lines
translate([X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true);
translate([-X / 2, CameraBoltY / 2, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Z + 1], center = true);
//center line
translate([0, 0, Z / 2]) rotate([90, 0, 0]) rotate([0, 0, 45]) cube([1/2, 1/2, Y + 1], center = true);
//void for plate
camera_sled_bolex_plate_blank([0, -(PlateY / 2), (CameraSledArriSZ / 2) - (CameraSledArriSPlateZ / 2)], PadX = 0.4, PadY = PlateY, PadZ = 0.1);
translate([-33, -22, (CameraSledArriSZ / 2) - (CameraSledArriSPlateZ / 2) + 1]) rotate([0, 90, 0]) m5_nut();
translate([-33, -22, (CameraSledArriSZ / 2) - (CameraSledArriSPlateZ / 2) + 11]) cube([5, 7.9, 20], center = true);
//m5 bolt
translate([-25, -22, (CameraSledArriSZ / 2) - (CameraSledArriSPlateZ / 2) + 1]) cy(5.1, 25, 40, Y = 90);
translate([-25 - 27, -22, (CameraSledArriSZ / 2) - (CameraSledArriSPlateZ / 2) + 1]) cy(9, 30, 40, Y = 90);
}
}
@ -629,6 +681,40 @@ module camera_sled_bolex_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
}
}
module camera_sled_arris_plate (pos = [0, 0, 0], rot = [0, 0, 0]) {
Z = CameraSledBolexZ;
X = CameraSledBolexX;
Y = CameraSledBolexY;
CameraBoltLen = 20;
CameraBolts = ["3/8"];
CameraBoltsY = [-27.35];
CameraBoltsX = [0];
translate(pos) rotate(rot) {
difference () {
camera_sled_bolex_plate_blank([0, 0, (Z / 2) - (CameraSledBolexPlateZ / 2)]);
//camera mounting bolts
translate([0, (Y / 2) - ((Y - CameraBoltY) / 2) - (9.6 - 5.2), -33 - 10]) {
for (i = [0 : 0]) {
camera_sled_bolt_slot([CameraBoltsX[i], CameraBoltsY[i], 50], Bolt = CameraBolts[i], Len = CameraBoltLen);
}
}
//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);
//lines
camera_bolex_plate_lines_y(Z / 2);
camera_bolex_plate_lines_y((Z / 2) - CameraSledBolexPlateZ);
translate([0, CameraSledBolexPlateY / 2, 0]) rotate([90, 0, 0]) camera_bolex_plate_lines_y(0);
translate([0, -CameraSledBolexPlateY / 2, 0]) rotate([90, 0, 0]) camera_bolex_plate_lines_y(0);
}
}
}
module camera_bolex_plate_lines_y (Z) {
camera_bolex_plate_line_y(Z = Z);
for (i = [1 : 4]) {
@ -986,12 +1072,19 @@ module debug () {
corner_bracket([-30, 0, 260], [180, 0, 90]);
corner_outer_bracket([-55, 0, 290], [180, 0, 0]);
//camera_sled([0, -90, 0]);
//difference () {
difference () {
//lens_sled([0, -90, 0]);
camera_sled([0, -90, 0]);
//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);
//}
}
camera_sled_bolex([0, -90, 54]);
//camera_sled_arris([0, -90, 54 + 26]);
debug_bolex([0, -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();
//color("green") translate([-(LensFrameSpacingX / 2) - 15, -20, 50]) rotate([0, 0, 0]) linear_extrude(height=200) 2020_profile();
@ -1029,8 +1122,8 @@ module debug () {
//translate([-RailSpacing / 2, 0, 0]) rotate([90, 0, 0]) rail_debug(175);
//color("green") translate([RailSpacing / 2, 0, 0]) rotate([90, 0, 0]) linear_extrude(height=175) 2020_profile();
//translate([ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();
//translate([-ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();
//translate([ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();
//translate([-ThreadedRodSpacing / 2, 40, 0]) rotate([90, 0, 0]) color("blue") NEMA17();
//translate([50 - 10, 0, 0]) rail_debug(100);
//translate([-50 + 10, 0, 0]) rail_debug(100);
@ -1078,7 +1171,7 @@ module debug2 () {
}
PART = "rail_endx";
PART = "camera_sled_arris_platex";
if (PART == "rail_end") {
rail_end(Projector = true);
@ -1092,6 +1185,10 @@ if (PART == "rail_end") {
camera_sled_bolex();
} else if (PART == "camera_sled_bolex_plate") {
camera_sled_bolex_plate(rot = [180, 0, 0]);
} else if (PART == "camera_sled_arris_plate") {
camera_sled_arris_plate(rot = [180, 0, 0]);
} else if (PART == "camera_sled_arris") {
camera_sled_arris();
} else if (PART == "bearing_roller") {
bearing_roller();
} else if (PART == "bearing_roller_inner") {
@ -1123,7 +1220,7 @@ if (PART == "rail_end") {
} else if (PART == "dial_handle") {
dial_handle();
} else {
//debug();
rail_sizing();
debug();
//rail_sizing();
//debug2();
}

View File

@ -272,6 +272,7 @@ module electronics_attachment_bolt_voids (pos = [0, 0, 0]) {
}
//BOM: 4, M3 hex cap bolt 8mm,N/A,Attach Arduino Uno
//BOM: 2, M3 hex nut, N/A, Attach electronics attachment
module electronics_mount () {
difference () {
union() {
@ -291,24 +292,27 @@ module electronics_mount () {
//translate([35.1, 76.8, 4.5]) rotate([0, 0, 180]) arduino();
}
//BOM: 2, M3 hex cap bolt 12mm, N/A, Attach to electronics mount
module electronics_attachment () {
difference () {
cube([70, 16, 19.75], center = true);
translate([1/2, 0, -15.5]) cube([58, 20 + 1, 20], center = true);
translate([5.5, 0, -11.5]) cube([48, 20 + 1, 20], center = true);
translate([11.75, 00, -4.5]) cube([13, 20 + 1, 20], center = true);
translate([11.75, 0, -4.5]) cube([13, 20 + 1, 20], center = true);
translate([-18, 00, -5]) cube([10, 20 + 1, 20], center = true);
translate([ReinforcementBoltSpacingX / 2, 0, 0]) {
cylinder(r = R(3.25), h = 20 + 1, center = true, $fn = 30);
translate([0, 0, 10]) cylinder(r = R(6.5), h = 20 , center = true, $fn = 30);
}
translate([-ReinforcementBoltSpacingX / 2, 0, 0]) {
translate([-ReinforcementBoltSpacingX / 2, 0, -2]) {
cylinder(r = R(3.25), h = 20 + 1, center = true, $fn = 30);
translate([0, 0, 10]) cylinder(r = R(6.5), h = 20 , center = true, $fn = 30);
}
arduino_bolts_voids([28, 6.5, 0], h = 20, pad = 5);
translate([35, 8, 0]) cylinder(r = R(10), h = 19.75 + 1, center = true, $fn = 40);
translate([-37, 0, 8]) rotate([90, 0, 0]) cylinder(r = R(20), h = 19.75 + 1, center = true, $fn = 40);
}
}
module usb_protector () {
@ -328,7 +332,7 @@ module debug () {
translate(ArduinoPosition) translate([-27.5, -8, -10]) electronics_attachment();
}
PART="electronics_mount";
PART="electronics_attachment";
if (PART == "electronics_mount") {
electronics_mount();

View File

@ -10,6 +10,7 @@ FILES=(
mcopy_projector
mcopy_lens_assembly
mcopy_gate
projector_controller
)
PARALLEL=0

File diff suppressed because it is too large Load Diff

View File

@ -3,48 +3,48 @@ solid OpenSCAD_Model
outer loop
vertex -12 11.6330805 10.59582
vertex -12 11.6330805 10.90418
vertex -2.1000004 11.6330805 10.90418
vertex 4.8999996 11.6330805 10.90418
endloop
endfacet
facet normal 0 0.9781474 0.20791261
outer loop
vertex -12 11.6330805 10.59582
vertex -2.1000004 11.6330805 10.59582
vertex 4.8999996 11.6330805 10.59582
vertex -12 11.697192 10.2942
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -12 11.6330805 10.59582
vertex -2.1000004 11.6330805 10.90418
vertex -2.1000004 11.6330805 10.59582
vertex 4.8999996 11.6330805 10.90418
vertex 4.8999996 11.6330805 10.59582
endloop