From 3c369eaa7524240277d6bd6947b63fb70b96f649 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Wed, 12 Feb 2025 12:25:24 +1030 Subject: [PATCH] 20250211 headstock changes --- CFTubes.scad | 42 ++++++++++++++++++++++++++++++++---------- CFTubes/common.scad | 6 +++--- EllipticalNeck.scad | 2 +- common.scad | 8 ++++++++ 4 files changed, 44 insertions(+), 14 deletions(-) diff --git a/CFTubes.scad b/CFTubes.scad index a00e00b..0a54851 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -22,6 +22,16 @@ 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]); +output_socket_plate_thickness = 3; // The bit with the hole to screw onto +output_socket_cutout_d = 10.4 + 0.5; +output_socket_l = 25; +output_socket_w = 20; +output_socket_h = 16; +output_socket_protrude = 9.5; +module output_socket_placeholder() { + translate([-output_socket_w/2, 0, 0]) cube([output_socket_w, output_socket_l, 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); +} // Philippians 4:8 // Gideon (ShinKaiYaku07) 真実な, 尊ぶべき, 正しい, 清い, 愛すべき, 評判の良い, 徳とされる, 称賛に値する @@ -32,6 +42,9 @@ fret_inlays = [[3, "真"], [5, "尊"], [7, "正"], [9, "清"], [12, "評判"], [ // Galatians 5:22-23 // ShinKaiYaku65 22しかし、御霊の実は、愛、喜び、平安、寛容、親切、善意、誠実、 23柔和、自制です。このようなものを禁ずる律法はありません。 // 愛 喜び 平安 寛容 親切 善意 誠実 柔和 自制 +ichthys = "ΙΧΘΥΣ"; // goes inside the fish symbol +chirho = "☧"; +khiro = "⳩"; module tailpiece(string_spacing=18, string_margin=4.5, num_strings=3, target_neck_thickness=15, scallop_depth=3, fret_width=2.4*6) { fw2 = fret_width/2; @@ -1096,7 +1109,7 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "", module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) { $include_colours = include_colours; $guitar_scale_length_mm = PBass_Scale_mm; - $id_lines = ["Zweisaiten", "250210"]; + $id_lines = ["Zweisaiten", "250212"]; $fsl_mm = fret_scale_length(0); $string_diameters_thous = [80, 105]; // Artist BST45130 @@ -1153,27 +1166,36 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) { module HeadPiece() { x0 = behind_fret(0); - end_radius = 14; - x2 = x0 + 25; + end_radius = 12; + x2 = x0 + 29; x1 = x2 - end_radius; z0 = $scallop_depth + $extra_thickness_above_center; z1 = $scallop_depth + get_max_fret_height() + $extra_thickness_above_center; module StringHoles() { $fn=360; + ballend_v = [0,x0+21,-3]; for (i = [0:$num_strings-1]) translate([string_x(i, x0),0,0]) { - ballend_v = [0,x0+15,2]; + max_dia = 4; // ball wrap is like 3.8mm on these strings + hole_dia = min(4, $string_diameters_mm[i]*1.5 + 1); + string_v = [0, fret_scale_length(0), z1+hole_dia/2]; hull() { - 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(string_v) sphere(d=hole_dia); + translate(ballend_v) sphere(d=4); } + delta_v = ballend_v - string_v; 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_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); + translate(ballend_v + delta_v) rotate([0, 90, 0]) cylinder_outer(d=6.5, h=5.0, center=true); } } } + module Label() { + // translate([0, lerp(x0, x2, 0.5), z0-0.5]) linear_extrude(0.5) text(ichthys, font="Noto Sans", size=6, halign="center", valign="center"); + // translate([0, lerp(x0, x2, 0.5), z0-0.5]) linear_extrude(0.5) text(chirho, font="DejaVu Sans", size=12, halign="center", valign="center"); + translate([0, lerp(x0, x2, 0.5), z0-0.5]) linear_extrude(0.5) text(khiro, font="Noto Sans Coptic", size=12, halign="center", valign="center"); + } if (list_has(include_colours, 0)) render() difference(){ $fn=360; hull() { @@ -1183,10 +1205,9 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) { translate([-500, x0, z0]) cube([1000, 1000, 1000]); translate([-500, x0-1000, -500]) cube([1000, 1000, 1000]); StringHoles(); - // if (label) translate([-10,fw2+1,-10]) rotate([90,0,0]) linear_extrude(10) { - // text(str(id_line_0, id_line_1), size=2.9, halign="center", valign="center", $fn=100); - // } + Label(); } + if (list_has(include_colours, 2)) Label(); // StringHoles(); } @@ -1265,6 +1286,7 @@ module TwoBangerMk2(include_colours=[0,1], segment=-1, preview=false) { // CFs(); pickup_y = fret_scale_length(36); 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(); strings_reference(); } else render() { diff --git a/CFTubes/common.scad b/CFTubes/common.scad index d37b8e2..f2d3819 100644 --- a/CFTubes/common.scad +++ b/CFTubes/common.scad @@ -152,7 +152,7 @@ module TrussRodGeneric(length, tolerance, stages, taper_l = 1.5, taper_extra = 1 module squircle(d, h, w) { sq_h = max(h-d, epsilon); render() hull() { - circle(d = d); + circle_outer(d = d); translate([-w/2, h - d/2 - sq_h]) square([w, sq_h]); } } @@ -187,14 +187,14 @@ module TrussRodGeneric(length, tolerance, stages, taper_l = 1.5, taper_extra = 1 } } -module TrussRod(length = 630, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, taper_points=[], extra=false) { +module TrussRod(length = 630, tolerance = 0, taper_l = 3.0, taper_extra = 1.0, taper_points=[], extra=false) { // base profile base_d = 6.0 + tolerance; base_w = base_d; base_h = 9.0 + tolerance; // nut? - stage2_d = 7.05 + tolerance; + stage2_d = 7.05 + 0.05 + tolerance; stage2_w = base_w; stage2_h = base_h + (stage2_d - base_d); stage2_l = 55 + tolerance; diff --git a/EllipticalNeck.scad b/EllipticalNeck.scad index 43d5213..9d50c3b 100644 --- a/EllipticalNeck.scad +++ b/EllipticalNeck.scad @@ -299,7 +299,7 @@ module TaperNeck( // 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]); // Reduce rest of the body to 0 - translate([-$neck_width_bridge, 0, 0]) 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, (fret_scale_length($num_frets)+fret_scale_length($num_frets+1))/2, $target_neck_thickness*3]); } intersection() { fret_bumps(); diff --git a/common.scad b/common.scad index 5feb91f..551afa4 100644 --- a/common.scad +++ b/common.scad @@ -83,8 +83,16 @@ module screw_hole_lobe(ID, OD, lobes=3) { } } +module circle_outer(d) { + // Regular circle inscribes, this circumscribes + $fn = is_undef($fn) ? 72 : $fn; + fudge = 1/cos(180/$fn); + circle(d=d*fudge); +} + module cylinder_outer(d, h, center=false) { // Regular circle inscribes, this circumscribes + $fn = is_undef($fn) ? 72 : $fn; fudge = 1/cos(180/$fn); cylinder(d=d*fudge, h=h, center=center); }