More parameters exposed for 2banger2
This commit is contained in:
parent
5c6fe42888
commit
f8352515ab
13
CFTubes.scad
13
CFTubes.scad
|
@ -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_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;
|
||||
// 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]);
|
||||
|
@ -1102,5 +1102,14 @@ colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH;
|
|||
// // TrussRod(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;
|
||||
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]);
|
||||
|
|
|
@ -137,11 +137,14 @@ module TaperNeck(
|
|||
target_neck_thickness = 15,
|
||||
target_neck_thickness_additional_points = [],
|
||||
scallop_depth = 2,
|
||||
extra_height = 0,
|
||||
num_frets = 24,
|
||||
fret_widths = [],
|
||||
fret_angle = 60, // 90 is semicircle
|
||||
max_scallop_angle = 60, // match this to fret_angle for a nice continuous look
|
||||
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
|
||||
){
|
||||
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)];
|
||||
max_fret_width = max(fret_widths);
|
||||
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() {
|
||||
angle_excess = asin((scallop_depth + max_fret_height)/target_neck_thickness);
|
||||
angle_excess = asin(z2/target_neck_thickness);
|
||||
a0 = 90-angle_excess;
|
||||
a1 = 270+angle_excess;
|
||||
rotate([-90, 0, 0])
|
||||
|
@ -188,7 +194,7 @@ module TaperNeck(
|
|||
xmid = lerp(x0, x1, 0.5);
|
||||
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));
|
||||
a = min(max_scallop_angle, maxdepth_angle);
|
||||
fn = 50;
|
||||
|
@ -196,7 +202,7 @@ module TaperNeck(
|
|||
ca = cos(a);
|
||||
sa = sin(a);
|
||||
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);
|
||||
rotate([90, 0, 90]) linear_extrude(neck_width_bridge, center=true) polygon(arc);
|
||||
}
|
||||
|
@ -218,7 +224,7 @@ module TaperNeck(
|
|||
}
|
||||
module fret_bumps() {
|
||||
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));
|
||||
}
|
||||
module intersect_fret_layers() {
|
||||
|
@ -254,15 +260,16 @@ module TaperNeck(
|
|||
for (num_text = fret_inlays) {
|
||||
fret = num_text[0];
|
||||
if (fret <= num_frets) {
|
||||
x0 = fret_scale_length(fret-1);
|
||||
x1 = fret_scale_length(fret);
|
||||
x0 = fret_scale_length(fret-1)-get_fret_width(fret-1)/2;
|
||||
x1 = fret_scale_length(fret)+get_fret_width(fret)/2;
|
||||
diff = x0 - x1;
|
||||
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])
|
||||
linear_extrude(50)
|
||||
rotate(-37)
|
||||
text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = 5);
|
||||
rotate(fret_side_marker_x_angle)
|
||||
text(text = str(fret), font = JP_Serif_Font, halign = "right", valign = "center", size = fontsize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -273,7 +280,7 @@ module TaperNeck(
|
|||
scallops();
|
||||
scallop(num_frets+1);
|
||||
// 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
|
||||
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]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue