108 lines
2.6 KiB
OpenSCAD
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);
|
||
|
}
|