From a43a86ae68d242309084f23673796e41867384db Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Tue, 18 Feb 2025 23:47:07 +1030 Subject: [PATCH] Finalizing Pickup onwards (bridge+tail remains) --- CFTubes.scad | 84 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 26 deletions(-) diff --git a/CFTubes.scad b/CFTubes.scad index a494143..a86a1e8 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -14,21 +14,28 @@ include shumbucker_h = 20.3; shumbucker_l = 23.1; -shumbucker_lu = 17.1; // Upper +shumbucker_lu = 18.0; // Upper - mind the solder blob on the back +shumbucker_lu2 = 19.4; // Upper - mind the solder blob on the back shumbucker_w1 = 66.4; shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side shumbucker_cable_l = 300; shumbucker_cable_d = 3.4; -module Shumbucker(y_align="center", z_align="positive") { - y_offset = (y_align == "center") ? -shumbucker_l/2 : - (y_align == "negative") ? -shumbucker_l : +module Shumbucker(y_align="center", z_align="positive", y_tolerance=0.5, z_tolerance=0.3) { + l = shumbucker_l + y_tolerance; + h = shumbucker_h + z_tolerance; + y_offset = (y_align == "center") ? -l/2 : + (y_align == "negative") ? -l : (y_align == "positive") ? 0 : 0; - z_offset = (y_align == "center") ? -shumbucker_h/2 : - (y_align == "negative") ? -shumbucker_h : + z_offset = (y_align == "center") ? -h/2 : + (y_align == "negative") ? -h : (y_align == "positive") ? 0 : 0; - translate([-shumbucker_w1/2, y_offset, z_offset]) cube([shumbucker_w1, shumbucker_l, shumbucker_h]); - translate([-shumbucker_w2/2, y_offset, z_offset]) cube([shumbucker_w2, shumbucker_l, 4]); + baseplate_thick = 5; //margin applied + hull() { + translate([-shumbucker_w1/2, y_offset + l - shumbucker_lu, z_offset]) cube([shumbucker_w1, shumbucker_lu, h]); + translate([-20/2, y_offset + l - shumbucker_lu2, z_offset]) cube([20, shumbucker_lu2, h]); + } + translate([-shumbucker_w2/2, y_offset, z_offset]) cube([shumbucker_w2, l, baseplate_thick]); } relay_coil_housing_w = 15.2; @@ -55,10 +62,12 @@ output_socket_l = 26; output_socket_w = 20; output_socket_h = 15.7 + 0.3; output_socket_protrude = 9.5; -module output_socket_placeholder(rear_clearance=0) { +module output_socket_placeholder(rear_clearance=0, outer_clearance=0, include_barrel=true) { translate([-output_socket_w/2, 0, 0]) cube([output_socket_w, output_socket_l+rear_clearance, output_socket_h]); - translate([0, 0, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_cutout_d, h=output_socket_protrude, $fn=72); - translate([0, -output_socket_plate_thickness, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_washer_d, h=output_socket_protrude-output_socket_plate_thickness, $fn=72); + if (include_barrel) { + translate([0, 0, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_cutout_d, h=output_socket_protrude, $fn=72); + translate([0, -output_socket_plate_thickness, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_washer_d, h=output_socket_protrude-output_socket_plate_thickness+outer_clearance, $fn=72); + } } module chromatic_tuner_eq(extra_depth=10, tolerance=0.5) { @@ -748,8 +757,8 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) { fc0 = 4; fc1 = 1; $fret_colours = [ - fc0, fc1, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc1, // 0-11 - fc0, fc1, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc1, // 12-23 + fc0, fc1, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc1, fc0, fc1, // 0-11 + fc0, fc1, fc1, fc0, fc1, fc0, fc1, fc0, fc1, fc1, fc0, fc1, // 12-23 ]; // To make it more like a Piano, let's do 10th instead of 9th fret markings $fret_inlays = [[3, "真"], [5, "尊"], [7, "正"], [10, "清"], [12, "評判"], [15, "愛"], [17, "徳"], [19, "賛"], [22, "良"], [24, "主イエス"], [27, "."], [29, "."], [31, "."], [34, "."]]; @@ -779,14 +788,16 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) { [ 9, $segment_cuts[4], -10], [ -8, $segment_cuts[3], -11], [ 8, $segment_cuts[3], -11], - [-38, $segment_cuts[2], -12], - [ 38, $segment_cuts[2], -12], + [-38, $segment_cuts[2], -11], + [ 38, $segment_cuts[2], -11], [-37, $segment_cuts[2], -25], [ 37, $segment_cuts[2], -25], - [-10, $segment_cuts[1], -4], - [ 10, $segment_cuts[1], -4], - [-17, $segment_cuts[1], -16], - [ 17, $segment_cuts[1], -16], + [-24, $segment_cuts[1], -4], + // [ 24, $segment_cuts[1], -4], + [-33, $segment_cuts[1], -16], + // [ 33, $segment_cuts[1], -16], + [ -8, $segment_cuts[1], -10], + [ 36, $segment_cuts[1], -27], ]; $reinforcing_tube_positions = [ [-17, y_end-25-CF_Tube_Len, -4.5], @@ -945,6 +956,26 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) { } } + module Pickup() { + shum_v = [0, $segment_cuts[2], -0.8]; + translate(shum_v) Shumbucker(y_align="negative", z_align="negative", y_tolerance=2); + // Cable channel + $fn = 72; + d = shumbucker_cable_d*1.5 + 1; + channel_v = [12, 60, -17]; + hull() { + translate(shum_v + [0, -shumbucker_lu, d/2 - 0.2 - shumbucker_h]) sphere(d=d); + translate(channel_v) sphere(d=d); + } + // Jack + jack_v = [body_width_tapered/2, output_socket_w/2, -18]; + translate(jack_v) rotate([0, 0, 90]) output_socket_placeholder(rear_clearance=12, outer_clearance=10); + hull() { + translate(jack_v) rotate([0, 0, 90]) output_socket_placeholder(rear_clearance=12, outer_clearance=10, include_barrel=false); + translate(channel_v) sphere(d=d); + } + } + module Full() { render() difference() { union() { @@ -952,7 +983,8 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) { HeadPiece(); } Reinforcements(); - BeltHole(xz_pts = [[60, -15], [-60, -15], [0, -10]], belthole_y0 = $segment_cuts[2]-100, belthole_y1 = $segment_cuts[2]-40, xy_curve_width = body_width, xy_curve_x = 32); + Pickup(); + BeltHole(xz_pts = [[60, -12.5], [-60, -12.5], [0, -9]], belthole_y0 = $segment_cuts[2]-100, belthole_y1 = $segment_cuts[2]-40, xy_curve_width = body_width, xy_curve_x = 32); } } @@ -962,7 +994,7 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) { if (reference) { c_cf = [0.4, 0.5, 0.5]; color(c_cf) Reinforcements(); - translate([0, $segment_cuts[2], -0.8]) Shumbucker(y_align="negative", z_align="negative"); + Pickup(); // Approximate tuner placement // TunerPlacement(); // Render strings above for spacing reference @@ -1092,14 +1124,14 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "", colour_scheme = COLOURSCHEME_ABS_CLOWNFISH; // colour_scheme = COLOURSCHEME_ABS_BLUE; -segment = -1; -// color(colour_scheme[0]) Steel6String(segment=segment, include_colours=[0]); -// color(colour_scheme[1]) Steel6String(segment=segment, include_colours=[1]); +segment = 2; +color(colour_scheme[0]) Steel6String(segment=segment, include_colours=[0]); +color(colour_scheme[1]) Steel6String(segment=segment, include_colours=[1]); // color(colour_scheme[2]) Steel6String(segment=segment, include_colours=[2]); // color(colour_scheme[3]) Steel6String(segment=segment, include_colours=[3]); -// color(colour_scheme[2]) Steel6String(segment=segment, include_colours=[4]); +color(colour_scheme[2]) Steel6String(segment=segment, include_colours=[4]); // rotate([90,0,0]) -Steel6String(reference=true); +// Steel6String(reference=true); module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {