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); }