First 2banger pickup segment test
This commit is contained in:
parent
4a6efa9384
commit
08aa45ea54
49
CFTubes.scad
49
CFTubes.scad
|
@ -19,18 +19,25 @@ shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side
|
||||||
relay_coil_housing_w = 15.2;
|
relay_coil_housing_w = 15.2;
|
||||||
relay_coil_housing_l = 18.8;
|
relay_coil_housing_l = 18.8;
|
||||||
relay_coil_housing_h = 15.5;
|
relay_coil_housing_h = 15.5;
|
||||||
|
// relay_coil_leg_cavity_h = 5;
|
||||||
|
relay_coil_leg_cavity_l = 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]);
|
module relay_coil_placeholder(top_clearance=0, bottom_leg_clearance=5) {
|
||||||
|
translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2]) cube([relay_coil_housing_w, relay_coil_housing_l, relay_coil_housing_h+top_clearance]);
|
||||||
|
translate([-relay_coil_housing_w/2, -relay_coil_housing_l/2, -bottom_leg_clearance]) cube([relay_coil_housing_w, relay_coil_leg_cavity_l, bottom_leg_clearance]);
|
||||||
|
}
|
||||||
|
|
||||||
output_socket_plate_thickness = 3; // The bit with the hole to screw onto
|
output_socket_plate_thickness = 3; // The bit with the hole to screw onto
|
||||||
output_socket_cutout_d = 10.4 + 0.5;
|
output_socket_cutout_d = 10.4 + 0.5;
|
||||||
|
output_socket_washer_d = 17.0 + 0.5;
|
||||||
output_socket_l = 25;
|
output_socket_l = 25;
|
||||||
output_socket_w = 20;
|
output_socket_w = 20;
|
||||||
output_socket_h = 16;
|
output_socket_h = 15.7 + 0.3;
|
||||||
output_socket_protrude = 9.5;
|
output_socket_protrude = 9.5;
|
||||||
module output_socket_placeholder() {
|
module output_socket_placeholder(rear_clearance=0) {
|
||||||
translate([-output_socket_w/2, 0, 0]) cube([output_socket_w, output_socket_l, output_socket_h]);
|
translate([-output_socket_w/2, 0, 0]) cube([output_socket_w, output_socket_l+rear_clearance, output_socket_h]);
|
||||||
translate([0, 0, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_cutout_d, h=output_socket_protrude, $fn=72);
|
translate([0, 0, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_cutout_d, h=output_socket_protrude, $fn=72);
|
||||||
|
translate([0, -output_socket_plate_thickness, output_socket_h/2]) rotate([90,0,0]) cylinder_outer(d=output_socket_washer_d, h=output_socket_protrude-output_socket_plate_thickness, $fn=72);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Philippians 4:8
|
// Philippians 4:8
|
||||||
|
@ -1136,6 +1143,19 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
echo(segment_cuts);
|
echo(segment_cuts);
|
||||||
echo([ for (i=[1:len(segment_cuts)-1]) segment_cuts[i]-segment_cuts[i-1]]);
|
echo([ for (i=[1:len(segment_cuts)-1]) segment_cuts[i]-segment_cuts[i-1]]);
|
||||||
|
|
||||||
|
pickup_y = fret_scale_length(36);
|
||||||
|
module ElectronicsCavities(diff=false) {
|
||||||
|
// Directly under the strings would hit the second truss rod :(
|
||||||
|
//for (i=[0,1]) translate([string_x(i, pickup_y), pickup_y, -10]) relay_coil_placeholder();
|
||||||
|
z_pickup = -10;
|
||||||
|
for (i=[0,1]) mirror([i, 0, 0]) translate([12, pickup_y, z_pickup]) relay_coil_placeholder(top_clearance = diff ? 40 : 0);
|
||||||
|
// translate([0, pickup_y-8, -20]) rotate([0, 90, 0]) cylinder_outer(d=6, h=neck_width()+10, center=true);
|
||||||
|
// translate([5, pickup_y-38, -10]) rotate([0, 90, 0]) output_socket_placeholder();
|
||||||
|
output_socket_y = pickup_y-26;
|
||||||
|
translate([output_socket_l/2, output_socket_y, -10]) rotate([0, 0, 90]) output_socket_placeholder(rear_clearance = diff ? 40 : 0);
|
||||||
|
translate([output_socket_l/2 - 100, output_socket_y + output_socket_w/2 - 2, -10-1]) cube([100, 9, 2]);
|
||||||
|
}
|
||||||
|
|
||||||
module MyBodySegment() {
|
module MyBodySegment() {
|
||||||
body_height = 24;
|
body_height = 24;
|
||||||
epsilon = 0.000001;
|
epsilon = 0.000001;
|
||||||
|
@ -1162,6 +1182,15 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
translate([0, 490+y0, 50]) cube([100, 100, 100], center=true);
|
translate([0, 490+y0, 50]) cube([100, 100, 100], center=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Electronics bulge
|
||||||
|
hull() {
|
||||||
|
bulge_w = 42.5;
|
||||||
|
bulge_l = 55;
|
||||||
|
bulge_y = pickup_y-40;
|
||||||
|
translate([-neck_width()/2, bulge_y-15, -body_height]) round_cube([neck_width(), bulge_l+30, body_height+$extra_thickness_above_center], r = radius);
|
||||||
|
translate([-bulge_w/2, pickup_y-40, $extra_thickness_above_center-body_height]) round_cube([bulge_w, bulge_l, body_height], r = radius);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module HeadPiece() {
|
module HeadPiece() {
|
||||||
|
@ -1231,6 +1260,10 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
[ 9, segment_cuts[2], -17],
|
[ 9, segment_cuts[2], -17],
|
||||||
[-10.25, segment_cuts[2], 2.5],
|
[-10.25, segment_cuts[2], 2.5],
|
||||||
[ 10.25, segment_cuts[2], 2.5],
|
[ 10.25, segment_cuts[2], 2.5],
|
||||||
|
[-10, segment_cuts[1], 0],
|
||||||
|
[ 10, segment_cuts[1], 0],
|
||||||
|
[-10, segment_cuts[1], -17],
|
||||||
|
[ 10, segment_cuts[1], -17],
|
||||||
];
|
];
|
||||||
module Dowels() {
|
module Dowels() {
|
||||||
for (v=dowel_positions) translate(v) Dowel();
|
for (v=dowel_positions) translate(v) Dowel();
|
||||||
|
@ -1243,6 +1276,8 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
TrussRods(extra=20);
|
TrussRods(extra=20);
|
||||||
Dowels();
|
Dowels();
|
||||||
|
|
||||||
|
ElectronicsCavities(diff=true);
|
||||||
|
|
||||||
// Add a belt hole
|
// Add a belt hole
|
||||||
arc = arc_points([[23, -13], [-23, -13], [0, -3]], 1);
|
arc = arc_points([[23, -13], [-23, -13], [0, -3]], 1);
|
||||||
belthole_r = 3;
|
belthole_r = 3;
|
||||||
|
@ -1284,9 +1319,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
|
||||||
if (preview) {
|
if (preview) {
|
||||||
// TrussRods();
|
// TrussRods();
|
||||||
// CFs();
|
// CFs();
|
||||||
pickup_y = fret_scale_length(36);
|
ElectronicsCavities();
|
||||||
for (i=[0,1]) translate([string_x(i, pickup_y), pickup_y, -10]) relay_coil_placeholder();
|
|
||||||
translate([9, pickup_y-40, -10]) rotate([0, 90, 0]) output_socket_placeholder();
|
|
||||||
color("#FF000080") MyBody();
|
color("#FF000080") MyBody();
|
||||||
strings_reference();
|
strings_reference();
|
||||||
} else render() {
|
} else render() {
|
||||||
|
@ -1309,7 +1342,7 @@ 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 = 2;
|
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);
|
||||||
|
|
|
@ -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() = ((1-cos($fret_angle))/(sin($fret_angle))) * get_max_fret_width()/2;
|
function arc_starting_angle_to_height_ratio(angle) = ((1-cos(angle))/(sin(angle)));
|
||||||
|
function get_max_fret_height() = arc_starting_angle_to_height_ratio($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;
|
||||||
|
@ -175,6 +176,10 @@ module TaperNeck(
|
||||||
z1 = z0 + $scallop_depth; // Frets protrude from here
|
z1 = z0 + $scallop_depth; // Frets protrude from here
|
||||||
z2 = z1 + get_max_fret_height(); // Nothing above this => thickest top of neck
|
z2 = z1 + get_max_fret_height(); // Nothing above this => thickest top of neck
|
||||||
|
|
||||||
|
y2 = fret_scale_length($num_frets) - get_fret_width($num_frets)/2; // bridge-side edge of final fret
|
||||||
|
final_scallop_length = $scallop_depth / arc_starting_angle_to_height_ratio(max_scallop_angle);
|
||||||
|
y1 = y2 - final_scallop_length;
|
||||||
|
|
||||||
module neck_stock() {
|
module neck_stock() {
|
||||||
angle_excess = asin(z2/$target_neck_thickness);
|
angle_excess = asin(z2/$target_neck_thickness);
|
||||||
a0 = 90-angle_excess;
|
a0 = 90-angle_excess;
|
||||||
|
@ -206,8 +211,9 @@ module TaperNeck(
|
||||||
children();
|
children();
|
||||||
}
|
}
|
||||||
module scallop(fret) {
|
module scallop(fret) {
|
||||||
x0 = fret_scale_length(fret-1) - get_fret_width(fret-1)/2;
|
x0 = fret_scale_length(fret) - get_fret_width(fret)/2;
|
||||||
x1 = fret_scale_length(fret) + get_fret_width(fret)/2;
|
x_fret = fret_scale_length(fret+1) + get_fret_width(fret+1)/2;
|
||||||
|
x1 = (fret < $num_frets) ? x_fret : (x0 - final_scallop_length*2);
|
||||||
xmid = lerp(x0, x1, 0.5);
|
xmid = lerp(x0, x1, 0.5);
|
||||||
xdelta = x0-x1;
|
xdelta = x0-x1;
|
||||||
|
|
||||||
|
@ -295,11 +301,10 @@ module TaperNeck(
|
||||||
render() difference() {
|
render() difference() {
|
||||||
neck_stock() children();
|
neck_stock() children();
|
||||||
scallops();
|
scallops();
|
||||||
scallop($num_frets+1);
|
|
||||||
// Chop off anything above the frets
|
// Chop off anything above the frets
|
||||||
translate([-$neck_width_bridge, 0, z1]) 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, z0]) 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, z0]) cube([$neck_width_bridge*2, y1, $target_neck_thickness*3]);
|
||||||
}
|
}
|
||||||
intersection() {
|
intersection() {
|
||||||
fret_bumps();
|
fret_bumps();
|
||||||
|
|
Loading…
Reference in New Issue