film_core/scad/film_core.scad

108 lines
2.6 KiB
OpenSCAD

use <./common/common.scad>;
$fn = 200;
IN = 25.4;
InnerD = 30.6;
module supports (Gauge = 16, Count = 8, OuterD = 50.8) {
rotate([0, 0, -13]) for (i = [0 : Count - 1]) {
rotate ([0, 0, i * (360 / Count)]) {
translate ([(InnerD / 2) + ((OuterD - InnerD) / 4) - 1, 0, 0]) {
cube([((OuterD - InnerD - 1) / 2), 2, Gauge], center = true);
}
}
}
}
module inner_core_shape (Gauge = 16, D, X, CubeW, CubeL, Pad = 0) {
union () {
cylinder(r = R(D), h = Gauge + Pad, center = true);
translate([X, 0, 0]) {
cube([CubeW, CubeL, Gauge + Pad], center = true);
}
}
}
module inner_core (Gauge = 16) {
difference () {
inner_core_shape(Gauge, InnerD, (InnerD / 2) + 0.5, 6, 7);
inner_core_shape(Gauge, InnerD - 4, (InnerD / 2) - 0.5, 4, 4, 1);
}
}
module clip (Gauge = 16, OuterD = 50.8) {
translate([(OuterD - 3.5) / 2, 0, 0]) {
rotate(45, [0, 0, 1]){
cube([7, 1, Gauge + 1], center = true);
}
}
}
module outer_clip (Gauge = 16, OuterD = 50.8) {
translate([(OuterD - 3.75) / 2, 0, 0]) {
difference() {
rotate(45, [0, 0, 1]){
cube([9, 4, Gauge], center = true);
}
translate([3.9, 0, 0]) {
cube([6, 10, Gauge + 1], center = true);
}
}
}
}
module outer_core (Gauge = 16, OuterD = 50.8) {
difference () {
union () {
difference () {
cylinder(r = R(OuterD), h = Gauge, center = true);
cylinder(r = R(OuterD) - 2, h = Gauge + 1, center = true);
}
outer_clip(Gauge, OuterD);
}
clip(Gauge, OuterD);
}
}
module film_core (Gauge = 16, OuterD = 50.8, Partition = true) {
supports(Gauge, 8, OuterD);
inner_core(Gauge);
outer_core(Gauge, OuterD);
if (Partition) {
difference () {
cylinder(r = R(OuterD - 1), h = 2, center = true);
outer_clip(Gauge, OuterD);
clip(Gauge, OuterD);
inner_core_shape(Gauge, InnerD - 3, (InnerD / 2) - 0.5, 4, 4, 1);
}
}
}
PART = "16mm_2in";
if (PART == "16mm_2in") {
film_core(16, 2 * IN, true);
} else if (PART == "16mm_3in") {
film_core(16, 3 * IN, true);
} else if (PART == "16mm_2in_np") {
film_core(16, 2 * IN, false);
} else if (PART == "16mm_3in_np") {
film_core(16, 3 * IN, false);
} else if (PART == "8mm_2in") {
film_core(8, 2 * IN, true);
} else if (PART == "8mm_3in") {
film_core(8, 3 * IN, true);
} else if (PART == "8mm_2in_np") {
film_core(8, 2 * IN, false);
} else if (PART == "8mm_3in_np") {
film_core(8, 3 * IN, false);
} else if (PART == "35mm_2in") {
film_core(35, 2 * IN, true);
} else if (PART == "35mm_3in") {
film_core(35, 3 * IN, true);
} else if (PART == "35mm_2in_np") {
film_core(35, 2 * IN, false);
} else if (PART == "35mm_3in_np") {
film_core(35, 3 * IN, false);
}