First Bridge attempt for Steel6

This commit is contained in:
Luke Hubmayer-Werner 2025-02-20 05:19:34 +10:30
parent 967401e4b9
commit 3b25e7ad6e
2 changed files with 49 additions and 95 deletions

View File

@ -1068,6 +1068,10 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) {
%Full();
translate([0, -10, 0]) FlatBridge(saddle_height=bridge_height-6, base_height=6, y_len=10);
PiezoElectronics();
} else if (segment == "bridge") {
echo("Making a bridge");
$num_unwound_strings = 3;
NotchBridge(bridge_channel_width=bridge_channel_width, bridge_channel_depth=bridge_channel_depth);
} else if (segment >= 0) {
intersection() {
Full();
@ -1077,92 +1081,6 @@ module Steel6String(include_colours=[0,1,4], segment=-1, reference=false) {
}
} else if (segment == -1) {
Full();
} else if (segment == -4) {
echo("Making a bridge");
y_len = 9;
base_height = 7;
saddle_height = 4;
pickup_w = 3;
pickup_h = 2;
render() difference() {
union() {
// Base
translate([-neck_width/2, 0, 0]) cube([neck_width, y_len, base_height]);
// String saddles - rule of thumb: string diameter multiplied by 4
r0 = 0.85;
for (i = [0:num_strings-1]) translate([(num_strings-i-1)*string_spacing - neck_width/2 + string_margin, y_len - string_diameters_mm[i]*4, base_height]) {
step = ($preview) ? 8 : 2;
r = r0 + string_diameters_mm[i]*1.2;
translate([0, 0, saddle_height]) for (a=[90:step:270-step]) hull() {
translate([-sin(a)*r, 0, cos(a)*r]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r, 0, cos(a+step)*r]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a)*r, -3.7, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r, -3.7, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a)*r, 1.2, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r, 1.2, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
}
}
// Bridge channel notch
notch_w = bridge_channel_width - CF_Square_Width_tolerance; // Shrink a little for tolerance
notch_d = bridge_channel_depth - CF_Square_Width_tolerance/2;
translate([-notch_w/2, 0, -notch_d]) cube([notch_w, y_len, notch_d]);
}
// Pickup notch
tol = 0.25;
translate([-neck_width/2, 2, -tol]) hull() {
cube([neck_width, pickup_w, pickup_h+tol]);
translate([0, pickup_h*0.8, 0]) cube([neck_width, pickup_w, 0.01]);
}
// Version stamp
y0 = 0;
y1 = y_len;
translate([-15,y0+0.5,4]) rotate([90,0,0]) linear_extrude(10) {
text(str(id_line_0, id_line_1), size=2.9, halign="center", valign="center", $fn=100);
}
translate([-15,y1-0.5,4]) rotate([90,0,180]) linear_extrude(10) {
text(str(id_line_0, id_line_1), size=2.9, halign="center", valign="center", $fn=100);
}
}
} else if (from_fret == -5) {
echo("Making a tailpiece");
y0 = -47;
y1 = 0;
fw_len = 20;
total_len = y1-y0;
fw_height = 43;
rad_diameter = 20.35; //21;
rad_radius = rad_diameter/2;
render() difference() {
hull() {
translate([-body_width/2, -fw_len, -fw_height]) cube([body_width, fw_len, fw_height]);
translate([0, -total_len+rad_radius, -rad_radius]) rotate([0,90,0]) cylinder(h=neck_width, d=rad_diameter, center=true, $fn=cyl_hd_fn);
}
// Tuner cavity line up
tw = 16;
z0 = -43;
for (i=[-1,1]) translate([-tw/2 + i*15, y0, z0+5]) cube([tw, total_len, -z0-25]);
// String channels
for (i = [0:num_strings-1]) translate([(num_strings-i-1)*string_spacing - neck_width/2 + string_margin, y0+rad_radius, -rad_radius]) {
x = [-1,0,1,-1,0,1][i]*4/180;
r = rad_radius + string_diameters_mm[i]*0.5;
for (a = [0:180]) hull() {
translate([a*x, -sin(a)*r, cos(a)*r]) sphere(r=string_diameters_mm[i], $fn=cyl_ld_fn);
translate([a*x, -sin(a+1)*r, cos(a+1)*r]) sphere(r=string_diameters_mm[i], $fn=cyl_ld_fn);
}
}
// Bridge channel
translate([-bridge_channel_width/2, y0+rad_radius, -bridge_channel_depth]) cube([bridge_channel_width, total_len-rad_radius, bridge_channel_depth]);
// Version stamp
translate([-30,y0+0.5,-15]) rotate([90,0,0]) linear_extrude(10) {
text(str(id_line_0, id_line_1), size=2.9, halign="center", valign="center", $fn=100);
}
translate([-30,y1-0.5,-15]) rotate([90,0,180]) linear_extrude(10) {
text(str(id_line_0, id_line_1), size=2.9, halign="center", valign="center", $fn=100);
}
// CF
for (v = reinforcing_tube_positions) CFTubeCutout2(v, y0, y1);
for (v = reinforcing_square_positions) CFSquareCutout2(v, y0, y1);
}
}
// Debug markers to aid part slicing eyeballing
// %for (i = [150:250:1000]) {
@ -1184,14 +1102,14 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "",
colour_scheme = COLOURSCHEME_ABS_CLOWNFISH;
// colour_scheme = COLOURSCHEME_ABS_BLUE;
segment = 0;
// color(colour_scheme[0]) Steel6String(segment=segment, include_colours=[0]);
segment = "bridge";
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]);
// rotate([90,0,0])
Steel6String(reference=true);
// Steel6String(reference=true);
module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {

View File

@ -362,7 +362,7 @@ module TaperNeck(
}
}
module FlatBridge(saddle_height = 10, base_height = 6, y_len = 15) {
module FlatBridge(saddle_height = 10, base_height = 6, y_len = 15, screw_hole = true) {
// A bridge with no channel notch or piezo strip notch, to be printed more easily for coil-only guitars
// Base
render() difference() {
@ -371,18 +371,22 @@ module FlatBridge(saddle_height = 10, base_height = 6, y_len = 15) {
translate([-neck_width()/2, 0, -r]) round_cube([neck_width(), y_len, base_height+r], r=r);
translate([-neck_width()/2, 0, -r]) cube([neck_width(), y_len, r]);
// screw hole just in case
translate([0, y_len/2, 0]) cylinder_outer(d=2.25, h=base_height);
countersink = 3;
translate([0, y_len/2, base_height-countersink]) cylinder_outer(d=5, h=countersink);
if (screw_hole) {
translate([0, y_len/2, 0]) cylinder_outer(d=2.25, h=base_height);
countersink = 3;
translate([0, y_len/2, base_height-countersink]) cylinder_outer(d=5, h=countersink);
}
}
// String saddles - rule of thumb: string diameter multiplied by 4
// Make the thinnest string sit right at the front
m = 4;
m_unwound = 8;
saddle_y0 = 2.5; //1.2;
saddle_y1 = -3.7;
r0 = 0.85;
y_start = y_len + min($string_diameters_mm)*m - (r0+saddle_y0);
for (i = [0:$num_strings-1]) translate([($num_strings-i-1)*string_spacing(0) - neck_width()/2 + $string_margin, y_start - $string_diameters_mm[i]*m, base_height]) {
string_setbacks = [ for (i=[0:$num_strings-1]) $string_diameters_mm[i] * ((i < $num_unwound_strings) ? m_unwound : m) ];
y_start = y_len + min(string_setbacks) - (r0+saddle_y0);
for (i = [0:$num_strings-1]) translate([($num_strings-i-1)*string_spacing(0) - neck_width()/2 + $string_margin, y_start - string_setbacks[i], base_height]) {
step = ($preview) ? 9 : 3;
r1 = r0 + $string_diameters_mm[i]*1.2;
r2 = r0 + $string_diameters_mm[i]*1.1;
@ -397,6 +401,38 @@ module FlatBridge(saddle_height = 10, base_height = 6, y_len = 15) {
}
}
module NotchBridge(bridge_channel_depth, bridge_channel_width, saddle_height = 4, base_height = 6, y_len = 11) {
// Add a key at the bottom to fit the bridge channel
// Add a channel for the piezo pickup
w = neck_width();
pickup_w = 3;
pickup_h = 2;
render() difference() {
union() {
FlatBridge(saddle_height = saddle_height, base_height = base_height, y_len = y_len, screw_hole = false);
// Bridge channel notch
notch_w = bridge_channel_width - CF_Square_Width_tolerance; // Shrink a little for tolerance
notch_d = bridge_channel_depth - CF_Square_Width_tolerance/2;
translate([-notch_w/2, 0, -notch_d]) cube([notch_w, y_len, notch_d]);
}
// Pickup notch
tol = 0.75;
translate([-w/2, 2, -tol]) hull() {
cube([w, pickup_w, pickup_h+tol]);
translate([0, (pickup_h+tol)*0.8, 0]) cube([w, pickup_w, 0.01]);
}
// Version stamp
y0 = 0;
y1 = y_len;
translate([-15,y0+0.5,4]) rotate([90,0,0]) linear_extrude(10) {
text(str($id_lines[0], $id_lines[1]), size=2.9, halign="center", valign="center", $fn=100);
}
translate([-15,y1-0.5,4]) rotate([90,0,180]) linear_extrude(10) {
text(str($id_lines[0], $id_lines[1]), size=2.9, halign="center", valign="center", $fn=100);
}
}
}
module BeltHole(xz_pts, belthole_y0, belthole_y1, belthole_r=3, belthole_fn=72, fragments_per_mm=1, xy_curve_width=neck_width(), xy_curve_angle=120, xy_curve_x=20) {
// Add a belt hole
arc = arc_points(xz_pts, fragments_per_mm=fragments_per_mm);