From 1537b8bd1b3a43b55cd8ef889c962d38637df4ab Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 10 Jul 2024 19:09:18 -0700 Subject: [PATCH] Hollow extension, rounded inner edges --- ...25mm.scad => extension_twist_ccw_25mm.scad | 2 +- lib/extension_twist.scad | 23 +++++-- lib/spoolmount.scad | 36 ++++++++--- lib/spoolmount_twist.scad | 60 +++++++++++++++---- 4 files changed, 92 insertions(+), 29 deletions(-) rename extension_twist_25mm.scad => extension_twist_ccw_25mm.scad (50%) diff --git a/extension_twist_25mm.scad b/extension_twist_ccw_25mm.scad similarity index 50% rename from extension_twist_25mm.scad rename to extension_twist_ccw_25mm.scad index a226f27..c8ba9d7 100644 --- a/extension_twist_25mm.scad +++ b/extension_twist_ccw_25mm.scad @@ -1,3 +1,3 @@ use -extension_twist(h=25); \ No newline at end of file +extension_twist(h=25, twist=30); \ No newline at end of file diff --git a/lib/extension_twist.scad b/lib/extension_twist.scad index a62a6d4..a2c3899 100644 --- a/lib/extension_twist.scad +++ b/lib/extension_twist.scad @@ -1,6 +1,6 @@ use -module extension_twist(h) { +module extension_twist(h, twist) { assert(h >= 10, "minimum extension height is 10"); // Bottom spoolmount twist @@ -8,12 +8,23 @@ module extension_twist(h) { // Top spoolmount twist translate([0, 0, h]) - rotate([180, 0, 30]) + rotate([180, 0, twist]) spoolmount_twist(); - // Center cylinder - translate([0, 0, 5]) - cylinder(h=h - 10, r=25, $fn=200); + difference() { + union() { + // Outer body cylinder + translate([0, 0, 4.5]) + cylinder(h=h - 9, r=25, $fn=200); + + // Inner body cylinder + translate([0, 0, 2.5]) + cylinder(h=h - 5, r=23, $fn=200); + } + + // Inner through cutout + cylinder(h=h, r=16.25, $fn=200); + } } -extension_twist(h=25); \ No newline at end of file +extension_twist(h=25, twist=30); \ No newline at end of file diff --git a/lib/spoolmount.scad b/lib/spoolmount.scad index c26f26c..c8961e5 100644 --- a/lib/spoolmount.scad +++ b/lib/spoolmount.scad @@ -7,21 +7,30 @@ module spoolmount() { cylinder(h=5, r=42, $fn=200); // Central through hole + cylinder(h=5, r=25.1, $fn=200); + + // Bottom slightly wider cutout translate([0, 0, -1]) - cylinder(h=7, r=25.1, $fn=200); + cylinder(h=1.5, r=25.45, $fn=200); + + // Top slightly wider cutout + translate([0, 0, 4.5]) + cylinder(h=1.5, r=25.45, $fn=200); } - + for (a = [45 : 90 : 335]) { // Locking bumps rotate([0, 0, a - 10]) rotate_extrude(angle=20, $fn=200) - translate([22.6, 0, 0]) + translate([23.1, 0, 0]) polygon(points=[ - [2.5, 0], + [2.0, 0], + [2.0, 0.5], [0, 2.5], - [2.5, 5], + [2.0, 4.5], + [2.0, 5], ]); - + // Rounded bump ends for (o = [-10, 10]) { rotate([0, 0, a + o]) @@ -30,9 +39,9 @@ module spoolmount() { rotate_extrude($fn=200) translate([5, 0, 0]) polygon(points=[ - [0, 0], - [2.5, 2.5], - [0, 5], + [0, 0.5], + [2.0, 2.5], + [0, 4.5], ]); } } @@ -41,6 +50,15 @@ module spoolmount() { translate([0, 0, 2.5]) { torus(r_major=42, r_minor=2.5, xs=0.7, $fn=200); } + + // Rounded inner edges + { + translate([0, 0, 0.5]) + torus(r_major=25.45, r_minor=0.5, xs=0.7, $fn=200); + + translate([0, 0, 4.5]) + torus(r_major=25.45, r_minor=0.5, xs=0.7, $fn=200); + } } spoolmount(); \ No newline at end of file diff --git a/lib/spoolmount_twist.scad b/lib/spoolmount_twist.scad index dd51bee..51fc05e 100644 --- a/lib/spoolmount_twist.scad +++ b/lib/spoolmount_twist.scad @@ -1,15 +1,40 @@ +use + module spoolmount_twist() { difference() { union() { difference() { - // Cylinder body - cylinder(h=5, r=25, $fn=200); + union() { + // Core cylinder body + translate([0, 0, 0.5]) + cylinder(h=4, r=25, $fn=200); + + // Slightly narrower bottom/top body + cylinder(h=5, r=24.65, $fn=200); + + // Bottom outer rounded edge + intersection() { + cylinder(h=0.5, r=25, $fn=200); + + translate([0, 0, 0.5]) + torus(r_major=24.65, r_minor=0.5, xs=0.7, $fn=200); + } + + // Top outer rounded edge + intersection() { + translate([0, 0, 4.5]) + cylinder(h=0.5, r=25, $fn=200); + + translate([0, 0, 4.5]) + torus(r_major=24.65, r_minor=0.5, xs=0.7, $fn=200); + } + } for (a = [45 : 90 : 335]) { // Slide bump entrance cutout rotate([0, 0, a - 13]) rotate_extrude(angle=26, $fn=200) - translate([22.3, 0, 0]) + translate([23, 0, 0]) polygon(points=[ [0, -1], [3, -1], @@ -20,25 +45,30 @@ module spoolmount_twist() { // Slide cutout rotate([0, 0, a - 40]) rotate_extrude(angle=80, $fn=200) - translate([22.5, 0, 0]) + translate([23, 0, 0]) polygon(points=[ - [3, 0], - [2.5, 0], + [3, 0.5], + [2, 0.5], [0, 2.5], - [2.5, 5], - [3, 5], + [2, 4.5], + [3, 4.5], ]); } + + // Inner cutout + translate([0, 0, -1]) + cylinder(h=7, r=18, $fn=200); } - + // Locking bumps intersection() { - cylinder(h=5, r=25, $fn=200); + translate([0, 0, 0.5]) + cylinder(h=4, r=25, $fn=200); for (a = [45 : 90 : 335]) { - for (o = [-19.2, 19.2]) { + for (o = [-19.15, 19.15]) { rotate([0, 0, a + o]) - translate([0, 23.4, 0]) { + translate([0, 23.9, 0]) { translate([0, 0, 1]) rotate([45, 0, 0]) cylinder(h=3.5, d=1.1, center=true, $fn=50); @@ -56,7 +86,7 @@ module spoolmount_twist() { for (a = [45 : 90 : 335]) { for (o = [-40, -20, 20, 40]) { rotate([0, 0, a + o]) - translate([0, 30, 0]) + translate([0, 30.5, 0]) scale([0.2, 1.0, 1.0]) rotate_extrude($fn=200) translate([5, 0, 0]) @@ -68,6 +98,10 @@ module spoolmount_twist() { } } } + + // Inner rounded edge + translate([0, 0, 2.5]) + torus(r_major=18, r_minor=2.5, xs=0.7, $fn=200); } spoolmount_twist(); \ No newline at end of file