More parameters exposed for 2banger2

This commit is contained in:
Luke Hubmayer-Werner 2025-02-06 21:43:59 +10:30
parent 5c6fe42888
commit f8352515ab
2 changed files with 28 additions and 12 deletions

View File

@ -1084,7 +1084,7 @@ COLOURSCHEME_PETGHF_CLOWNFISH = [BAMBU_PETGHF_ORANGE, BAMBU_PETGHF_WHITE, BAMBU_
COLOURSCHEME_ABS_BLUE = [BAMBU_ABS_NAVY_BLUE, BAMBU_ABS_AZURE, BAMBU_ABS_AZURE, BAMBU_ABS_AZURE]; COLOURSCHEME_ABS_BLUE = [BAMBU_ABS_NAVY_BLUE, BAMBU_ABS_AZURE, BAMBU_ABS_AZURE, BAMBU_ABS_AZURE];
COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "", ""]; COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "", ""];
colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH; // colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH;
// colour_scheme = COLOURSCHEME_ABS_BLUE; // colour_scheme = COLOURSCHEME_ABS_BLUE;
// color(colour_scheme[0]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[0]); // color(colour_scheme[0]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[0]);
// color(colour_scheme[1]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[1]); // color(colour_scheme[1]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[1]);
@ -1102,5 +1102,14 @@ colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH;
// // TrussRod(taper_points=[-extra, l], extra=true, tolerance = 0.24); // // TrussRod(taper_points=[-extra, l], extra=true, tolerance = 0.24);
// TrussRodSingleAction(taper_points=[-extra, l], extra=true, tolerance = 0.24); // TrussRodSingleAction(taper_points=[-extra, l], extra=true, tolerance = 0.24);
// } // }
module TwoBangerMk2(include_colours=[0,1]) {
TaperNeck(string_spacing_bridge=20, string_spacing_nut=20, num_strings=2, extra_height=6, fret_widths=concat([3.6], [ for (i=[0:50]) 2.4 ]), num_frets=34, fret_side_marker_x_angle=-23, fret_side_marker_y_angle=5, include_colours=include_colours);
}
Guitar_Scale_Length_mm = PBass_Scale_mm; Guitar_Scale_Length_mm = PBass_Scale_mm;
TaperNeck(string_spacing_bridge=20, string_spacing_nut=20, num_strings=2, fret_widths=concat([3.6], [ for (i=[0:50]) 2.4 ]), num_frets=34, include_colours=[0,1]);
colour_scheme = COLOURSCHEME_ABS_BLUE;
color(colour_scheme[0]) TwoBangerMk2([0]);
color(colour_scheme[1]) TwoBangerMk2([1]);
color(colour_scheme[2]) TwoBangerMk2([2]);
color(colour_scheme[3]) TwoBangerMk2([3]);

View File

@ -137,11 +137,14 @@ module TaperNeck(
target_neck_thickness = 15, target_neck_thickness = 15,
target_neck_thickness_additional_points = [], target_neck_thickness_additional_points = [],
scallop_depth = 2, scallop_depth = 2,
extra_height = 0,
num_frets = 24, num_frets = 24,
fret_widths = [], fret_widths = [],
fret_angle = 60, // 90 is semicircle fret_angle = 60, // 90 is semicircle
max_scallop_angle = 60, // match this to fret_angle for a nice continuous look max_scallop_angle = 60, // match this to fret_angle for a nice continuous look
filler = false, filler = false,
fret_side_marker_x_angle = -37,
fret_side_marker_y_angle = -4,
include_colours = [0, 1, 2, 3], // 0: Base neck/fretboard 1: Frets 2: Inlays 3: Side markers include_colours = [0, 1, 2, 3], // 0: Base neck/fretboard 1: Frets 2: Inlays 3: Side markers
){ ){
neck_length = fret_scale_length(0) + fret_widths[0]/2; neck_length = fret_scale_length(0) + fret_widths[0]/2;
@ -153,9 +156,12 @@ module TaperNeck(
function get_fret_width(fret) = fret_widths[clamp(0, fret, num_frets)]; function get_fret_width(fret) = fret_widths[clamp(0, fret, num_frets)];
max_fret_width = max(fret_widths); max_fret_width = max(fret_widths);
max_fret_height = sin(fret_angle) * max_fret_width/2; max_fret_height = sin(fret_angle) * max_fret_width/2;
z0 = extra_height; // Deepest scallops hit here, => thinnest top of neck
z1 = z0 + scallop_depth; // Frets protrude from here
z2 = z1 + max_fret_height; // Nothing above this => thickest top of neck
module neck_stock() { module neck_stock() {
angle_excess = asin((scallop_depth + max_fret_height)/target_neck_thickness); angle_excess = asin(z2/target_neck_thickness);
a0 = 90-angle_excess; a0 = 90-angle_excess;
a1 = 270+angle_excess; a1 = 270+angle_excess;
rotate([-90, 0, 0]) rotate([-90, 0, 0])
@ -188,7 +194,7 @@ module TaperNeck(
xmid = lerp(x0, x1, 0.5); xmid = lerp(x0, x1, 0.5);
xdelta = x0-x1; xdelta = x0-x1;
maxdepth_angle = 90+arc_points_angle([[x0, scallop_depth], [x1, scallop_depth], [xmid, 0]]); maxdepth_angle = 90+arc_points_angle([[x0, z1], [x1, z1], [xmid, z0]]);
// echo(str(maxdepth_angle)); // echo(str(maxdepth_angle));
a = min(max_scallop_angle, maxdepth_angle); a = min(max_scallop_angle, maxdepth_angle);
fn = 50; fn = 50;
@ -196,7 +202,7 @@ module TaperNeck(
ca = cos(a); ca = cos(a);
sa = sin(a); sa = sin(a);
r = xdelta / (2*sa); r = xdelta / (2*sa);
arc = [ for (i = [-fn:fn]) [xmid+xdelta*i/fn2, scallop_depth-r*(sqrt(1 - ((sa*i/fn)^2))-ca)] ]; arc = [ for (i = [-fn:fn]) [xmid+xdelta*i/fn2, z1-r*(sqrt(1 - ((sa*i/fn)^2))-ca)] ];
// echo(arc); // echo(arc);
rotate([90, 0, 90]) linear_extrude(neck_width_bridge, center=true) polygon(arc); rotate([90, 0, 90]) linear_extrude(neck_width_bridge, center=true) polygon(arc);
} }
@ -218,7 +224,7 @@ module TaperNeck(
} }
module fret_bumps() { module fret_bumps() {
for (fret = [0:num_frets]) for (fret = [0:num_frets])
translate([0, fret_scale_length(fret), scallop_depth]) translate([0, fret_scale_length(fret), z1])
fret_bump(get_fret_width(fret)); fret_bump(get_fret_width(fret));
} }
module intersect_fret_layers() { module intersect_fret_layers() {
@ -254,15 +260,16 @@ module TaperNeck(
for (num_text = fret_inlays) { for (num_text = fret_inlays) {
fret = num_text[0]; fret = num_text[0];
if (fret <= num_frets) { if (fret <= num_frets) {
x0 = fret_scale_length(fret-1); x0 = fret_scale_length(fret-1)-get_fret_width(fret-1)/2;
x1 = fret_scale_length(fret); x1 = fret_scale_length(fret)+get_fret_width(fret)/2;
diff = x0 - x1; diff = x0 - x1;
mid = lerp(x0, x1, 0.67); mid = lerp(x0, x1, 0.67);
rotate([0, -94, 0]) fontsize = min(5, diff*0.6);
rotate([0, fret_side_marker_y_angle-90, 0])
translate([0, mid, neck_width_mm(mid)/2-3]) translate([0, mid, neck_width_mm(mid)/2-3])
linear_extrude(50) linear_extrude(50)
rotate(-37) rotate(fret_side_marker_x_angle)
text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = 5); text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = fontsize);
} }
} }
} }
@ -273,7 +280,7 @@ module TaperNeck(
scallops(); scallops();
scallop(num_frets+1); scallop(num_frets+1);
// Chop off anything above the frets // Chop off anything above the frets
translate([-neck_width_bridge, 0, scallop_depth]) cube([neck_width_bridge*2, Guitar_Scale_Length_mm*3, target_neck_thickness*3]); translate([-neck_width_bridge, 0, z1]) cube([neck_width_bridge*2, Guitar_Scale_Length_mm*3, target_neck_thickness*3]);
// Reduce rest of the body to 0 // Reduce rest of the body to 0
translate([-neck_width_bridge, 0, 0]) cube([neck_width_bridge*2, (fret_scale_length(num_frets)+fret_scale_length(num_frets+1))/2, target_neck_thickness*3]); translate([-neck_width_bridge, 0, 0]) cube([neck_width_bridge*2, (fret_scale_length(num_frets)+fret_scale_length(num_frets+1))/2, target_neck_thickness*3]);
} }