diff --git a/split_reel.scad b/split_reel.scad index 9b852bf..447c3cd 100644 --- a/split_reel.scad +++ b/split_reel.scad @@ -2,17 +2,43 @@ include <./common/common.scad>; include <./common/threads.scad>; Core16mm = 25.5; +Socket16mmH = 11; PlatterThickness = 1.6; Platter120m = 178; Thread16mmD = 17.5; -Pitch16mm = 1.55; +Pitch16mm = 1.525; + +SocketSuper8H = 4; +ThreadSuper8D = 21; + +module rotary_text (TextArr = ["T","e","s","t"], D = 40, CharacterAngle = 15) { + Radius = R(D); + Chars = len(TextArr); + for (i = [0:1:Chars]) { + rotate([0, 0, -i * CharacterAngle]) translate([0, Radius, 0]) { + scale([0.5, 0.5, 1]) linear_extrude(height = 1) { + text(TextArr[i], halign = "center"); + } + } + } +} module thread_16mm ( pos = [0, 0, 0], length = 11, chamfer = false, pad = 0) { translate(pos) { if (chamfer) { - metric_thread (diameter=Thread16mmD, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=2, leadfac=1.5); + metric_thread (diameter=Thread16mmD + pad, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=2, leadfac=1.5); } else { - metric_thread (diameter=Thread16mmD, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=0, leadfac=1.5); + metric_thread (diameter=Thread16mmD + pad, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=0, leadfac=1.5); + } + } +} + +module thread_super8 ( pos = [0, 0, 0], length = 6, chamfer = false, pad = 0) { + translate(pos) { + if (chamfer) { + metric_thread (diameter=ThreadSuper8D + pad, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=2, leadfac=1.5); + } else { + metric_thread (diameter=ThreadSuper8D + pad, pitch=Pitch16mm, length=length, internal=false, n_starts=1, thread_size=-1, groove=false, square=false, rectangle=0, angle=30, taper=0, leadin=0, leadfac=1.5); } } } @@ -23,7 +49,12 @@ module threaded_core (pos = [0, 0, 0], format = "16mm") { if (format == "16mm") { union () { cylinder(r = R(Core16mm), h = 6, center = true); - thread_16mm([0, 0, 1.5], length = 14, chamfer = true); + thread_16mm([0, 0, 1.5], length = Socket16mmH + 3, chamfer = true, pad = -0.2); + } + } else if (format == "super8") { + union () { + cylinder(r = R(Core16mm), h = 4, center = true); + thread_super8([0, 0, 0], length = SocketSuper8H + 3, chamfer = true, pad = -0.2); } } } @@ -34,7 +65,11 @@ module socket_core (pos = [0, 0, 0], format = "16mm") { translate (pos) { if (format == "16mm") { difference () { - cylinder(r = R(Core16mm), h = 11, center = true); + cylinder(r = R(Core16mm), h = Socket16mmH, center = true); + } + } else if (format == "super8") { + difference () { + cylinder(r = R(Core16mm), h = SocketSuper8H, center = true); } } } @@ -51,41 +86,93 @@ module platter (pos = [0, 0, 0], length = 120) { } } +module split_reel_16mm_A (length = 120) { + difference () { + union () { + difference () { + platter([0, 0, 0], length = length); + translate([0, 0, -0.5]) rotate([180, 0, 0]) rotate([0, 0, (5 * 3.75) / 2]) rotary_text(["1", "6", "m", "m", " ", " ", "1", "2", "0", "m", "/", "4", "0", "0", "f", "t"], D = Platter120m - 15, CharacterAngle=3.75); + } + threaded_core([0, 0, (PlatterThickness / 2) + (6 / 2)], format = "16mm"); + rotate([0, 0, 135]) translate([18.5, 0, (PlatterThickness / 2) + (4.75 / 2)]) cylinder(r = R(6.25), h = 4.75, center = true, $fn = 60); + + } + cube([8.5, 8.5, 50], center = true); + rotate([0, 0, 45]) translate([5.5, 0, 0]) cube([3, 3, 50], center = true); + } +} + +module split_reel_16mm_B ( length = 120) { + difference () { + union () { + platter([0, 0, 0], length = length); + socket_core([0, 0, (PlatterThickness / 2) + (Socket16mmH / 2)], format = "16mm"); + } + rotate([180, 0, 0]) scale([1.02, 1.02, 1]) { + thread_16mm([0, 0, -13], 15); + thread_16mm([0, 0, -13.1], 15); + } + } +} + +module split_reel_super8_A ( length = 120) { + BaseH = 4; + NotchH = 2; + NotchW = 19; + + difference () { + union () { + platter([0, 0, 0], length = length); + threaded_core([0, 0, (PlatterThickness / 2) + (BaseH / 2)], format = "super8"); + rotate([0, 0, 135]) translate([18.5, 0, (PlatterThickness / 2) + (NotchH / 2)]) cylinder(r = R(6.25), h = NotchH, center = true, $fn = 60); + } + cylinder(r = R(13), h = 50, center = true, $fn = 80); + for (i = [0 : 2]) { + rotate([0, 0, i * (360 / 3)]) translate([NotchW / 4, 0, 0]) cube([NotchW / 2, 2.25, 8], center = true); + } + } +} + +module split_reel_super8_B ( length = 120) { + difference () { + union () { + platter([0, 0, 0], length = length); + socket_core([0, 0, (PlatterThickness / 2) + (SocketSuper8H / 2)], format = "super8"); + } + rotate([180, 0, 0]) scale([1.02, 1.02, 1]) { + thread_super8([0, 0, -13], 15); + thread_super8([0, 0, -13.1], 15); + } + } +} + //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"); - rotate([0, 0, 135]) translate([18.5, 0, (PlatterThickness / 2) + (4.75 / 2)]) cylinder(r = R(6.25), h = 4.75, center = true, $fn = 60); - } - 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); - } + if (format == "16mm") { + if (half == "A") { + split_reel_16mm_A(length = length); + } else if (half == "B") { + split_reel_16mm_B(length = length); } - } else if (half == "B") { - difference () { - union () { - platter([0, 0, 0], length = length); - socket_core([0, 0, (PlatterThickness / 2) + (11 / 2)], format = "16mm"); - } - rotate([180, 0, 0]) scale([1.02, 1.02, 1]) { - thread_16mm([0, 0, -13], 15); - thread_16mm([0, 0, -13.1], 15); - } + } else if (format == "super8") { + if (half == "A") { + split_reel_super8_A(length = length); + } else if (half == "B") { + split_reel_super8_B(length = length); } } } PART = "split_reel_16mm_120m_B"; -intersection () { - if (PART == "split_reel_16mm_120m_A") { - split_reel("16mm", 120, "A"); - } else if (PART == "split_reel_16mm_120m_B") { - split_reel("16mm", 120, "B"); - } - cube([30, 30, 40], center = true); -} \ No newline at end of file +//intersection () { +if (PART == "split_reel_16mm_120m_A") { + split_reel("16mm", 120, "A"); +} else if (PART == "split_reel_16mm_120m_B") { + split_reel("16mm", 120, "B"); +} else if (PART == "split_reel_super8_120m_A") { + split_reel("super8", 120, "A"); +} else if (PART == "split_reel_super8_120m_B") { + split_reel("super8", 120, "B"); +} +//cube([40, 40, 40], center = true); +//}