diff --git a/CFTubes.scad b/CFTubes.scad index 40dcd9f..8ca9927 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -353,6 +353,7 @@ module Nylon6String() { string_margin = 3; // +6 scallop_depth = 2.5; target_neck_thickness = 22; + fret_width=2.4; // neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing); @@ -360,16 +361,37 @@ module Nylon6String() { for (i=[0:ply-1]) translate([0, lerp(0, full_length-CF_Tube_Len, i/(ply-1)), CF_Square_Width*i]) CFSquare(hole=hole); } - for (m=[0,11]) mirror([m, 0, 0]) color([0.4, 0.5, 0.5]) translate([9, -40, -16]) CF_Span(); + // for (m=[0,11]) mirror([m, 0, 0]) color([0.4, 0.5, 0.5]) translate([9, -40, -16]) CF_Span(); // CFTube(); - %neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing, scallop_depth=scallop_depth, target_neck_thickness=target_neck_thickness); + // %neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing, scallop_depth=scallop_depth, target_neck_thickness=target_neck_thickness); + module NeckFragment(from_fret, to_fret, to_origin=true, include_from_fret=false) { + x0 = fret_scale_length(to_fret) - fret_width/2; + x1 = fret_scale_length(from_fret) + ((include_from_fret)?1:(-1)) * fret_width/2; + xn = fsl_mm + fret_width; + translate([0,to_origin ? -x0 : 0,0]) render() difference() { + neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing, scallop_depth=scallop_depth, target_neck_thickness=target_neck_thickness); + translate([-100, 0, -100]) cube([200, x0, 200]); + translate([-100, x1, -100]) cube([200, xn-x1, 200]); + for (m=[0,11]) mirror([m, 0, 0]) color([0.4, 0.5, 0.5]) translate([9, 0, -16+(CF_Square_Width*2)]) CFSquareCutout(x0, x1, taper_length=2); + translate([ 12,0,-14]) CFSquareCutout(x0, x1, taper_length=2); + translate([ 12-CF_Square_Width,0,-14]) CFSquareCutout(x0, x1-15, taper_length=2, taper_x2=false); + translate([-12,0,-14]) CFSquareCutout(x0, x1, taper_length=2); + translate([-12+CF_Square_Width,0,-14]) CFSquareCutout(x0+15, x1, taper_length=2, taper_x1=false); + translate([20,0,-6]) CFTubeCutout(x0, x1, taper_length=2); + } + } + difference(){ + NeckFragment(2, 3); + translate([-20,0,-1]) rotate([-90,180,180]) linear_extrude(3, center=true) text("PETG", size=3.5, halign="center", valign="center"); + translate([-20,0,-6]) rotate([-90,180,180]) linear_extrude(3, center=true) text("1", size=3.5, halign="center", valign="center"); + } // translate([0,0,30]) difference() { // neck(num_frets=num_frets, num_strings=num_strings, string_margin=string_margin, string_spacing=string_spacing, scallop_depth=scallop_depth, target_neck_thickness=target_neck_thickness); // for (m=[0,11]) mirror([m, 0, 0]) color([0.4, 0.5, 0.5]) translate([9, -40, -16]) CF_Span(hole=false); // } - for (m=[0,11]) mirror([m, 0, 0]) translate([29,10,-32]) rotate([0,-90,0]) NylonTuner(); + // for (m=[0,11]) mirror([m, 0, 0]) translate([29,10,-32]) rotate([0,-90,0]) NylonTuner(); // Debug markers to aid part slicing eyeballing for (i = [150:250:1000]) { %translate([50,i,0]) union() {text(str(i, "mm")); cube([50, 1, 1], center=true);}