First tuner block

This commit is contained in:
Luke Hubmayer-Werner 2025-01-14 00:29:10 +10:30
parent 00d09e2b33
commit 175112170d
2 changed files with 37 additions and 10 deletions

View File

@ -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]);

View File

@ -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() {