More tolerance tests, Single Action truss rod

This commit is contained in:
Luke Hubmayer-Werner 2025-02-05 18:07:14 +10:30
parent f81f0b49ee
commit 1d5ec83e47
5 changed files with 92 additions and 36 deletions

View File

@ -12,6 +12,11 @@ include <EllipticalNeck.scad>
// Guitar_Scale_Length_mm = 610; // millimetres, slightly over 24inch (609.6mm) Jaguar scale, should be fine for guitar and u-bass // 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 // 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 // Philippians 4:8
// Gideon (ShinKaiYaku07) , , , , , , , // Gideon (ShinKaiYaku07) , , , , , , ,
// ShinKaiYaku65 // ShinKaiYaku65
@ -1081,17 +1086,19 @@ COLOURSCHEME_PETGHF_BLUE = [BAMBU_PETGHF_LAKE_BLUE, BAMBU_PETGHF_LAKE_BLUE, "",
colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH; colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH;
// colour_scheme = COLOURSCHEME_ABS_BLUE; // 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[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=15, to_fret=23, include_colours=[1]); // 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=15, to_fret=23, include_colours=[2]); // 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=15, to_fret=23, include_colours=[3]); // 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); // rotate([90,0,0]) Steel6String(include_colours=[0,1,2,3], reference=true);
// TrussRod(); // TrussRodSingleAction();
// difference() { // translate([20, 0]) TrussRod();
// l = 70; difference() {
// w = 20; l = 70;
// extra = 5; w = 20;
// translate([-w/2, -extra, 1.6-w/2]) cube([w, l+extra, w]); 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); // TrussRod(taper_points=[-extra, l], extra=true, tolerance = 0.24);
// } TrussRodSingleAction(taper_points=[-extra, l], extra=true, tolerance = 0.24);
}

View File

@ -1,2 +1,4 @@
CF_Square_Width_tolerance = 0.4; // Add to CF_Square_Width when making holes CF_Square_Width_tolerance = 0.4; // Add to CF_Square_Width when making holes
CF_Tube_OD_tolerance = 0.5; 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

View File

@ -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; $fn = 360;
epsilon = 0.00000001; epsilon = 0.00000001;
rot = [-90, 180, 0]; 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]); 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 (s = stages) rotate(rot) linear_extrude(s[0]) squircle(s[1], s[2], s[3]);
for (i = [0:len(stages)-2]) { for (i = [0:len(stages)-2]) {
s0 = stages[i]; 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);
}

View File

@ -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. // 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); cylinder(d=d, h=h);
// beak notch for seams // beak notch for seams

23
hole_tolerances.scad Normal file
View File

@ -0,0 +1,23 @@
include <common.scad>
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");
}
}
}