diff --git a/CFTubes.scad b/CFTubes.scad index cd7694e..269d4a7 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -628,6 +628,8 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= } } } + bridge_channel_width = 5; + bridge_channel_depth = 7; if (reference) { union() { @@ -660,6 +662,44 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= echo("Making a bridge"); } 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]) { @@ -687,7 +727,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); // difference() { // translate([-15, -60, 0]) cube([50, 120, 8]);