From 3b25e7ad6ed6f610567090796fcf11331f47f75e Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Thu, 20 Feb 2025 05:19:34 +1030 Subject: [PATCH] First Bridge attempt for Steel6 --- CFTubes.scad | 96 ++++----------------------------------------- EllipticalNeck.scad | 48 ++++++++++++++++++++--- 2 files changed, 49 insertions(+), 95 deletions(-) diff --git a/CFTubes.scad b/CFTubes.scad index d46502e..b49283e 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -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) { diff --git a/EllipticalNeck.scad b/EllipticalNeck.scad index 987f113..5591529 100644 --- a/EllipticalNeck.scad +++ b/EllipticalNeck.scad @@ -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);