Fix up some mathematical errors and tolerance errors
This commit is contained in:
parent
39718ebb24
commit
8e029e1668
41
CFTubes.scad
41
CFTubes.scad
|
@ -16,6 +16,12 @@ shumbucker_h = 20.3;
|
||||||
shumbucker_l = 23.1;
|
shumbucker_l = 23.1;
|
||||||
shumbucker_w1 = 66.4;
|
shumbucker_w1 = 66.4;
|
||||||
shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side
|
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
|
// Philippians 4:8
|
||||||
// Gideon (ShinKaiYaku07) 真実な, 尊ぶべき, 正しい, 清い, 愛すべき, 評判の良い, 徳とされる, 称賛に値する
|
// Gideon (ShinKaiYaku07) 真実な, 尊ぶべき, 正しい, 清い, 愛すべき, 評判の良い, 徳とされる, 称賛に値する
|
||||||
|
@ -1147,7 +1153,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
|
|
||||||
module HeadPiece() {
|
module HeadPiece() {
|
||||||
x0 = behind_fret(0);
|
x0 = behind_fret(0);
|
||||||
end_radius = 24;
|
end_radius = 14;
|
||||||
x2 = x0 + 25;
|
x2 = x0 + 25;
|
||||||
x1 = x2 - end_radius;
|
x1 = x2 - end_radius;
|
||||||
z0 = $scallop_depth + $extra_thickness_above_center;
|
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]) {
|
for (i = [0:$num_strings-1]) translate([string_x(i, x0),0,0]) {
|
||||||
ballend_v = [0,x0+15,2];
|
ballend_v = [0,x0+15,2];
|
||||||
hull() {
|
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);
|
translate(ballend_v) sphere(d=2.6);
|
||||||
}
|
}
|
||||||
hull() {
|
hull() {
|
||||||
// String ball ends are roughly 3mm by 4mm cylinder(d=4, h=3)
|
// 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)
|
// 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(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(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();
|
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;
|
y1 = 270;
|
||||||
y2 = y1 + 630;
|
y2 = y1 + 630;
|
||||||
translate([0, y2, -4]) rotate([0, 0, 180]) TrussRod(taper_points=[ for (pt=taper_points) y2-pt ], 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);
|
translate([0, y0, -16]) TrussRodSingleAction(taper_points=[ for (pt=taper_points) pt-y0 ], extra=extra, tolerance=tolerance);
|
||||||
}
|
}
|
||||||
dowel_positions = [
|
dowel_positions = [
|
||||||
[-10, segment_cuts[4], 0],
|
[-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);
|
arc = arc_points([[16, -13], [-16, -13], [0, -3]], 1);
|
||||||
belthole_r = 3;
|
belthole_r = 3;
|
||||||
belthole_fn = 72;
|
belthole_fn = 72;
|
||||||
belthole_x0 = 130;
|
belthole_x0 = 135;
|
||||||
belthole_x1 = 260;
|
belthole_x1 = 260;
|
||||||
render() for (i = [0:len(arc)-2]) {
|
render() for (i = [0:len(arc)-2]) {
|
||||||
$fn = belthole_fn;
|
$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);
|
for (v = reinforcing_tube_positions) CFTubeCutout2(v, x0, x1);
|
||||||
}
|
}
|
||||||
|
|
||||||
module BottomLabel(depth=0.2) {
|
module BottomLabel(depth=0.8) {
|
||||||
y0 = segment_cuts[segment];
|
y0 = segment_cuts[segment];
|
||||||
size = 2.7;
|
size = 2.7;
|
||||||
v_spacing = 0.3;
|
v_spacing = 0.3;
|
||||||
|
@ -1255,7 +1261,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
if (preview) {
|
if (preview) {
|
||||||
// TrussRods();
|
// TrussRods();
|
||||||
// CFs();
|
// 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();
|
color("#FF000080") MyBody();
|
||||||
|
strings_reference();
|
||||||
} else {
|
} else {
|
||||||
if (segment < 0) {
|
if (segment < 0) {
|
||||||
MyBody();
|
MyBody();
|
||||||
|
@ -1275,10 +1284,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
colour_scheme = COLOURSCHEME_ABS_BLUE;
|
colour_scheme = COLOURSCHEME_ABS_BLUE;
|
||||||
// TwoBangerMk2(preview=true);
|
TwoBangerMk2(preview=true);
|
||||||
segment = 4;
|
// segment = 1;
|
||||||
color(colour_scheme[0]) TwoBangerMk2([0], segment);
|
// color(colour_scheme[0]) TwoBangerMk2([0], segment);
|
||||||
color(colour_scheme[1]) TwoBangerMk2([1], segment);
|
// color(colour_scheme[1]) TwoBangerMk2([1], segment);
|
||||||
color(colour_scheme[2]) TwoBangerMk2([2], segment);
|
// color(colour_scheme[2]) TwoBangerMk2([2], segment);
|
||||||
color(colour_scheme[3]) TwoBangerMk2([3], segment);
|
// color(colour_scheme[3]) TwoBangerMk2([3], segment);
|
||||||
color("red") TwoBangerMk2([4], segment);
|
// color("red") TwoBangerMk2([4], segment);
|
||||||
|
|
|
@ -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_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_fret_height(fret) = sin($fret_angle) * get_fret_width(fret)/2;
|
||||||
function get_max_fret_width() = max($fret_widths);
|
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 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;
|
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;
|
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) {
|
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;
|
||||||
neck_length = fret_scale_length(0)+fw2;
|
neck_length = fret_scale_length(0)+fw2;
|
||||||
|
@ -155,11 +171,9 @@ module TaperNeck(
|
||||||
){
|
){
|
||||||
neck_length = fret_scale_length(0) + get_fret_width(0)/2;
|
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
|
z0 = $extra_thickness_above_center; // Deepest scallops hit here, => thinnest top of neck
|
||||||
z1 = z0 + $scallop_depth; // Frets protrude from here
|
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() {
|
module neck_stock() {
|
||||||
angle_excess = asin(z2/$target_neck_thickness);
|
angle_excess = asin(z2/$target_neck_thickness);
|
||||||
|
@ -253,7 +267,7 @@ module TaperNeck(
|
||||||
fontsize_from_max_height = max_height;
|
fontsize_from_max_height = max_height;
|
||||||
// echo(str(max_width, " ", estimated_width_chars, " ", fontsize_from_max_height, " ", fontsize_from_max_width));
|
// 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);
|
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)
|
linear_extrude(30)
|
||||||
text(text = num_text[1], font = JP_Sans_Font, halign = "center", valign = "center", size = clamp(2, desired_fontsize, 10));
|
text(text = num_text[1], font = JP_Sans_Font, halign = "center", valign = "center", size = clamp(2, desired_fontsize, 10));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue