diff --git a/CFTubes.scad b/CFTubes.scad index b914252..cd7694e 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -562,6 +562,10 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= // StringHoles(); } + module TunerPlacement(cutout = false, ear_extra_diameter = 0, ear_extra_height = 0, plate_clearance = 0, shaft_clearance = 0, shaft_tolerance = 0) { + for (m=[0,1]) mirror([m, 0, 0]) translate([29,3,-32]) rotate([0,-90,0]) NylonTuner(cutout, ear_extra_diameter, ear_extra_height, plate_clearance, shaft_clearance, shaft_tolerance); + } + module LoopOrTunerBlock(tuner_block) { y0 = 116; y1 = fret_scale_length(22); @@ -570,8 +574,30 @@ module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2= loop_thick = 8; loop_slot_thick = 6; z1 = z0 + z_drop; + module TunerBlockCheekVolumes() { + vw = 50; + for (i=[-1,1]) translate([-vw/2 + i*58, 0, z0]) cube([vw, y0, -z0]); + } if (tuner_block) { - translate([-body_width/2, 0, z0]) cube([body_width, y0, -z0]); + render() difference() { + translate([-body_width/2, 0, z0]) cube([body_width, y0, -z0]); + // Tuner cutouts + TunerPlacement(true, 4, 10, 10, 10, 0.4); + tw = 16; + for (i=[-1,1]) translate([-tw/2 + i*15, 0, z0]) cube([tw, y0, -z0-20]); + // Cheek Volumes + TunerBlockCheekVolumes(); + // CF + for (v = reinforcing_tube_positions) CFTubeCutout2(v, y0, y1); + for (v = reinforcing_square_positions) CFSquareCutout2(v, y0, y1); + // Version stamp + translate([0,0.5,-5]) 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([0,y0-0.5,-5]) 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 { render() difference() { hull() { @@ -611,8 +637,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,3,-32]) rotate([0,-90,0]) NylonTuner(); - + TunerPlacement(); // Render strings above for spacing reference string_excess = 80; for (i = [0:num_strings-1]) { @@ -661,8 +686,8 @@ Guitar_Scale_Length_mm = Classical_Short_Scale_mm; // 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); -Nylon6String(from_fret=-2); -%Nylon6String(from_fret=-3); +// 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 c884160..8bb4948 100644 --- a/NylonTuner.scad +++ b/NylonTuner.scad @@ -1,6 +1,6 @@ // Classical Guitar style headstock tuners, comes in a mirrored pair of 3 machine heads with a metal plate -module NylonTuner(ear_extra_diameter = 0, ear_extra_height = 0) { +module NylonTuner(cutout = false, ear_extra_diameter = 0, ear_extra_height = 0, plate_clearance = 0, shaft_clearance = 0, shaft_tolerance = 0) { cyl_hd_fn = $preview ? 32 : 512; cyl_ld_fn = $preview ? 24 : 72; earshaft_diameter = 6.3; @@ -14,16 +14,18 @@ module NylonTuner(ear_extra_diameter = 0, ear_extra_height = 0) { plate_width = 16.6 + 3.0; plate_length = 112; plate_thickness = 1.1; // Not really used for our purposes - outer_thickness = 10; + outer_thickness = 10 + plate_clearance; // screwhole_diameter = 3; screwtap_diameter = 1.7; screw_length = 7.1 - plate_thickness; module peg() { render() difference() { - cylinder(h=peg_length, d=peg_diameter, $fn=cyl_hd_fn); - translate([0, 0, 14.1]) rotate([90, 0, 0]) cylinder(h=peg_diameter, d=peg_string_diameter, $fn=cyl_ld_fn, center=true); - translate([0, 0, 22.7]) rotate([90, 0, 0]) cylinder(h=peg_diameter, d=peg_string_diameter, $fn=cyl_ld_fn, center=true); + cylinder(h=peg_length+shaft_clearance, d=peg_diameter+shaft_tolerance, $fn=cyl_hd_fn); + if (!cutout) { + translate([0, 0, 14.1]) rotate([90, 0, 0]) cylinder(h=peg_diameter, d=peg_string_diameter, $fn=cyl_ld_fn, center=true); + translate([0, 0, 22.7]) rotate([90, 0, 0]) cylinder(h=peg_diameter, d=peg_string_diameter, $fn=cyl_ld_fn, center=true); + } } } module ear() {