20250213 bridge tweaks

Results: Still can't get a good grip on the sleeve nut for the tuner, and the washer is right out. Need to expand that clearance more.
Full assembly note: Tension imbalance in the two strings bows the neck sideways,
This commit is contained in:
Luke Hubmayer-Werner 2025-02-14 14:23:52 +10:30
parent d47153eaf5
commit 9b60025172
4 changed files with 48 additions and 11 deletions

View File

@ -1116,7 +1116,7 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "",
module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) { module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
$include_colours = include_colours; $include_colours = include_colours;
$guitar_scale_length_mm = PBass_Scale_mm; $guitar_scale_length_mm = PBass_Scale_mm;
$id_lines = ["Zweisaiten", "250213"]; $id_lines = ["Zweisaiten", "250213-1"];
$fsl_mm = fret_scale_length(0); $fsl_mm = fret_scale_length(0);
$string_diameters_thous = [80, 105]; // Artist BST45130 $string_diameters_thous = [80, 105]; // Artist BST45130
@ -1162,7 +1162,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
// mirror([i,0,0]) translate([15, (i*32)-66, -26]) rotate([0, -90, 0]) UBassTuner(from_side=false, from_below=true); // mirror([i,0,0]) translate([15, (i*32)-66, -26]) rotate([0, -90, 0]) UBassTuner(from_side=false, from_below=true);
// Tuners to the top, knobs pointing out the back // Tuners to the top, knobs pointing out the back
for (i=[0:1]) for (i=[0:1])
mirror([i,0,0]) translate([-3.5, -78, -32]) rotate([0, 0, -90]) UBassTuner(from_side=false, from_below=true); mirror([i,0,0]) translate([-3.5, -78, -32]) rotate([0, 0, -90]) UBassTuner(from_side=false, from_below=true, hole_tolerance=0.5);
// rotate([180, -90, 0]) UBassTuner(from_side=false, from_below=true); // rotate([180, -90, 0]) UBassTuner(from_side=false, from_below=true);
} }
@ -1344,7 +1344,9 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
color("#FF000080") MyBody(); color("#FF000080") MyBody();
strings_reference(30); strings_reference(30);
} else render() { } else render() {
if (segment < 0) { if (segment == "bridge") {
FlatBridge();
} else if (segment < 0) {
MyBody(); MyBody();
} else { } else {
difference() { difference() {
@ -1363,7 +1365,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
colour_scheme = COLOURSCHEME_ABS_BLUE; colour_scheme = COLOURSCHEME_ABS_BLUE;
// TwoBangerMk2(preview=true); // TwoBangerMk2(preview=true);
segment = 0; segment = "bridge";
color(colour_scheme[0]) TwoBangerMk2([0], segment); color(colour_scheme[0]) TwoBangerMk2([0], segment);
color(colour_scheme[1]) TwoBangerMk2([1], segment); color(colour_scheme[1]) TwoBangerMk2([1], segment);
color(colour_scheme[2]) TwoBangerMk2([2], segment); color(colour_scheme[2]) TwoBangerMk2([2], segment);

View File

@ -213,7 +213,7 @@ module TrussRod(length = 630, tolerance = 0, taper_l = 3.0, taper_extra = 1.0, t
]; ];
TrussRodGeneric(length=length, tolerance=tolerance, stages=stages, taper_l=taper_l, taper_extra=taper_extra, taper_points=taper_points, extra=extra); TrussRodGeneric(length=length, tolerance=tolerance, stages=stages, taper_l=taper_l, taper_extra=taper_extra, taper_points=taper_points, extra=extra);
} }
module TrussRodSingleAction(length = 460, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, taper_points=[], extra=false) { module TrussRodSingleAction(length = 460, tolerance = 0, taper_l = 3.0, taper_extra = 1.0, taper_points=[], extra=false) {
// base profile // base profile
base_d = 4.6 + tolerance; base_d = 4.6 + tolerance;
base_w = 6.1 + tolerance; base_w = 6.1 + tolerance;

View File

@ -346,3 +346,38 @@ module TaperNeck(
} }
} }
} }
module FlatBridge(saddle_height = 10, base_height = 6, y_len = 15) {
// A bridge with no channel notch or piezo strip notch, to be printed more easily for coil-only guitars
// Base
render() difference() {
// Flatten off a rounded cube
r = 0.6;
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);
}
// String saddles - rule of thumb: string diameter multiplied by 4
// Make the thinnest string sit right at the front
m = 4;
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]) {
step = ($preview) ? 9 : 3;
r1 = r0 + $string_diameters_mm[i]*1.2;
r2 = r0 + $string_diameters_mm[i]*1.1;
translate([0, 0, saddle_height]) for (a=[90:step:270-step]) hull() {
translate([-sin(a)*r1, 0, cos(a)*r2]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r1, 0, cos(a+step)*r2]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a)*r1, saddle_y0, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r1, saddle_y0, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a)*r1, saddle_y1, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
translate([-sin(a+step)*r1, saddle_y1, -saddle_height-r0]) sphere(r=r0, $fn=cyl_ld_fn);
}
}
}

View File

@ -1,11 +1,11 @@
module UBassTuner(from_below=false, from_side=true) { module UBassTuner(from_below=false, from_side=true, hole_tolerance=0) {
t_base = 11; t_base = 11;
d_thread = 11.0 + 0.25; d_thread = 11.0 + 0.25 + hole_tolerance;
d_collar = 13.8 + 0.2; // Add some tolerance d_collar = 13.8 + 0.2 + hole_tolerance; // Add some tolerance
l_collar = 8; // doesn't include hex l_collar = 8; // doesn't include hex
l_collarnut_to_top_of_peg = 19; //22; l_collarnut_to_top_of_peg = 19; //22;
d_top_of_peg = 16+2; d_top_of_peg = 16+2 + hole_tolerance;
max_thread = 5.0; // thread to cover without the collar max_thread = 5.0; // thread to cover without the collar
w_tag = 19; w_tag = 19;
l_tag = 32.5; l_tag = 32.5;
@ -29,7 +29,7 @@ module UBassTuner(from_below=false, from_side=true) {
module tuner_footprint() { module tuner_footprint() {
hull() { hull() {
translate([-w_tag/2, -l_tag+d_screw_tab/2]) square([w_tag, l_tag_rect]); translate([-w_tag/2, -l_tag+d_screw_tab/2]) square([w_tag, l_tag_rect]);
circle(d=d_screw_tab, $fn=72); translate([0, 1.0]) circle(d=d_screw_tab, $fn=72);
} }
} }
module tuner_footprint_extrude(h) { module tuner_footprint_extrude(h) {
@ -37,7 +37,7 @@ module UBassTuner(from_below=false, from_side=true) {
// src/openscad/src/geometry/linear_extrude.cc:409: std::unique_ptr<Geometry> extrudePolygon(const LinearExtrudeNode&, const Polygon2d&): Assertion `poly.isSanitized()' failed. // src/openscad/src/geometry/linear_extrude.cc:409: std::unique_ptr<Geometry> extrudePolygon(const LinearExtrudeNode&, const Polygon2d&): Assertion `poly.isSanitized()' failed.
hull() { hull() {
translate([-w_tag/2, -l_tag+d_screw_tab/2, 0]) cube([w_tag, l_tag_rect, h]); translate([-w_tag/2, -l_tag+d_screw_tab/2, 0]) cube([w_tag, l_tag_rect, h]);
cylinder(h=h, d=d_screw_tab, $fn=72); translate([0, 0.75, 0]) cylinder(h=h, d=d_screw_tab, $fn=72);
} }
} }
module holes() { module holes() {