From 1d5ec83e47d4bf611a4a13331b39259aee9ee177 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Wed, 5 Feb 2025 18:07:14 +1030 Subject: [PATCH] More tolerance tests, Single Action truss rod --- CFTubes.scad | 31 ++++++++++++-------- CFTubes/ABS.scad | 2 ++ CFTubes/common.scad | 70 +++++++++++++++++++++++++++++--------------- common.scad | 2 +- hole_tolerances.scad | 23 +++++++++++++++ 5 files changed, 92 insertions(+), 36 deletions(-) create mode 100644 hole_tolerances.scad diff --git a/CFTubes.scad b/CFTubes.scad index 0a8c18a..a0f2a80 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -12,6 +12,11 @@ include // Guitar_Scale_Length_mm = 610; // millimetres, slightly over 24inch (609.6mm) Jaguar scale, should be fine for guitar and u-bass // assert(fret_scale_length(0) == 610); // Make sure the function correctly uses our changed global +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 + // Philippians 4:8 // Gideon (ShinKaiYaku07) 真実な, 尊ぶべき, 正しい, 清い, 愛すべき, 評判の良い, 徳とされる, 称賛に値する // ShinKaiYaku65 最後に、兄弟たち。すべての真実なこと、すべての誉れあること、すべての正しいこと、すべてのきよいこと、すべての愛すべきこと、すべての評判の良いこと、そのほか徳と言われること、称賛に値することがあるならば、そのようなことに心を留めなさい。 @@ -1081,17 +1086,19 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "", colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH; // colour_scheme = COLOURSCHEME_ABS_BLUE; -color(colour_scheme[0]) rotate([90,0,0]) Steel6String(from_fret=15, to_fret=23, include_colours=[0]); -color(colour_scheme[1]) rotate([90,0,0]) Steel6String(from_fret=15, to_fret=23, include_colours=[1]); -color(colour_scheme[2]) rotate([90,0,0]) Steel6String(from_fret=15, to_fret=23, include_colours=[2]); -color(colour_scheme[3]) rotate([90,0,0]) Steel6String(from_fret=15, to_fret=23, include_colours=[3]); +// 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]); // rotate([90,0,0]) Steel6String(include_colours=[0,1,2,3], reference=true); -// TrussRod(); -// difference() { -// l = 70; -// w = 20; -// extra = 5; -// translate([-w/2, -extra, 1.6-w/2]) cube([w, l+extra, w]); -// TrussRod(taper_points=[-extra, l], extra=true, tolerance = 0.24); -// } +// TrussRodSingleAction(); +// translate([20, 0]) TrussRod(); +difference() { + l = 70; + w = 20; + extra = 5; + translate([-w/2, -extra, 1.6-w/2]) cube([w, l+extra, w]); + // TrussRod(taper_points=[-extra, l], extra=true, tolerance = 0.24); + TrussRodSingleAction(taper_points=[-extra, l], extra=true, tolerance = 0.24); +} diff --git a/CFTubes/ABS.scad b/CFTubes/ABS.scad index 057767f..1108746 100644 --- a/CFTubes/ABS.scad +++ b/CFTubes/ABS.scad @@ -1,2 +1,4 @@ CF_Square_Width_tolerance = 0.4; // Add to CF_Square_Width when making holes CF_Tube_OD_tolerance = 0.5; +SS_Dowel_OD_tight = 5.25; // 5.2 very tight on most layer settings, 5.25 slightly loose (ABS 4 perimeters, 24% gyroid infill) +SS_Dowel_OD_loose = 5.3; // 5.2 very tight on most layer settings, 5.25 slightly loose diff --git a/CFTubes/common.scad b/CFTubes/common.scad index fc8007b..e83ac44 100644 --- a/CFTubes/common.scad +++ b/CFTubes/common.scad @@ -131,7 +131,7 @@ module CFSquareCutout2(v, block_y0, block_y1, tolerance = CF_Square_Width_tolera } } -module TrussRod(length = 630, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, taper_points=[], extra=false) { +module TrussRodGeneric(length, tolerance, stages, taper_l = 1.5, taper_extra = 1.0, taper_points=[], extra=false) { $fn = 360; epsilon = 0.00000001; rot = [-90, 180, 0]; @@ -142,29 +142,7 @@ module TrussRod(length = 630, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, t translate([-w/2, h - d/2 - epsilon]) square([w, epsilon]); } } - // base profile - base_d = 6.0 + tolerance; - base_w = base_d; - base_h = 9.0 + tolerance; - // nut? - stage2_d = 7.05 + tolerance; - stage2_w = base_w; - stage2_h = base_h + (stage2_d - base_d); - stage2_l = 55 + tolerance; - - // Turning end - stage3_d = 9.2 + tolerance; - stage3_w = stage3_d; - stage3_h = base_h + (stage3_d - base_d); - stage3_l = 35 + tolerance; - - // Rod outline - stages = [ // Must be ascending order for later - [stage3_l, stage3_d, stage3_h, stage3_w], - [stage2_l, stage2_d, stage2_h, base_w], - [length, base_d, base_h, base_w], - ]; for (s = stages) rotate(rot) linear_extrude(s[0]) squircle(s[1], s[2], s[3]); for (i = [0:len(stages)-2]) { s0 = stages[i]; @@ -194,3 +172,49 @@ module TrussRod(length = 630, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, t } } } + +module TrussRod(length = 630, tolerance = 0, taper_l = 1.5, 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_w = base_w; + stage2_h = base_h + (stage2_d - base_d); + stage2_l = 55 + tolerance; + + // Turning end + stage3_d = 9.2 + tolerance; + stage3_w = stage3_d; + stage3_h = base_h + (stage3_d - base_d); + stage3_l = 35 + tolerance; + + // Rod outline + stages = [ // Must be ascending order for later + [stage3_l, stage3_d, stage3_h, stage3_w], + [stage2_l, stage2_d, stage2_h, stage2_w], + [length, base_d, base_h, base_w], + ]; + TrussRodGeneric(length=length, tolerance=tolerance, stages=stages, taper_l=taper_l, taper_extra=taper_extra, taper_points=taper_points, extra=extra); +} +module TrussRodSingleAction(length = 460, tolerance = 0, taper_l = 1.5, taper_extra = 1.0, taper_points=[], extra=false) { + // base profile + base_d = 4.6 + tolerance; + base_w = 6.1 + tolerance; + base_h = 8.1 + tolerance; + + // nut? + stage2_d = 7.0 + 0.2 + tolerance; + stage2_w = base_w; + stage2_h = base_h + (stage2_d - base_d); + stage2_l = 44 + tolerance; + + // Rod outline + stages = [ // Must be ascending order for later + [stage2_l, stage2_d, stage2_h, stage2_w], + [length, base_d, base_h, base_w], + ]; + TrussRodGeneric(length=length, tolerance=tolerance, stages=stages, taper_l=taper_l, taper_extra=taper_extra, taper_points=taper_points, extra=extra); +} diff --git a/common.scad b/common.scad index 862c1c5..01554d9 100644 --- a/common.scad +++ b/common.scad @@ -63,7 +63,7 @@ module screw_hole_lobe(ID, OD, lobes=3, fn=90) { } } -module cylinder_beak(d, h, beak=0.5) { +module cylinder_beak(d, h, beak=0.75) { // A cylinder with a beak to take seams. This helps improve tolerances as seams often expand a little bit and ruin the fit. cylinder(d=d, h=h); // beak notch for seams diff --git a/hole_tolerances.scad b/hole_tolerances.scad new file mode 100644 index 0000000..775cd99 --- /dev/null +++ b/hole_tolerances.scad @@ -0,0 +1,23 @@ +include +base_diameter = 5.0; +hole_step = 0.05; +num_holes = 12; +thickness = 15; +engrave_depth = 0.6; +hole_spacing = base_diameter*1.6; + +render() difference() { + cube([hole_spacing * num_holes + base_diameter, base_diameter*2 + 10, thickness]); + // translate([1, 9, thickness-engrave_depth]) linear_extrude(engrave_depth) + // text(str("d=", base_diameter, "mm"), size=5); + $fn=72; + for (i=[0:num_holes-1]) { + d = base_diameter + i*hole_step; + translate([base_diameter + hole_spacing*i, base_diameter]) { + cylinder_beak(d, thickness); + translate([0, 5, thickness-engrave_depth]) linear_extrude(engrave_depth) + rotate(90) text(str(d), size=3, valign="center"); + } + } +} +