From 101fb5b6d1a7baf748ad8452fb032dcf2c413dd8 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Sat, 1 Feb 2025 18:22:58 +1030 Subject: [PATCH] First attempt at truss rod model --- CFTubes.scad | 19 +++++++++++---- CFTubes/common.scad | 56 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/CFTubes.scad b/CFTubes.scad index 51c85f6..542a3ee 100644 --- a/CFTubes.scad +++ b/CFTubes.scad @@ -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, "", ""]; // colour_scheme = COLOURSCHEME_ABSGF_CLOWNFISH; -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[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[3]) Nylon6String(from_fret=0, to_fret=22, render_colour_0=false, render_colour_1=false, render_colour_2=false, render_colour_3=true); +// 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[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[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); +} diff --git a/CFTubes/common.scad b/CFTubes/common.scad index 0adff81..faf5d2a 100644 --- a/CFTubes/common.scad +++ b/CFTubes/common.scad @@ -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]); + } + } + } +}