Finalizing Pickup onwards (bridge+tail remains)

This commit is contained in:
Luke Hubmayer-Werner 2025-02-18 23:47:07 +10:30
parent f1c1df50de
commit a43a86ae68
1 changed files with 58 additions and 26 deletions

View File

@ -14,21 +14,28 @@ include <EllipticalNeck.scad>
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]);
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, $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) {