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_lu = 17.1; // Upper
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
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_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;
@ -720,20 +732,28 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
$string_margin = 3; // +6 $string_margin = 3; // +6
$neck_width_nut = default_neck_width_nut(); $neck_width_nut = default_neck_width_nut();
$neck_width_bridge = default_neck_width_bridge(); $neck_width_bridge = default_neck_width_bridge();
body_width = 96; body_width = 90;
body_width_tapered = 70;
$scallop_depth = 2.0; $scallop_depth = 2.0;
$fret_widths = default_fret_widths(3.6, 2.4); $fret_widths = default_fret_widths(3.6, 2.4);
$fret_angle = 50; $fret_angle = 50;
$target_neck_thickness = 16; $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 // Artist Strat has about 18cm of headstock and 10cm past bridge on body
y0 = -160; y0 = -175;
headstock_length = 36; headstock_length = 36;
y_end = behind_fret(0) + headstock_length; y_end = behind_fret(0) + headstock_length;
y_fretboard_end = get_end_of_fretboard(); 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]]); 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 = []; target_neck_thickness_additional_points = [];
@ -749,10 +769,10 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
[ 9, $segment_cuts[4], -10], [ 9, $segment_cuts[4], -10],
[ -8, $segment_cuts[3], -11], [ -8, $segment_cuts[3], -11],
[ 8, $segment_cuts[3], -11], [ 8, $segment_cuts[3], -11],
[-44, $segment_cuts[2], -22], [-39, $segment_cuts[2], -6],
[ 44, $segment_cuts[2], -22], [ 39, $segment_cuts[2], -6],
[-44, $segment_cuts[2], -6], [-37, $segment_cuts[2], -25],
[ 44, $segment_cuts[2], -6], [ 37, $segment_cuts[2], -25],
[-10, $segment_cuts[1], -4], [-10, $segment_cuts[1], -4],
[ 10, $segment_cuts[1], -4], [ 10, $segment_cuts[1], -4],
[-17, $segment_cuts[1], -16], [-17, $segment_cuts[1], -16],
@ -761,22 +781,36 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
$reinforcing_tube_positions = [ $reinforcing_tube_positions = [
[-17, y_end-25-CF_Tube_Len, -4.5], [-17, y_end-25-CF_Tube_Len, -4.5],
[ 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 = [ $reinforcing_square_positions = [
[-12, y0, -34], [-12, y0+5, -34],
[ 12, y0, -34], [ 12, y0+5, -34],
[-12, y0, -24], [-12, y0+5, -24.5],
[ 12, y0, -24], [ 12, y0+5, -24.5],
[-24, y0, -24], [-24, y0+5, -24.5],
[ 24, y0, -24], [ 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() { 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]; string_offsets = [-2.4, 0, 2.4, -2.4, 0, 2.4];
y0 = behind_fret(0); y0 = behind_fret(0);
end_radius = 12; end_radius = 12;
@ -800,21 +834,30 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
} }
} }
module Label() { 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);
} }
render() difference(){ module Stock() {
hull() { render() difference(){
translate([0,y0,0]) scale([neck_width(y0)/2, 0.01, $target_neck_thickness]) sphere(r=1, $fn=360); hull() {
translate([0,y1-end_radius,0]) scale([neck_width(y1)/2, end_radius, $target_neck_thickness*1.0]) sphere(r=1, $fn=360); translate([0,y0,0]) scale([neck_width(y0)/2, 0.01, $target_neck_thickness]) sphere(r=1, $fn=360);
translate([0,y1-end_radius,0]) scale([neck_width(y1)/2, end_radius, $target_neck_thickness*1.0]) sphere(r=1, $fn=360);
}
// 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]);
} }
// 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(); StringHoles();
Label(); 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) { 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() { module Full() {
translate([-shumbucker_w1/2, -shumbucker_l/2, 0]) cube([shumbucker_w1, shumbucker_l, shumbucker_h]); MyNeck();
translate([-shumbucker_w2/2, -shumbucker_l/2, 0]) cube([shumbucker_w2, shumbucker_l, 4]); HeadPiece();
} }
bridge_channel_width = 5; bridge_channel_width = 5;
@ -896,19 +939,8 @@ module Steel6String(include_colours=[0,1], segment=-1, reference=false) {
if (reference) { if (reference) {
c_cf = [0.4, 0.5, 0.5]; c_cf = [0.4, 0.5, 0.5];
%MyNeck(); %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(); 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 // Approximate tuner placement
// TunerPlacement(); // TunerPlacement();
// Render strings above for spacing reference // 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); 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) { } else if (segment >= 0) {
// Full();
} else if (segment == -1) { } else if (segment == -1) {
// String holding headpiece // String holding headpiece
echo("Making a headpiece"); Full();
HeadPiece();
} else if (segment == -2) { } else if (segment == -2) {
echo("Making a filler belt loop"); echo("Making a filler belt loop");
LoopOrTunerBlock(false); 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_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, "", ""]; 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; // colour_scheme = COLOURSCHEME_ABS_BLUE;
// color(colour_scheme[0]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[0]); segment = -1;
// color(colour_scheme[1]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[1]); color(colour_scheme[0]) Steel6String(segment=segment, include_colours=[0]);
// color(colour_scheme[2]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[2]); color(colour_scheme[1]) Steel6String(segment=segment, include_colours=[1]);
// color(colour_scheme[3]) rotate([90,0,0]) Steel6String(from_fret=0, to_fret=23, include_colours=[3]); 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]) // rotate([90,0,0])
// Steel6String(reference=true); // 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_BLUE;
colour_scheme = COLOURSCHEME_ABS_CLOWNFISH; // colour_scheme = COLOURSCHEME_ABS_CLOWNFISH;
// // TwoBangerMk2(preview=true); // // TwoBangerMk2(preview=true);
segment = "pickup"; // segment = "pickup";
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);