First attempt at truss rod model

This commit is contained in:
Luke Hubmayer-Werner 2025-02-01 18:22:58 +10:30
parent 2cc596a3f6
commit 101fb5b6d1
2 changed files with 70 additions and 5 deletions

View File

@ -667,8 +667,17 @@ COLOURSCHEME_ABS_BLUE = [BAMBU_ABS_NAVY_BLUE, 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_ABSGF_CLOWNFISH;
colour_scheme = COLOURSCHEME_ABS_BLUE; // colour_scheme = COLOURSCHEME_ABS_BLUE;
color(colour_scheme[0]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=true, render_colour_1=false, render_colour_2=false, render_colour_3=false); // color(colour_scheme[0]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=true, render_colour_1=false, render_colour_2=false, render_colour_3=false);
color(colour_scheme[1]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=true, render_colour_2=false, render_colour_3=false); // color(colour_scheme[1]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=true, render_colour_2=false, render_colour_3=false);
color(colour_scheme[2]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=true, render_colour_3=false); // color(colour_scheme[2]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=true, render_colour_3=false);
color(colour_scheme[3]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=true); // color(colour_scheme[3]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=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);
}

View File

@ -146,3 +146,59 @@ 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) {
$fn = 360;
epsilon = 0.00000001;
rot = [-90, 180, 0];
module squircle(d, h, w) {
render() hull() {
circle(d = d);
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.0 + tolerance;
stage2_w = base_w;
stage2_h = base_h + (stage2_d - base_d);
stage2_l = 55 + tolerance;
// Turning end
stage3_d = 9.1 + 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]);
if (extra) {
l = 33;
s = stages[0];
translate([0, -l, 0]) rotate(rot) linear_extrude(l+s[0]) squircle(s[1], s[2], s[3]);
}
// Tapers
for (x = taper_points) {
larger_stages = [ for (s = stages) if (s[0] >= x) s];
if (len(larger_stages)) {
s = larger_stages[0];
t2 = taper_extra * 2;
render() hull() {
translate([0, x-epsilon/2, 0]) rotate(rot) linear_extrude(epsilon) squircle(s[1]+t2, s[2]+t2, s[3]+t2);
translate([0, x+taper_l-epsilon, 0]) rotate(rot) linear_extrude(epsilon) squircle(s[1], s[2], s[3]);
translate([0, x-taper_l, 0]) rotate(rot) linear_extrude(epsilon) squircle(s[1], s[2], s[3]);
}
}
}
}