diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..18f70a7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "common"] + path = common + url = https://git.sixteenmillimeter.com/modules/common.git diff --git a/common b/common new file mode 160000 index 0000000..b499c28 --- /dev/null +++ b/common @@ -0,0 +1 @@ +Subproject commit b499c2810117b5ca57014d5cb4219cf68b4c5c0f diff --git a/split_reel.scad b/split_reel.scad index e69de29..5e62e08 100644 --- a/split_reel.scad +++ b/split_reel.scad @@ -0,0 +1,86 @@ +include <./common/common.scad>; +include <./common/threads.scad>; + +Core16mm = 25.5; +PlatterThickness = 1.6; +Platter120m = 178; + +module thread_16mm ( pos = [0, 0, 0], length = 11, pad = 0) { + translate(pos) { + metric_thread (diameter=18.5, pitch=1.5, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=0, leadfac=1.0); + } +} + +module threaded_core (pos = [0, 0, 0], format = "16mm") { + $fn = 120; + translate (pos) { + if (format == "16mm") { + union () { + cylinder(r = R(Core16mm), h = 6, center = true); + thread_16mm([0, 0, 6 / 2], length = 11); + } + } + } +} + +module socket_core (pos = [0, 0, 0], format = "16mm") { + $fn = 120; + translate (pos) { + if (format == "16mm") { + difference () { + cylinder(r = R(Core16mm), h = 11, center = true); + } + } + } +} + +module platter (pos = [0, 0, 0], length = 120) { + if (length == 120) { + difference () { + cylinder(r = R(Platter120m), h = PlatterThickness, center = true, $fn = 300); + for (i = [0 : 3]) { + rotate([0, 0, i * 90]) translate([105 / 2, 0, 0]) cylinder(r = R(44.5), h = PlatterThickness + 1, center = true, $fn = 100); + } + } + } +} + +//length in meters +module split_reel (format = "16mm", length = 120, half = "A") { + + if (half == "A") { + difference () { + union () { + platter([0, 0, 0], length = length); + threaded_core([0, 0, (PlatterThickness / 2) + (6 / 2)], format = "16mm"); + } + if (format == "16mm") { + cube([8.5, 8.5, 50], center = true); + rotate([0, 0, 45]) translate([5.5, 0, 0]) cube([3, 3, 50], center = true); + } + } + } else if (half == "B") { + difference () { + union () { + platter([0, 0, 0], length = length); + socket_core([0, 0, (PlatterThickness / 2) + (11 / 2)], format = "16mm"); + } + thread_16mm([0, 0, -1], 15); + thread_16mm([0, 0, -1.1], 15); + } + } +} + +PART = "split_reel_16mm_120m_B"; + +if (PART == "split_reel_16mm_120m_A") { + intersection () { + split_reel("16mm", 120, "A"); + cube([30, 30, 30], center = true); + } +} else if (PART == "split_reel_16mm_120m_B") { + intersection () { + split_reel("16mm", 120, "B"); + cube([30, 30, 30], center = true); + } +} \ No newline at end of file