diff --git a/CFTubes.scad b/CFTubes.scad index c10a6b8..b914252 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -403,6 +403,7 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= string_spacing = 10; // 50mm E to e string_margin = 3; // +6 neck_width = string_spacing*(num_strings-1) + string_margin*2; + body_width = 96; scallop_depth = 2.5; fret_width=2.4; target_neck_thickness = 16; //22; @@ -561,6 +562,47 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= // StringHoles(); } + module LoopOrTunerBlock(tuner_block) { + y0 = 116; + y1 = fret_scale_length(22); + z0 = -43; + z_drop = 6; + loop_thick = 8; + loop_slot_thick = 6; + z1 = z0 + z_drop; + if (tuner_block) { + translate([-body_width/2, 0, z0]) cube([body_width, y0, -z0]); + } else { + render() difference() { + hull() { + translate([-neck_width/2, y1-hull_epsilon, z1]) cube([neck_width, hull_epsilon, -z1]); + translate([-body_width/2, y0, z0]) cube([body_width, hull_epsilon, -z0]); + } + // Belt loop slot + hull() { + translate([0, y1-loop_slot_thick, z1+loop_thick]) rotate([0,90,0]) cylinder(d=loop_slot_thick, h=body_width, center=true, $fn=cyl_hd_fn); + translate([0, y0+loop_slot_thick, z0+loop_thick]) rotate([0,90,0]) cylinder(d=loop_slot_thick, h=body_width, center=true, $fn=cyl_hd_fn); + } + // Angled belt loop slot + hull() { + extend_factor = 0.8; + translate([body_width/2, y1-loop_slot_thick + (y1-y0-loop_slot_thick*2)*extend_factor, z1+loop_thick + (z1-z0)*extend_factor]) rotate([0,90,0]) cylinder(d=loop_slot_thick, h=hull_epsilon, $fn=cyl_hd_fn); + translate([0, y0+loop_slot_thick, z0+loop_thick]) rotate([0,90,0]) cylinder(d=loop_slot_thick, h=body_width, center=true, $fn=cyl_hd_fn); + } + // Version stamp + translate([-10,y0+0.5,-30]) 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([-10,y1-0.5,-30]) 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); + } + } + } + if (reference) { union() { c_cf = [0.4, 0.5, 0.5]; @@ -569,7 +611,7 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= for (v = reinforcing_tube_positions) color(c_cf) translate(v) CFTube(); for (v = reinforcing_square_positions) color(c_cf) translate(v) CFSquare(); // Approximate tuner placement - for (m=[0,1]) mirror([m, 0, 0]) translate([29,10,-32]) rotate([0,-90,0]) NylonTuner(); + for (m=[0,1]) mirror([m, 0, 0]) translate([29,3,-32]) rotate([0,-90,0]) NylonTuner(); // Render strings above for spacing reference string_excess = 80; @@ -583,6 +625,16 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= // String holding headpiece echo("Making a headpiece"); HeadPiece(); + } else if (from_fret == -2) { + echo("Making a filler belt loop"); + LoopOrTunerBlock(false); + } else if (from_fret == -3) { + echo("Making a tuner block"); + LoopOrTunerBlock(true); + } else if (from_fret == -4) { + echo("Making a bridge"); + } else if (from_fret == -5) { + echo("Making a tailpiece"); } // Debug markers to aid part slicing eyeballing // %for (i = [150:250:1000]) { @@ -605,8 +657,12 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= // bridge(); Guitar_Scale_Length_mm = Classical_Short_Scale_mm; +// Nylon6String(reference=true); +// translate([0, fret_scale_length(22), 0]) Nylon6String(from_fret=0, to_fret=22); // translate([0, Guitar_Scale_Length_mm, 0]) rotate([0,0,180]) Nylon6String(reference=true); -rotate([0,0,180]) Nylon6String(from_fret=-1); +// rotate([0,0,180]) Nylon6String(from_fret=-1); +Nylon6String(from_fret=-2); +%Nylon6String(from_fret=-3); // difference() { // translate([-15, -60, 0]) cube([50, 120, 8]); diff --git a/NylonTuner.scad b/NylonTuner.scad index 5fa2ae9..c884160 100644 --- a/NylonTuner.scad +++ b/NylonTuner.scad @@ -1,12 +1,12 @@ // Classical Guitar style headstock tuners, comes in a mirrored pair of 3 machine heads with a metal plate -module NylonTuner() { +module NylonTuner(ear_extra_diameter = 0, ear_extra_height = 0) { cyl_hd_fn = $preview ? 32 : 512; cyl_ld_fn = $preview ? 24 : 72; earshaft_diameter = 6.3; ear_total_height = 22.5; ear_height = 13+3; - ear_diameter = 22.1; + ear_diameter = 22.1 + ear_extra_diameter; peg_diameter = 6.0; // Closer to 5.7mm peg_length = 28; peg_spacing = 35.0; @@ -28,7 +28,7 @@ module NylonTuner() { } module ear() { rotate([0, 90, 0]) cylinder(h=ear_total_height, d=earshaft_diameter, $fn=cyl_ld_fn); - rotate([0, 90, 0]) translate([0,0,ear_total_height-ear_height]) cylinder(h=ear_height, d=ear_diameter, $fn=cyl_hd_fn); + rotate([0, 90, 0]) translate([0,0,ear_total_height-ear_height]) cylinder(h=ear_height+ear_extra_height, d=ear_diameter, $fn=cyl_hd_fn); } // Plate and clearance