208 lines
7.4 KiB
OpenSCAD
208 lines
7.4 KiB
OpenSCAD
use <./contact_printer.scad>;
|
|
|
|
FrameX = 400;
|
|
FrameY = 260;
|
|
FrameZ = -16;
|
|
|
|
PanelX = 155;
|
|
PanelY = 100;
|
|
PanelZ = 5;
|
|
|
|
Film16mmStandard = 10.26;
|
|
Film16mmStandardZ = -0.7;
|
|
Film16mmFull = 16;
|
|
Film16mmFullZ = -1.1;
|
|
Film16mmSuper = 13.25;
|
|
Film16mmSuperZ = -(16 - Film16mmSuper) + 0.7;
|
|
Film16mmSound = Film16mmSuper - Film16mmStandard;
|
|
Film16mmSoundZ = -7.75;
|
|
|
|
OldLampGateX = 11;
|
|
module old_gate_blank () {
|
|
X = OldLampGateX;
|
|
//front
|
|
translate([0, -6.25, 0]) cube([X-7.2, 1.2, 19.25], center = true);
|
|
//middle
|
|
translate([0, -5.1, -0.5]) cube([X-4.2, 1.4, 19], center = true);
|
|
|
|
//top
|
|
translate([0, -5.9, 9]) cube([X-4.2, 3, 2], center = true);
|
|
}
|
|
//standard, super, full, sound
|
|
module old_picture_gate (pos = [0, 0, 0], rot = [0, 0, 0], Type = "full", Width = 2) {
|
|
X = OldLampGateX;
|
|
translate(pos) rotate(rot) {
|
|
difference () {
|
|
union () {
|
|
old_gate_blank();
|
|
}
|
|
if (Type == "standard") {
|
|
translate([0, -6, Film16mmStandardZ]) cube([Width, 10, Film16mmStandard], center = true);
|
|
} else if (Type == "full") {
|
|
translate([0, -6, Film16mmFullZ]) cube([Width, 10, Film16mmFull], center = true);
|
|
} else if (Type == "super16") {
|
|
translate([0, -6, Film16mmSuperZ]) cube([Width, 10, Film16mmSuper], center = true);
|
|
} else if (Type == "sound") {
|
|
translate([0, -6, Film16mmSoundZ]) cube([Width, 10, Film16mmSound], center = true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module m3_bolt_void (pos = [0, 0, 0], rot = [0, 0, 0], Cap = 3, Bolt = 8) {
|
|
translate(pos) rotate(rot) {
|
|
translate([0, 0, -Cap / 2]) cylinder(r = R(6), h = Cap, center = true, $fn = 30);
|
|
translate([0, 0, (Bolt / 2) - 0.01]) cylinder(r = R(3), h = Bolt, center = true, $fn = 30);
|
|
}
|
|
}
|
|
|
|
module corner_foot_bolts (pos = [0, 0, 0], rot = [0, 0, 0]) {
|
|
translate(pos) rotate(rot) {
|
|
corner_foot();
|
|
m3_bolt_void([0, 20, -20]);
|
|
m3_bolt_void([0, 40, -20]);
|
|
m3_bolt_void([20, 0, -20]);
|
|
m3_bolt_void([40, 0, -20]);
|
|
|
|
2020_tslot_insert([0, 20, 20], [180, 0, 90]);
|
|
2020_tslot_insert([0, 40, 20], [180, 0, 90]);
|
|
2020_tslot_insert([20, 0, 20], [180, 0, 0]);
|
|
2020_tslot_insert([40, 0, 20], [180, 0, 0]);
|
|
}
|
|
}
|
|
|
|
PART = "frame";
|
|
|
|
if (PART == "sprocketed_roller_invert_solid") {
|
|
$fn = 200;
|
|
sprocketed_roller_invert_solid();
|
|
} else if (PART == "magnetic_clutch") {
|
|
MAGNETS = 4;
|
|
MAGNET_D = 8.1;
|
|
MAGNET_H = 2.5;
|
|
H = 3;
|
|
OFFSET = 12;
|
|
|
|
centered_geared_motor([0, 0, -70], [180, 0, 0]);
|
|
translate([0, 0, -30]) rotate([0, 0, 90]) magnetic_coupling();
|
|
for (i = [0 : MAGNETS - 1]) {
|
|
rotate([0, 0, i * (360 / MAGNETS)]) {
|
|
translate([0, OFFSET, -22]) {
|
|
cylinder(r = R(MAGNET_D), h = MAGNET_H, center = true, $fn = 50);
|
|
}
|
|
}
|
|
}
|
|
translate([0, 0, 20]) {
|
|
m4_nut();
|
|
translate([0, 0, 20]) cylinder(r = R(4), h = 40, center = true, $fn = 30);
|
|
}
|
|
translate([0, 0, 0]) slip_coupling();
|
|
translate([0, 0, 30]) contact_printer_daylight_spool_insert_reinforced();
|
|
translate([0, 0, 70]) contact_printer_daylight_spool_insert_reinforced_nut();
|
|
translate([0, 0, 80]) difference () {
|
|
m4_nut();
|
|
cylinder(r = R(4), h = 5, center = true, $fn = 30);
|
|
}
|
|
} else if (PART == "gates") {
|
|
picture_gate_standard([-30, 0, 0]);
|
|
picture_gate_full([-10, 0, 0]);
|
|
picture_gate_super16([10, 0, 0]);
|
|
picture_gate_sound([30, 0, 0]);
|
|
} else if (PART == "gate_comparsion") {
|
|
translate([-10, 5, 0]) old_picture_gate(Type = "standard");
|
|
translate([10, 0, 0]) picture_gate(Type = "standard");
|
|
} else if (PART == "frame") {
|
|
FootZ = -60;
|
|
//top/bottom
|
|
translate([0, (FrameY/2) + 10, FrameZ]) rotate([0, 90, 0]) 2020_tslot(FrameX + 20);
|
|
translate([0, -(FrameY/2) - 10, FrameZ]) rotate([0, 90, 0]) 2020_tslot(FrameX + 20);
|
|
//far sides
|
|
translate([FrameX/2, 0, FrameZ + 40]) rotate([90, 0, 0]) 2020_tslot(FrameY);
|
|
translate([-FrameX/2, 0, FrameZ + 40]) rotate([90, 0, 0]) 2020_tslot(FrameY);
|
|
//inner rails
|
|
translate([(PanelX/2) - 10, 0, FrameZ + 40]) rotate([90, 0, 0]) 2020_tslot(FrameY);
|
|
translate([-(PanelX/2) + 10, 0, FrameZ + 40]) rotate([90, 0, 0]) 2020_tslot(FrameY);
|
|
|
|
corner_foot_bolts([FrameX / 2, (FrameY / 2) + 10, FootZ], [0, 0, 180]);
|
|
corner_foot_bolts([FrameX / 2, -(FrameY / 2) - 10, FootZ], [0, 0, 90]);
|
|
corner_foot_bolts([-FrameX / 2, -(FrameY / 2) - 10, FootZ], [0, 0, 0]);
|
|
corner_foot_bolts([-FrameX / 2, (FrameY / 2) + 10, FootZ], [0, 0, -90]);
|
|
|
|
corner_foot_bolts([(PanelX / 2) - 10, (FrameY / 2) + 10, FootZ], [0, 0, 180]);
|
|
corner_foot_bolts([-(PanelX / 2) + 10, (FrameY / 2) + 10, FootZ], [0, 0, -90]);
|
|
corner_foot_bolts([(PanelX / 2) - 10, -(FrameY / 2) - 10, FootZ], [0, 0, 90]);
|
|
corner_foot_bolts([-(PanelX / 2) + 10, -(FrameY / 2) - 10, FootZ], [0, 0, 0]);
|
|
}
|
|
/*
|
|
PART = "feed_panel_picture";
|
|
LIBRARY = true;
|
|
|
|
if (PART == "panel") {
|
|
rotate([180, 0, 0]) panel();
|
|
} else if (PART == "lamp_single") {
|
|
lamp_single();
|
|
} else if (PART == "lamp_cover") {
|
|
rotate([180, 0, 0]) lamp_cover();
|
|
} else if (PART == "takeup_panel_picture"){
|
|
takeup_panel_picture();
|
|
} else if (PART == "takeup_panel_picture_motor_mount") {
|
|
takeup_panel_picture_motor_mount();
|
|
} else if (PART == "takeup_panel_stock"){
|
|
takeup_panel_stock();
|
|
} else if (PART == "takeup_panel_stock_motor_mount") {
|
|
takeup_panel_stock_motor_mount();
|
|
} else if (PART == "feed_panel_picture") {
|
|
feed_panel_picture();
|
|
} else if (PART == "feed_panel_stock") {
|
|
feed_panel_stock();
|
|
} else if (PART == "feed_panel_motor_mount") {
|
|
feed_panel_motor_mount();
|
|
} else if (PART == "gate_picture") {
|
|
picture_gate_standard(rot = [-90, 0, 0]);
|
|
} else if (PART == "gate_full") {
|
|
picture_gate_full(rot = [-90, 0, 0]);
|
|
} else if (PART == "gate_super16") {
|
|
picture_gate_super16(rot = [-90, 0, 0]);
|
|
} else if (PART == "gate_sound") {
|
|
picture_gate_sound(rot = [-90, 0, 0]);
|
|
} else if (PART == "sprocketed_roller_invert") {
|
|
sprocketed_roller_invert();
|
|
} else if (PART == "sprocketed_roller_invert_solid") {
|
|
sprocketed_roller_invert_solid();
|
|
} else if (PART == "sprocketed_roller_reinforced_wheel") {
|
|
rotate([180, 0, 0]) sprocketed_roller_reinforced_wheel(sprockets = 18, bevel = true, model = "gearbox_motor", nuts = true);
|
|
} else if (PART == "magnetic_coupling") {
|
|
contact_printer_magnetic_coupling();
|
|
} else if (PART == "slip_coupling"){
|
|
contact_printer_slip_coupling();
|
|
} else if (PART == "daylight_spool_insert_reinforced_nut") {
|
|
contact_printer_daylight_spool_insert_reinforced_nut();
|
|
} else if (PART == "daylight_spool_insert_reinforced") {
|
|
contact_printer_daylight_spool_insert_reinforced();
|
|
} else if (PART == "corner_foot") {
|
|
rotate([180, 0, 0]) corner_foot();
|
|
} else if (PART == "2020_tslot_insert") {
|
|
2020_tslot_insert();
|
|
} else if (PART == "bearing_post_nut"){
|
|
bearing_post_nut();
|
|
} else if (PART == "idle_roller_half_a") {
|
|
idle_roller_half_a();
|
|
} else if (PART == "idle_roller_half_b") {
|
|
idle_roller_half_b();
|
|
} else if (PART == "gate_carrier") {
|
|
rotate([0, 0, 0]) gate_carrier();
|
|
} else if (PART == "lamp_LEDs") {
|
|
rotate([90, 0, 0]) lamp_LEDs();
|
|
} else if (PART == "electronics_panel") {
|
|
electronics_panel(rot = [180, 0, 0]);
|
|
} else if (PART == "knob"){
|
|
contact_printer_knob();
|
|
} else {
|
|
//debug();
|
|
//difference () {
|
|
debug_lamp();
|
|
//translate([0, -50, 0]) cube([100, 100, 100], center = true);
|
|
//}
|
|
//debug_clutch();
|
|
}
|
|
*/ |