Nylon Neck Gamma

This commit is contained in:
Luke Hubmayer-Werner 2025-01-11 00:48:14 +10:30
parent d1661731ae
commit b0efa30421
3 changed files with 59 additions and 32 deletions

View File

@ -16,6 +16,9 @@ include <CFTubes/PLA.scad>
// I swapped and because 12th fret should be the biggest marker, and having only 15 as a 2char marker would be too disorienting // I swapped and because 12th fret should be the biggest marker, and having only 15 as a 2char marker would be too disorienting
// going with for 21 // going with for 21
fret_inlays = [[3, "真"], [5, "尊"], [7, "正"], [9, "清"], [12, "評判"], [15, "愛"], [17, "徳"], [19, "賛"], [21, "良"], [24, "主イエス"]]; fret_inlays = [[3, "真"], [5, "尊"], [7, "正"], [9, "清"], [12, "評判"], [15, "愛"], [17, "徳"], [19, "賛"], [21, "良"], [24, "主イエス"]];
// Galatians 5:22-23
// ShinKaiYaku65 22 23
//
module neck(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, target_neck_thickness_additional_points=[], scallop_depth=3, num_frets=24, fret_width=2.4, filler=false, inlays_only=false, side_markers_only=false, fret_layers_only=false, remove_fret_layers=false, engrave_markers=true) { module neck(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, target_neck_thickness_additional_points=[], scallop_depth=3, num_frets=24, fret_width=2.4, filler=false, inlays_only=false, side_markers_only=false, fret_layers_only=false, remove_fret_layers=false, engrave_markers=true) {
fw2 = fret_width/2; fw2 = fret_width/2;
@ -80,7 +83,7 @@ module neck(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thi
diff = x0 - x1; diff = x0 - x1;
translate([0, lerp(x0, x1, 0.5), -0.5]) translate([0, lerp(x0, x1, 0.5), -0.5])
linear_extrude(30) linear_extrude(30)
text(text = num_text[1], font = JP_Serif_Font, halign = "center", valign = "center", size = clamp(2, diff-fret_width*2-2, 10)); text(text = num_text[1], font = JP_Sans_Font, halign = "center", valign = "center", size = clamp(2, diff-fret_width*2-2, 10));
} }
} }
} }
@ -96,7 +99,7 @@ module neck(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thi
translate([0, mid, neck_width/2-3]) translate([0, mid, neck_width/2-3])
linear_extrude(50) linear_extrude(50)
rotate(-37) rotate(-37)
text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = 4.5); text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = 5);
} }
} }
} }
@ -379,16 +382,19 @@ module bridge(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_t
} }
} }
module Nylon6String(render_first_colour=true, render_second_colour=true, from_fret=0, to_fret=1) { module Nylon6String(render_colour_0=true, render_colour_1=true, render_colour_2=true, render_colour_3=true, from_fret=0, to_fret=1) {
colour_1 = "blue"; colour_0 = "blue";
colour_1 = "white"; // fret layers
colour_2 = "green"; // side markers
colour_3 = "yellow"; // inlays
id_line_0 = "PLA"; id_line_0 = "PLA";
id_line_1 = "1β"; id_line_1 = "1γ";
fsl_mm = fret_scale_length(0); fsl_mm = fret_scale_length(0);
string_diameters_thous = [28, 32, 40, 30, 36, 42]; string_diameters_thous = [28, 32, 40, 30, 36, 42];
string_diameters_mm = string_diameters_thous * 0.0254; string_diameters_mm = string_diameters_thous * 0.0254;
num_frets = 20; num_frets = 21;
num_strings = 6; num_strings = 6;
// 56mm wide neck // 56mm wide neck
string_spacing = 10; // 50mm E to e string_spacing = 10; // 50mm E to e
@ -396,10 +402,14 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
neck_width = string_spacing*(num_strings-1) + string_margin*2; neck_width = string_spacing*(num_strings-1) + string_margin*2;
scallop_depth = 2.5; scallop_depth = 2.5;
fret_width=2.4; fret_width=2.4;
target_neck_thickness = 22; target_neck_thickness = 16; //22;
echo(fret_scale_length(8)); echo(fret_scale_length(8));
echo(fret_scale_length(9)); echo(fret_scale_length(9));
target_neck_thickness_additional_points = []; rx0 = -40; // Reinforcing rods start
rx1 = rx0+280;
// target_neck_thickness_additional_points = [];
target_neck_thickness_additional_points = [[rx0+CF_Tube_Len+20, 22], [0, 22]];
// target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [380, 25], [130, 42], [0, 42]]; // target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [380, 25], [130, 42], [0, 42]];
// target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [380, 25], [0, 25]]; // target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [380, 25], [0, 25]];
// target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [130, 42], [0, 42]]; // target_neck_thickness_additional_points = [[400.025-fret_width/2, 22], [130, 42], [0, 42]];
@ -416,32 +426,36 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
render() 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, target_neck_thickness_additional_points=target_neck_thickness_additional_points, inlays_only=inlays_only, side_markers_only=side_markers_only, fret_layers_only=fret_layers_only, engrave_markers=engrave_markers, remove_fret_layers=remove_fret_layers); render() 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, target_neck_thickness_additional_points=target_neck_thickness_additional_points, inlays_only=inlays_only, side_markers_only=side_markers_only, fret_layers_only=fret_layers_only, engrave_markers=engrave_markers, remove_fret_layers=remove_fret_layers);
} }
module MultiColourNeck() { module MultiColourNeck() {
if (render_first_colour) color(colour_1) MyNeck(engrave_markers=true, remove_fret_layers=true); if (render_colour_0) color(colour_0) MyNeck(engrave_markers=true, remove_fret_layers=true);
if (render_second_colour) color("white") MyNeck(fret_layers_only=true); if (render_colour_1) color(colour_1) MyNeck(fret_layers_only=true);
if (render_second_colour) color("green") MyNeck(side_markers_only=true); if (render_colour_2) color(colour_2) MyNeck(side_markers_only=true);
if (render_second_colour) color("yellow") MyNeck(inlays_only=true); if (render_colour_3) color(colour_3) MyNeck(inlays_only=true);
} }
reinforcing_tube_positions = flatten([ reinforcing_tube_positions = flatten([
[ [
for (i=[-1,1]) each [ for (i=[-1,1]) each [
// Headside reinforcement // Headside reinforcement
[i*21.5, -40+280, -4], [i*21.5, rx1, -4],
[i*17, -40+280, -12],
// Bridgeside reinforcement // Bridgeside reinforcement
[i*16, -40, -8], // [i*21.5, rx0, -4],
[i*17.25, rx0, -10],
// [i*17, rx0, -12],
[i*3.95, rx0, -16.5],
] ]
], ],
[ [
// Headside reinforcement
[0, rx1, -4],
[0, rx1, -11],
// Bridgeside reinforcement // Bridgeside reinforcement
[0, -40, -4], // [0, rx0, -11],
[0, -40, -15],
]]); ]]);
echo(reinforcing_tube_positions); echo(reinforcing_tube_positions);
// Through span construction // Through span construction
span_coords = CF_Span_Coords(ply=2); span_coords = CF_Span_Coords(ply=2);
reinforcing_square_positions = [ reinforcing_square_positions = [
for (i=[-1,1]) each [ for (v = span_coords) [i*10, -40, -10] + v ] for (i=[-1,1]) each [ for (v = span_coords) [i*10, rx0, -10] + v ]
]; ];
echo(reinforcing_square_positions); echo(reinforcing_square_positions);
@ -487,9 +501,9 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
module RealPiece(from_fret, to_fret, include_from_fret=false) { module RealPiece(from_fret, to_fret, include_from_fret=false) {
midpoint = (fret_scale_length(from_fret) - fret_scale_length(to_fret) + (include_from_fret ? fret_width : 0))/2; midpoint = (fret_scale_length(from_fret) - fret_scale_length(to_fret) + (include_from_fret ? fret_width : 0))/2;
module IDText(thickness = 0.2, inset = 0, extra_line=str("F", to_fret)) { module IDText(thickness = 0.2, inset = 0, extra_line=str("F", to_fret)) {
translate([0,0,-9]) rotate([-90,180,180]) translate([0,0,-thickness-inset]) linear_extrude(thickness) { translate([0,0,-8]) rotate([-90,180,180]) translate([0,0,-thickness-inset]) linear_extrude(thickness) {
text(str(id_line_0, id_line_1), size=2.5, halign="center", valign="center", $fn=100); text(str(id_line_0, id_line_1), size=2.25, halign="center", valign="center", $fn=100);
translate([0,-3]) text(extra_line, size=2.5, halign="center", valign="center", $fn=100); translate([0,-3]) text(extra_line, size=2.25, halign="center", valign="center", $fn=100);
} }
} }
module BackIDText(thickness = 0.2, inset = 0) { module BackIDText(thickness = 0.2, inset = 0) {
@ -499,16 +513,16 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
render() difference(){ render() difference(){
NeckFragment(from_fret, to_fret, include_from_fret=include_from_fret); NeckFragment(from_fret, to_fret, include_from_fret=include_from_fret);
// Subtract from frets // Subtract from frets
if (render_second_colour) color("red") { color("red") {
IDText(); IDText();
if (include_from_fret) BackIDText(); if (include_from_fret) BackIDText();
} }
if (render_first_colour && !include_from_fret) color("red") BackIDText(); color("red") BackIDText();
} }
// color("red") IDText(inset=0.0001); // // color("red") IDText(inset=0.0001);
if (render_first_colour) color(colour_1) IDText(); // if (render_colour_0) color(colour_1) IDText();
if (render_first_colour && include_from_fret) color(colour_1) BackIDText(); // if (render_colour_0 && include_from_fret) color(colour_1) BackIDText();
if (render_second_colour && !include_from_fret) color("red") BackIDText(); // if (render_colour_1 && !include_from_fret) color("red") BackIDText();
} }
RealPiece(from_fret, to_fret, include_from_fret = (from_fret==0)); RealPiece(from_fret, to_fret, include_from_fret = (from_fret==0));
// RealPiece(0, 8, include_from_fret=true); // RealPiece(0, 8, include_from_fret=true);
@ -535,7 +549,7 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
// Debug markers to aid part slicing eyeballing // Debug markers to aid part slicing eyeballing
// %for (i = [150:250:1000]) { // %for (i = [150:250:1000]) {
%for (i = [0:250:1000]) { %for (i = [0:250:1000]) {
translate([50,i,0]) union() {linear_extrude(1) text(str(i, "mm")); cube([50, 1, 1], center=true);} translate([35,i,0]) union() {linear_extrude(1) text(str(i, "mm")); cube([35, 1, 1], center=true);}
} }
} }
@ -553,8 +567,8 @@ module Nylon6String(render_first_colour=true, render_second_colour=true, from_fr
// bridge(); // bridge();
Guitar_Scale_Length_mm = Classical_Short_Scale_mm; Guitar_Scale_Length_mm = Classical_Short_Scale_mm;
// Nylon6String(render_second_colour=false); // Nylon6String(render_colour_1=false);
// Nylon6String(render_first_colour=false); // Nylon6String(render_colour_0=false);
// difference() { // difference() {
// translate([-15, -60, 0]) cube([50, 120, 8]); // translate([-15, -60, 0]) cube([50, 120, 8]);

View File

@ -1,4 +1,6 @@
include <CFTubes.scad> include <CFTubes.scad>
Guitar_Scale_Length_mm = Classical_Short_Scale_mm; Guitar_Scale_Length_mm = Classical_Short_Scale_mm;
Nylon6String(from_fret=F0, to_fret=F1, render_second_colour=false); Nylon6String(from_fret=F0, to_fret=F1, render_colour_0=true, render_colour_1=false, render_colour_2=false, render_colour_3=false);
Nylon6String(from_fret=F0, to_fret=F1, render_first_colour=false); Nylon6String(from_fret=F0, to_fret=F1, render_colour_0=false, render_colour_1=true, render_colour_2=false, render_colour_3=false);
Nylon6String(from_fret=F0, to_fret=F1, render_colour_0=false, render_colour_1=false, render_colour_2=true, render_colour_3=false);
Nylon6String(from_fret=F0, to_fret=F1, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=true);

11
CFTubesNylonPreview.scad Normal file
View File

@ -0,0 +1,11 @@
include <CFTubes.scad>
Guitar_Scale_Length_mm = Classical_Short_Scale_mm;
Nylon6String(from_fret=0, to_fret=8, render_colour_0=true, render_colour_1=false, render_colour_2=false, render_colour_3=false);
Nylon6String(from_fret=0, to_fret=8, render_colour_0=false, render_colour_1=true, render_colour_2=false, render_colour_3=false);
Nylon6String(from_fret=0, to_fret=8, render_colour_0=false, render_colour_1=false, render_colour_2=true, render_colour_3=false);
Nylon6String(from_fret=0, to_fret=8, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=true);
translate([0, 0, -50]) Nylon6String(from_fret=8, to_fret=22, render_colour_0=true, render_colour_1=false, render_colour_2=false, render_colour_3=false);
translate([0, 0, -50]) Nylon6String(from_fret=8, to_fret=22, render_colour_0=false, render_colour_1=true, render_colour_2=false, render_colour_3=false);
translate([0, 0, -50]) Nylon6String(from_fret=8, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=true, render_colour_3=false);
translate([0, 0, -50]) Nylon6String(from_fret=8, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=true);