Fix up some mathematical errors and tolerance errors

This commit is contained in:
Luke Hubmayer-Werner 2025-02-10 23:05:32 +10:30
parent 39718ebb24
commit 8e029e1668
2 changed files with 44 additions and 21 deletions

View File

@ -16,6 +16,12 @@ shumbucker_h = 20.3;
shumbucker_l = 23.1;
shumbucker_w1 = 66.4;
shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side
relay_coil_housing_w = 15.2;
relay_coil_housing_l = 18.8;
relay_coil_housing_h = 15.5;
module relay_coil_placeholder() translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2]) cube([relay_coil_housing_w, relay_coil_housing_l, relay_coil_housing_h]);
// Philippians 4:8
// Gideon (ShinKaiYaku07) , , , , , , ,
@ -1147,7 +1153,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
module HeadPiece() {
x0 = behind_fret(0);
end_radius = 24;
end_radius = 14;
x2 = x0 + 25;
x1 = x2 - end_radius;
z0 = $scallop_depth + $extra_thickness_above_center;
@ -1157,14 +1163,14 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
for (i = [0:$num_strings-1]) translate([string_x(i, x0),0,0]) {
ballend_v = [0,x0+15,2];
hull() {
translate([0,fret_scale_length(0),z1+$string_diameters_mm[i]/2]) sphere(d=min(2.6, $string_diameters_mm[i]*1.2 + 1));
translate([0,fret_scale_length(0),z1+$string_diameters_mm[i]/2]) sphere(d=min(4, $string_diameters_mm[i]*1.25 + 1));
translate(ballend_v) sphere(d=2.6);
}
hull() {
// String ball ends are roughly 3mm by 4mm cylinder(d=4, h=3)
// Bass string ball ends are roughly 3mm by 4mm cylinder(d=6, h=4.5)
translate(ballend_v) rotate([0, 90, 0]) cylinder(d=4.5, h=3.5, center=true);
translate([0,x2,-10]) rotate([0, 90, 0]) cylinder(d=6.5, h=5.0, center=true);
translate(ballend_v) rotate([0, 90, 0]) cylinder_outer(d=6.5, h=5.0, center=true);
translate([0,x2,-10]) rotate([0, 90, 0]) cylinder_outer(d=6.5, h=5.0, center=true);
}
}
}
@ -1189,11 +1195,11 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
TaperNeck(fret_side_marker_x_angle=-23, fret_side_marker_y_angle=5) MyBodySegment();
}
module TrussRods(taper_points=segment_cuts, extra=0) {
module TrussRods(taper_points=segment_cuts, extra=0, tolerance=0.6) {
y1 = 270;
y2 = y1 + 630;
translate([0, y2, -4]) rotate([0, 0, 180]) TrussRod(taper_points=[ for (pt=taper_points) y2-pt ], extra=extra);
translate([0, y0, -16]) TrussRodSingleAction(taper_points=[ for (pt=taper_points) pt-y0 ], extra=extra);
translate([0, y2, -4]) rotate([0, 0, 180]) TrussRod(taper_points=[ for (pt=taper_points) y2-pt ], extra=extra, tolerance=tolerance);
translate([0, y0, -16]) TrussRodSingleAction(taper_points=[ for (pt=taper_points) pt-y0 ], extra=extra, tolerance=tolerance);
}
dowel_positions = [
[-10, segment_cuts[4], 0],
@ -1218,7 +1224,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
arc = arc_points([[16, -13], [-16, -13], [0, -3]], 1);
belthole_r = 3;
belthole_fn = 72;
belthole_x0 = 130;
belthole_x0 = 135;
belthole_x1 = 260;
render() for (i = [0:len(arc)-2]) {
$fn = belthole_fn;
@ -1241,7 +1247,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
for (v = reinforcing_tube_positions) CFTubeCutout2(v, x0, x1);
}
module BottomLabel(depth=0.2) {
module BottomLabel(depth=0.8) {
y0 = segment_cuts[segment];
size = 2.7;
v_spacing = 0.3;
@ -1255,7 +1261,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
if (preview) {
// TrussRods();
// CFs();
pickup_y = fret_scale_length(36);
for (i=[0,1]) translate([string_x(i, pickup_y), pickup_y, -10]) relay_coil_placeholder();
color("#FF000080") MyBody();
strings_reference();
} else {
if (segment < 0) {
MyBody();
@ -1275,10 +1284,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
}
colour_scheme = COLOURSCHEME_ABS_BLUE;
// TwoBangerMk2(preview=true);
segment = 4;
color(colour_scheme[0]) TwoBangerMk2([0], segment);
color(colour_scheme[1]) TwoBangerMk2([1], segment);
color(colour_scheme[2]) TwoBangerMk2([2], segment);
color(colour_scheme[3]) TwoBangerMk2([3], segment);
color("red") TwoBangerMk2([4], segment);
TwoBangerMk2(preview=true);
// segment = 1;
// color(colour_scheme[0]) TwoBangerMk2([0], segment);
// color(colour_scheme[1]) TwoBangerMk2([1], segment);
// color(colour_scheme[2]) TwoBangerMk2([2], segment);
// color(colour_scheme[3]) TwoBangerMk2([3], segment);
// color("red") TwoBangerMk2([4], segment);

View File

@ -8,7 +8,8 @@ function neck_width(mm=0, fret=-9999) = lerp($neck_width_bridge, $neck_width_nut
function get_fret_width(fret) = $fret_widths[clamp(0, fret, len($fret_widths)-1)];
function get_fret_height(fret) = sin($fret_angle) * get_fret_width(fret)/2;
function get_max_fret_width() = max($fret_widths);
function get_max_fret_height() = sin($fret_angle) * get_max_fret_width()/2;
function get_max_fret_height() = ((1-cos($fret_angle))/(sin($fret_angle))) * get_max_fret_width()/2;
function behind_fret(fret) = fret_scale_length(fret) + get_fret_width(fret)/2;
function after_fret(fret) = fret_scale_length(fret) - get_fret_width(fret)/2;
@ -16,6 +17,21 @@ function string_spacing(y) = lerp($string_spacing_bridge, $string_spacing_nut, y
function string_x(i, y) = ($num_strings-i-1)*string_spacing(y) - neck_width(y)/2 + $string_margin;
module strings_reference(string_excess=80) {
z_nut = $extra_thickness_above_center + $scallop_depth + get_max_fret_height();
y_nut = fret_scale_length(0);
z_bridge = z_nut + 4;
y_bridge = -string_excess;
for (i = [0:$num_strings-1]) {
hull() {
d = $string_diameters_mm[i];
translate([string_x(i, y_bridge), y_bridge, z_bridge + d/2]) sphere(d=d, $fn=cyl_ld_fn);
translate([string_x(i, y_nut), y_nut, z_nut + d/2]) sphere(d=d, $fn=cyl_ld_fn);
}
}
}
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;
neck_length = fret_scale_length(0)+fw2;
@ -155,11 +171,9 @@ module TaperNeck(
){
neck_length = fret_scale_length(0) + get_fret_width(0)/2;
$max_fret_width = max($fret_widths);
$max_fret_height = sin($fret_angle) * $max_fret_width/2;
z0 = $extra_thickness_above_center; // 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
z2 = z1 + get_max_fret_height(); // Nothing above this => thickest top of neck
module neck_stock() {
angle_excess = asin(z2/$target_neck_thickness);
@ -253,7 +267,7 @@ module TaperNeck(
fontsize_from_max_height = max_height;
// echo(str(max_width, " ", estimated_width_chars, " ", fontsize_from_max_height, " ", fontsize_from_max_width));
desired_fontsize = min(fontsize_from_max_height, fontsize_from_max_width);
translate([0, x_mid, -0.5])
translate([0, x_mid, z0-0.5])
linear_extrude(30)
text(text = num_text[1], font = JP_Sans_Font, halign = "center", valign = "center", size = clamp(2, desired_fontsize, 10));
}