diff --git a/CFTubes.scad b/CFTubes.scad index 269d4a7..0c794ed 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -4,8 +4,8 @@ include include // Choose your material by only including one of the below -include -// include +// include +include // Guitar_Scale_Length_mm = 610; // millimetres, slightly over 24inch (609.6mm) Jaguar scale, should be fine for guitar and u-bass // assert(fret_scale_length(0) == 610); // Make sure the function correctly uses our changed global @@ -390,11 +390,12 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= colour_1 = "white"; // fret layers colour_2 = "green"; // side markers colour_3 = "yellow"; // inlays - id_line_0 = "PLA"; - id_line_1 = "1δ"; + id_line_0 = "PETG"; + id_line_1 = "1δ.α"; fsl_mm = fret_scale_length(0); - string_diameters_thous = [28, 32, 40, 30, 36, 42]; + // string_diameters_thous = [28, 32, 40, 30, 36, 42]; // Ernie Ball Earthwoods (seemingly counterfeit from Amazon) + string_diameters_thous = [28, 32, 40, 30, 35, 43]; // Artist CLST Classical Nylon Guitar Strings string_diameters_mm = string_diameters_thous * 0.0254; num_frets = 21; @@ -577,6 +578,7 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= module TunerBlockCheekVolumes() { vw = 50; for (i=[-1,1]) translate([-vw/2 + i*58, 0, z0]) cube([vw, y0, -z0]); + for (i=[-1,1]) translate([-vw/2 + i*46, 0, -14]) cube([vw, y0, -z0]); } if (tuner_block) { render() difference() { @@ -660,6 +662,50 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= LoopOrTunerBlock(true); } else if (from_fret == -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; @@ -727,9 +773,9 @@ Guitar_Scale_Length_mm = Classical_Short_Scale_mm; // translate([0, Guitar_Scale_Length_mm, 0]) rotate([0,0,180]) Nylon6String(reference=true); // rotate([0,0,180]) Nylon6String(from_fret=-1); // Nylon6String(from_fret=-2); -// %Nylon6String(from_fret=-3); +Nylon6String(from_fret=-3); // Nylon6String(from_fret=-4); -Nylon6String(from_fret=-5); +// %Nylon6String(from_fret=-5); // difference() { // translate([-15, -60, 0]) cube([50, 120, 8]);