contact_printer/scad/contact_printer_light_holde...

131 lines
4.7 KiB
OpenSCAD

include <../ReadyCAD/ready.scad>;
OUTER_D = 44.45;
CAP_D = 57.15;
WALL_THICKNESS = 3;
LENGTH = 95.25;
$fn = 100;
module rail_neg () {
cube([17.4, 4, 120], center = true);
cube([35, 4, 95], center = true);
translate([17.4, -1.5, 0]) cube([17.5, 4, 96], center = true);
translate([-17.4, -1.5, 0]) cube([17.5, 4, 96], center = true);
}
module rail_guide () {
translate([10.2, 0, 0]) cube([3, 4, 72], center = true);
translate([-10.2, 0, 0]) cube([3, 4, 72], center = true);
translate([10.2 - .6, 1.5, 0]) cube([4.3, 1, 72], center = true);
translate([-10.2 + .6, 1.5, 0]) cube([4.3, 1, 72], center = true);
}
module fan_holes () {
dist = 29;
cylinder(r = 34/2, h = 500, center = true);
translate([dist/2, dist/2, 0]) cylinder(r = 2.9/2, h = 500, center = true);
translate([dist/2, -dist/2, 0]) cylinder(r = 2.9/2, h = 500, center = true);
//translate([-dist/2, -dist/2, 0]) cylinder(r = 2.9/2, h = 500, center = true);
translate([-dist/2 + 2.1, -dist/2 + 2.1, 0]) rotate([0, 0, 45]) cube([5, 5, 500], center = true);
translate([-dist/2, dist/2, 0]) cylinder(r = 2.9/2, h = 500, center = true);
}
module light_holder (DECOYS = false) {
//cap
$fn = 200;
difference () {
translate([0,0,(LENGTH / 2) + (WALL_THICKNESS / 2) ]) {
cylinder(r = CAP_D / 2, h = WALL_THICKNESS, center = true);
}
translate([0, 22, 0]) rail_neg();
fan_holes();
}
//tube
difference () {
cylinder(r = OUTER_D / 2, h = LENGTH, center = true);
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS, h = LENGTH + 10, center = true);
translate([0, 22, 0]) rail_neg();
//light
translate([0, 20, -41 + 6]) rotate([90, 0, 0]) cylinder(r = 13/2, h = 25, center = true);
}
//rail
translate([0, 20.5, 12]) rail_guide();
if (DECOYS) {
decoys(36, 48.6, 6);
}
}
module rail (DECOYS = false) {
difference () {
union () {
translate([0, 20.7, 2.4]) cube([17, 1.3, 100], center = true);
translate([0, 21.9, 2.4]) cube([14.2, 2.8, 100], center = true);
}
translate([0, 20, -41 + 6]) rotate([90, 0, 0]) cylinder(r = 9/2, h = 25, center = true);
translate([0, 23.4, -41 + 6]) rotate([90, 0, 0]) cylinder(r = 13/2, h = 3, center = true);
}
translate([0, 24, 52.2]) cube([24, 8, 3], center = true);
if (DECOYS) {
translate([0, 0, -35]) rotate([90, 45, 0]) decoys(25, -22.05);
translate([0, 0, 42]) rotate([90, 45, 0]) decoys(25, -22.05);
}
};
module baffle (DECOYS = false) {
//print 3 of these
difference () {
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.3, h = 7, center = true);
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 2, h = 8, center = true);
}
difference () {
translate([0, 0, 2.5]) cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.3, h = 2, center = true);
translate([58, 0, 0]) cube([100, 100, 100], center = true);
}
if (DECOYS) {
decoys(28, 1.5, 6);
}
}
module LED_mount () {
$fn = 200;
difference () {
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.015, h = 10, center = true);
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.015 - 2, h = 11, center = true);
translate([0, (OUTER_D / 2) +4, 0]) cube([OUTER_D, OUTER_D, OUTER_D], center = true);
}
translate ([0, 0, -4.5]) {
intersection() {
difference () {
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.015, h = 15, center = true);
cylinder(r = (OUTER_D / 2) - WALL_THICKNESS - 0.015 - 2, h = 16, center = true);
}
translate ([0, -17, -1]) cube([7, 7, 15], center = true);
}
}
difference () {
union () {
difference () {
translate([0, -6, 0]) cube([OUTER_D - 8, 2, 10], center = true);
translate([OUTER_D / 2 - 3.5, -6.5, 0]) rotate([0, 0, 60]) cube([4, 2, 10], center = true);
translate([-OUTER_D / 2 + 3.5, -6.5, 0]) rotate([0, 0, -60]) cube([4, 2, 10], center = true);
}
translate([7.5, -5, 0]) cube([4, 4, 10], center = true);
translate([-7.5, -5, 0]) cube([4, 4, 10], center = true);
}
translate([7.5, 0, 0]) rotate([90, 0, 0]) cylinder(r = 1, h = 40, center = true);
translate([0, 0, 0]) rotate([90, 0, 0]) cylinder(r = 1, h = 40, center = true);
translate([-7.5, 0, 0]) rotate([90, 0, 0]) cylinder(r = 1, h = 40, center = true);
}
translate([0, -8, 0]) scale([1.5, 1, 1]) decoys(20, 3);
}
//rail(true);
/*difference() {
light_holder(false);
//translate([0, 0, -36]) LED_mount();
translate([0, 0, 60]) cube([200, 200, 200], center = true);
}
decoys(30, -45.64, 6);*/
baffle();