Some Steel6 changes

This commit is contained in:
Luke Hubmayer-Werner 2025-02-18 19:01:36 +10:30
parent de9ca96063
commit 74c8206207
1 changed files with 86 additions and 53 deletions

View File

@ -17,6 +17,18 @@ shumbucker_l = 23.1;
shumbucker_lu = 17.1; // Upper
shumbucker_w1 = 66.4;
shumbucker_w2 = 82.9; // 1.6mm in, a 2.0mm hole on each side
module Shumbucker(y_align="center", z_align="positive") {
y_offset = (y_align == "center") ? -shumbucker_l/2 :
(y_align == "negative") ? -shumbucker_l :
(y_align == "positive") ? 0 : 0;
z_offset = (y_align == "center") ? -shumbucker_h/2 :
(y_align == "negative") ? -shumbucker_h :
(y_align == "positive") ? 0 : 0;
translate([-shumbucker_w1/2, y_offset, z_offset]) cube([shumbucker_w1, shumbucker_l, shumbucker_h]);
translate([-shumbucker_w2/2, y_offset, z_offset]) cube([shumbucker_w2, shumbucker_l, 4]);
}
relay_coil_housing_w = 15.2;
relay_coil_housing_l = 18.8;
relay_coil_housing_h = 15.5;
@ -720,20 +732,28 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
$string_margin = 3; // +6
$neck_width_nut = default_neck_width_nut();
$neck_width_bridge = default_neck_width_bridge();
body_width = 96;
body_width = 90;
body_width_tapered = 70;
$scallop_depth = 2.0;
$fret_widths = default_fret_widths(3.6, 2.4);
$fret_angle = 50;
$target_neck_thickness = 16;
// Clownfish idea: make inlay-marked frets a different colour
// Clownfish scheme is 0 Orange/1 White/2-4 Black
$fret_colours = [
1, 4, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, // 0-11
1, 4, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, // 12-23
];
// Artist Strat has about 18cm of headstock and 10cm past bridge on body
y0 = -160;
y0 = -175;
headstock_length = 36;
y_end = behind_fret(0) + headstock_length;
y_fretboard_end = get_end_of_fretboard();
$segment_cuts = [y0, 0, after_fret(22), after_fret(8), behind_fret(0), y_end];
$segment_cuts = [y0, 0, get_end_of_fretboard(), after_fret(8), behind_fret(0), y_end];
echo("Segment cuts:", $segment_cuts, "have lengths", [ for (i=[1:len($segment_cuts)-1]) $segment_cuts[i]-$segment_cuts[i-1]]);
target_neck_thickness_additional_points = [];
@ -749,10 +769,10 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
[ 9, $segment_cuts[4], -10],
[ -8, $segment_cuts[3], -11],
[ 8, $segment_cuts[3], -11],
[-44, $segment_cuts[2], -22],
[ 44, $segment_cuts[2], -22],
[-44, $segment_cuts[2], -6],
[ 44, $segment_cuts[2], -6],
[-39, $segment_cuts[2], -6],
[ 39, $segment_cuts[2], -6],
[-37, $segment_cuts[2], -25],
[ 37, $segment_cuts[2], -25],
[-10, $segment_cuts[1], -4],
[ 10, $segment_cuts[1], -4],
[-17, $segment_cuts[1], -16],
@ -761,22 +781,36 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
$reinforcing_tube_positions = [
[-17, y_end-25-CF_Tube_Len, -4.5],
[ 17, y_end-25-CF_Tube_Len, -4.5],
[ 0, y0, -24],
[ 0, y0+5, -24],
];
$reinforcing_square_positions = [
[-12, y0, -34],
[ 12, y0, -34],
[-12, y0, -24],
[ 12, y0, -24],
[-24, y0, -24],
[ 24, y0, -24],
[-12, y0+5, -34],
[ 12, y0+5, -34],
[-12, y0+5, -24.5],
[ 12, y0+5, -24.5],
[-24, y0+5, -24.5],
[ 24, y0+5, -24.5],
];
module MyBody() {
hull() {
r = 5;
$fn=72;
for (m=[0:1]) mirror([m,0,0]) {
translate([r-30, after_fret(15)-r, -r]) sphere(r);
translate([r-32, after_fret(16)-r, r-40]) sphere(r);
translate([r-body_width/2, after_fret(20)-r, r-40]) sphere(r);
translate([r-body_width/2, after_fret(20)-r, -r]) sphere(r);
translate([r-body_width/2, y0+r, r-40]) sphere(r);
translate([r-body_width/2, y0+r, -r]) sphere(r);
}
}
}
module MyNeck() {
render() TaperNeck(target_neck_thickness_additional_points = target_neck_thickness_additional_points);
render() TaperNeck(target_neck_thickness_additional_points = target_neck_thickness_additional_points) MyBody();
}
module HeadPiece(label=true) {
module HeadPiece() {
string_offsets = [-2.4, 0, 2.4, -2.4, 0, 2.4];
y0 = behind_fret(0);
end_radius = 12;
@ -800,8 +834,9 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
}
}
module Label() {
translate([0, lerp(y0, y_end, 0.55), z2-0.5]) linear_extrude(0.5) scale(1.0) import(file = "svgs/Ichthys.plain.svg", center=true);
translate([0, lerp(y0, y_end, 0.60), z2-0.5]) linear_extrude(0.5) scale(1.33) import(file = "svgs/Ichthys.plain.svg", center=true);
}
module Stock() {
render() difference(){
hull() {
translate([0,y0,0]) scale([neck_width(y0)/2, 0.01, $target_neck_thickness]) sphere(r=1, $fn=360);
@ -810,11 +845,19 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
// Chop excess
translate([-500, y0, z2]) cube([1000, 1000, 1000]);
translate([-500, y0, z0]) rotate([10,0,0]) cube([1000, 1000, 1000]);
translate([-500, y0 - 1000, -500]) cube([1000, 1000, 1000]);
}
}
if (list_has($include_colours, 0)) render() difference() {
Stock();
StringHoles();
Label();
}
if (list_has($include_colours, 1)) render() intersection() {
Stock();
Label();
}
}
module TunerPlacement(cutout = false, ear_extra_diameter = 0, ear_extra_height = 0, plate_clearance = 0, shaft_clearance = 0, shaft_tolerance = 0) {
@ -885,9 +928,9 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
}
}
module Shumbucker() {
translate([-shumbucker_w1/2, -shumbucker_l/2, 0]) cube([shumbucker_w1, shumbucker_l, shumbucker_h]);
translate([-shumbucker_w2/2, -shumbucker_l/2, 0]) cube([shumbucker_w2, shumbucker_l, 4]);
module Full() {
MyNeck();
HeadPiece();
}
bridge_channel_width = 5;
@ -896,19 +939,8 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
if (reference) {
c_cf = [0.4, 0.5, 0.5];
%MyNeck();
%hull() {
r = 5;
$fn=72;
for (m=[0:1]) mirror([m,0,0]) {
translate([r-30, after_fret(15)-5, -r]) sphere(r);
translate([r-45, after_fret(16)-5, r-40]) sphere(r);
translate([r-45, after_fret(20)-5, -r]) sphere(r);
translate([r-45, y0+r, r-40]) sphere(r);
translate([r-45, y0+r, -r]) sphere(r);
}
}
color(c_cf) Reinforcements();
translate([0, fret_scale_length(24), 1-shumbucker_h]) Shumbucker();
translate([0, $segment_cuts[2], -0.8]) Shumbucker(y_align="negative", z_align="negative");
// Approximate tuner placement
// TunerPlacement();
// Render strings above for spacing reference
@ -919,13 +951,12 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
translate([string_x(i, $fsl_mm+5), $fsl_mm+5, 5]) sphere(d=$string_diameters_mm[i], $fn=cyl_ld_fn);
}
}
%HeadPiece(false);
%HeadPiece();
} else if (segment >= 0) {
//
Full();
} else if (segment == -1) {
// String holding headpiece
echo("Making a headpiece");
HeadPiece();
Full();
} else if (segment == -2) {
echo("Making a filler belt loop");
LoopOrTunerBlock(false);
@ -1037,12 +1068,14 @@ 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_ABS_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]);
// color(colour_scheme[2]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[2]);
// color(colour_scheme[3]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[3]);
segment = -1;
color(colour_scheme[0]) Steel6String(segment=segment, include_colours=[0]);
color(colour_scheme[1]) Steel6String(segment=segment, include_colours=[1]);
color(colour_scheme[2]) Steel6String(segment=segment, include_colours=[2]);
color(colour_scheme[3]) Steel6String(segment=segment, include_colours=[3]);
color(colour_scheme[2]) Steel6String(segment=segment, include_colours=[4]);
// rotate([90,0,0])
// Steel6String(reference=true);
@ -1385,11 +1418,11 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) {
}
// colour_scheme = COLOURSCHEME_ABS_BLUE;
colour_scheme = COLOURSCHEME_ABS_CLOWNFISH;
// colour_scheme = COLOURSCHEME_ABS_CLOWNFISH;
// // TwoBangerMk2(preview=true);
segment = "pickup";
color(colour_scheme[0]) TwoBangerMk2([0], segment);
color(colour_scheme[1]) TwoBangerMk2([1], segment);
// segment = "pickup";
// 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);