First 2banger pickup segment test

This commit is contained in:
Luke Hubmayer-Werner 2025-02-13 01:43:15 +10:30
parent 4a6efa9384
commit 08aa45ea54
2 changed files with 51 additions and 13 deletions

View File

@ -19,18 +19,25 @@ shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side
relay_coil_housing_w = 15.2;
relay_coil_housing_l = 18.8;
relay_coil_housing_h = 15.5;
// relay_coil_leg_cavity_h = 5;
relay_coil_leg_cavity_l = 5;
module relay_coil_placeholder() translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2]) cube([relay_coil_housing_w, relay_coil_housing_l, relay_coil_housing_h]);
module relay_coil_placeholder(top_clearance=0, bottom_leg_clearance=5) {
translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2]) cube([relay_coil_housing_w, relay_coil_housing_l, relay_coil_housing_h+top_clearance]);
translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2, -bottom_leg_clearance]) cube([relay_coil_housing_w, relay_coil_leg_cavity_l, bottom_leg_clearance]);
}
output_socket_plate_thickness = 3; // The bit with the hole to screw onto
output_socket_cutout_d = 10.4 + 0.5;
output_socket_washer_d = 17.0 + 0.5;
output_socket_l = 25;
output_socket_w = 20;
output_socket_h = 16;
output_socket_h = 15.7 + 0.3;
output_socket_protrude = 9.5;
module output_socket_placeholder() {
translate([-output_socket_w/2, 0, 0]) cube([output_socket_w, output_socket_l, output_socket_h]);
module output_socket_placeholder(rear_clearance=0) {
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);
}
// Philippians 4:8
@ -1136,6 +1143,19 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
echo(segment_cuts);
echo([ for (i=[1:len(segment_cuts)-1]) segment_cuts[i]-segment_cuts[i-1]]);
pickup_y = fret_scale_length(36);
module ElectronicsCavities(diff=false) {
// Directly under the strings would hit the second truss rod :(
//for (i=[0,1]) translate([string_x(i, pickup_y), pickup_y, -10]) relay_coil_placeholder();
z_pickup = -10;
for (i=[0,1]) mirror([i, 0, 0]) translate([12, pickup_y, z_pickup]) relay_coil_placeholder(top_clearance = diff ? 40 : 0);
// translate([0, pickup_y-8, -20]) rotate([0, 90, 0]) cylinder_outer(d=6, h=neck_width()+10, center=true);
// translate([5, pickup_y-38, -10]) rotate([0, 90, 0]) output_socket_placeholder();
output_socket_y = pickup_y-26;
translate([output_socket_l/2, output_socket_y, -10]) rotate([0, 0, 90]) output_socket_placeholder(rear_clearance = diff ? 40 : 0);
translate([output_socket_l/2 - 100, output_socket_y + output_socket_w/2 - 2, -10-1]) cube([100, 9, 2]);
}
module MyBodySegment() {
body_height = 24;
epsilon = 0.000001;
@ -1162,6 +1182,15 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
translate([0, 490+y0, 50]) cube([100, 100, 100], center=true);
}
}
// Electronics bulge
hull() {
bulge_w = 42.5;
bulge_l = 55;
bulge_y = pickup_y-40;
translate([-neck_width()/2, bulge_y-15, -body_height]) round_cube([neck_width(), bulge_l+30, body_height+$extra_thickness_above_center], r = radius);
translate([-bulge_w/2, pickup_y-40, $extra_thickness_above_center-body_height]) round_cube([bulge_w, bulge_l, body_height], r = radius);
}
}
module HeadPiece() {
@ -1231,6 +1260,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
[ 9, segment_cuts[2], -17],
[-10.25, segment_cuts[2], 2.5],
[ 10.25, segment_cuts[2], 2.5],
[-10, segment_cuts[1], 0],
[ 10, segment_cuts[1], 0],
[-10, segment_cuts[1], -17],
[ 10, segment_cuts[1], -17],
];
module Dowels() {
for (v=dowel_positions) translate(v) Dowel();
@ -1243,6 +1276,8 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
TrussRods(extra=20);
Dowels();
ElectronicsCavities(diff=true);
// Add a belt hole
arc = arc_points([[23, -13], [-23, -13], [0, -3]], 1);
belthole_r = 3;
@ -1284,9 +1319,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
if (preview) {
// TrussRods();
// CFs();
pickup_y = fret_scale_length(36);
for (i=[0,1]) translate([string_x(i, pickup_y), pickup_y, -10]) relay_coil_placeholder();
translate([9, pickup_y-40, -10]) rotate([0, 90, 0]) output_socket_placeholder();
ElectronicsCavities();
color("#FF000080") MyBody();
strings_reference();
} else render() {
@ -1309,7 +1342,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
colour_scheme = COLOURSCHEME_ABS_BLUE;
// TwoBangerMk2(preview=true);
segment = 2;
segment = 1;
color(colour_scheme[0]) TwoBangerMk2([0], segment);
color(colour_scheme[1]) TwoBangerMk2([1], segment);
color(colour_scheme[2]) TwoBangerMk2([2], segment);

View File

@ -8,7 +8,8 @@ function neck_width(mm=0, fret=-9999) = lerp($neck_width_bridge, $neck_width_nut
function get_fret_width(fret) = $fret_widths[clamp(0, fret, len($fret_widths)-1)];
function get_fret_height(fret) = sin($fret_angle) * get_fret_width(fret)/2;
function get_max_fret_width() = max($fret_widths);
function get_max_fret_height() = ((1-cos($fret_angle))/(sin($fret_angle))) * get_max_fret_width()/2;
function arc_starting_angle_to_height_ratio(angle) = ((1-cos(angle))/(sin(angle)));
function get_max_fret_height() = arc_starting_angle_to_height_ratio($fret_angle) * get_max_fret_width()/2;
function behind_fret(fret) = fret_scale_length(fret) + get_fret_width(fret)/2;
function after_fret(fret) = fret_scale_length(fret) - get_fret_width(fret)/2;
@ -175,6 +176,10 @@ module TaperNeck(
z1 = z0 + $scallop_depth; // Frets protrude from here
z2 = z1 + get_max_fret_height(); // Nothing above this => thickest top of neck
y2 = fret_scale_length($num_frets) - get_fret_width($num_frets)/2; // bridge-side edge of final fret
final_scallop_length = $scallop_depth / arc_starting_angle_to_height_ratio(max_scallop_angle);
y1 = y2 - final_scallop_length;
module neck_stock() {
angle_excess = asin(z2/$target_neck_thickness);
a0 = 90-angle_excess;
@ -206,8 +211,9 @@ module TaperNeck(
children();
}
module scallop(fret) {
x0 = fret_scale_length(fret-1) - get_fret_width(fret-1)/2;
x1 = fret_scale_length(fret) + get_fret_width(fret)/2;
x0 = fret_scale_length(fret) - get_fret_width(fret)/2;
x_fret = fret_scale_length(fret+1) + get_fret_width(fret+1)/2;
x1 = (fret < $num_frets) ? x_fret : (x0 - final_scallop_length*2);
xmid = lerp(x0, x1, 0.5);
xdelta = x0-x1;
@ -295,11 +301,10 @@ module TaperNeck(
render() difference() {
neck_stock() children();
scallops();
scallop($num_frets+1);
// Chop off anything above the frets
translate([-$neck_width_bridge, 0, z1]) cube([$neck_width_bridge*2, $guitar_scale_length_mm*3, $target_neck_thickness*3]);
// Reduce rest of the body to 0
translate([-$neck_width_bridge, 0, z0]) cube([$neck_width_bridge*2, (fret_scale_length($num_frets)+fret_scale_length($num_frets+1))/2, $target_neck_thickness*3]);
translate([-$neck_width_bridge, 0, z0]) cube([$neck_width_bridge*2, y1, $target_neck_thickness*3]);
}
intersection() {
fret_bumps();