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_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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue