From 7c91fdb38b29adb991b9b4b8426d9f70392afd15 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 13 Jul 2026 15:26:55 -0400 Subject: [PATCH] Port spoolmount library refactor: add bump, consolidate extension_twist, drop clip variant --- v1/scad/lib/generic/extension-clip.scad | 43 ----------------- v1/scad/lib/generic/extension-twist.scad | 6 +-- v1/scad/lib/generic/spoolmount-bump.scad | 48 +++++++++++++++++++ v1/scad/lib/generic/spoolmount-twist.scad | 14 +++--- v1/scad/lib/generic/spoolmount.scad | 15 ++++-- .../objects/generic/extension-clip-25mm.scad | 3 -- ...cw-25mm.scad => extension-twist-25mm.scad} | 2 +- .../generic/extension-twist-cw-25mm.scad | 3 -- 8 files changed, 71 insertions(+), 63 deletions(-) delete mode 100644 v1/scad/lib/generic/extension-clip.scad create mode 100644 v1/scad/lib/generic/spoolmount-bump.scad delete mode 100644 v1/scad/objects/generic/extension-clip-25mm.scad rename v1/scad/objects/generic/{extension-twist-ccw-25mm.scad => extension-twist-25mm.scad} (58%) delete mode 100644 v1/scad/objects/generic/extension-twist-cw-25mm.scad diff --git a/v1/scad/lib/generic/extension-clip.scad b/v1/scad/lib/generic/extension-clip.scad deleted file mode 100644 index 384beb8..0000000 --- a/v1/scad/lib/generic/extension-clip.scad +++ /dev/null @@ -1,43 +0,0 @@ -use - -module extension_clip(h) { - assert(h >= 14, "minimum extension_clip height is 14"); - - // Bottom spoolmount - spoolmount(); - - // Top spoolmount - translate([0, 0, h - 5]) - spoolmount(); - - translate([0, 0, 4]) { - // Inner center cylinder - difference() { - cylinder(h=h - 8, r=29, $fn=200); - - translate([0, 0, -1]) - cylinder(h=h - 6, r=25.1, $fn=200); - } - - difference() { - cylinder(h=h - 8, r=42, $fn=200); - - translate([0, 0, -1]) - cylinder(h=h - 6, r=37, $fn=200); - } - } - - // Expansion to support top spoolmount - translate([0, 0, h - 9]) - rotate_extrude($fn=200) - polygon(points=[ - [29, 0], - [29, 5], - [37, 5], - [37, 0], - [33, 4], - [29, 0], - ]); -} - -extension_clip(h=25); diff --git a/v1/scad/lib/generic/extension-twist.scad b/v1/scad/lib/generic/extension-twist.scad index 2b6b9c2..3cc5e21 100644 --- a/v1/scad/lib/generic/extension-twist.scad +++ b/v1/scad/lib/generic/extension-twist.scad @@ -1,6 +1,6 @@ use -module extension_twist(h, twist) { +module extension_twist(h) { assert(h >= 10, "minimum extension_twist height is 10"); // Bottom spoolmount twist @@ -8,7 +8,7 @@ module extension_twist(h, twist) { // Top spoolmount twist translate([0, 0, h]) - rotate([180, 0, twist]) + rotate([180, 0, 90]) spoolmount_twist(); difference() { @@ -27,4 +27,4 @@ module extension_twist(h, twist) { } } -extension_twist(h=25, twist=30); \ No newline at end of file +extension_twist(h=25); \ No newline at end of file diff --git a/v1/scad/lib/generic/spoolmount-bump.scad b/v1/scad/lib/generic/spoolmount-bump.scad new file mode 100644 index 0000000..c5d160b --- /dev/null +++ b/v1/scad/lib/generic/spoolmount-bump.scad @@ -0,0 +1,48 @@ +module spoolmount_hook() { + difference() { + // Hook body + linear_extrude(9) { + polygon(points=[ + [0, 0], + [0, 12], + [1, 12], + [3, 10], + [7, 10], + [9, 12], + [10, 12], + [10, 8], + [8, 6], + [5, 6], + [5, 2], + [3, 2], + [1, 0], + ]); + + translate([8, 8]) + circle(r=2, $fn=50); + } + + // Corner cutouts + { + translate([9, 10.5, -0.5]) + rotate([90, 0, 90]) + linear_extrude(3, center=true) + polygon(points=[ + [0, 0], + [2, 0], + [2, 2], + ]); + + translate([9, 10.5, 9.5]) + rotate([-90, 0, 90]) + linear_extrude(3, center=true) + polygon(points=[ + [0, 0], + [2, 0], + [2, 2], + ]); + } + } +} + +spoolmount_hook(); \ No newline at end of file diff --git a/v1/scad/lib/generic/spoolmount-twist.scad b/v1/scad/lib/generic/spoolmount-twist.scad index 4115979..e0071dc 100644 --- a/v1/scad/lib/generic/spoolmount-twist.scad +++ b/v1/scad/lib/generic/spoolmount-twist.scad @@ -30,7 +30,7 @@ module spoolmount_twist() { } } - for (a = [45 : 90 : 335]) { + for (a = [45 : 180 : 335]) { // Slide bump entrance cutout rotate([0, 0, a - 13]) rotate_extrude(angle=26, $fn=200) @@ -43,8 +43,8 @@ module spoolmount_twist() { ]); // Slide cutout - rotate([0, 0, a - 40]) - rotate_extrude(angle=80, $fn=200) + rotate([0, 0, a - 55]) + rotate_extrude(angle=110, $fn=200) translate([23, 0, 0]) polygon(points=[ [3, 0.5], @@ -66,7 +66,7 @@ module spoolmount_twist() { cylinder(h=4, r=25, $fn=200); for (a = [45 : 90 : 335]) { - for (o = [-19.15, 19.15]) { + for (o = [-34.15, 34.15]) { rotate([0, 0, a + o]) translate([0, 23.9, 0]) { translate([0, 0, 1]) @@ -83,9 +83,9 @@ module spoolmount_twist() { } // Rounded cutouts - for (a = [45 : 90 : 335]) { - for (o = [-40, -20, 20, 40]) { - rotate([0, 0, a + o]) + for (a = [45 : 180 : 335]) { + for (o = [-55, -35, 35, 55]) { + rotate([0, 0, a + 90 + o]) translate([0, 30.5, 0]) scale([0.2, 1.0, 1.0]) rotate_extrude($fn=200) diff --git a/v1/scad/lib/generic/spoolmount.scad b/v1/scad/lib/generic/spoolmount.scad index a8b0904..25c855f 100644 --- a/v1/scad/lib/generic/spoolmount.scad +++ b/v1/scad/lib/generic/spoolmount.scad @@ -42,7 +42,16 @@ module spoolmount(h=5) { [-4, 2], [-4, -1], ]); - + + rotate([90, 0, 90]) + linear_extrude(4, center=true) + polygon(points=[ + [-6, -1], + [-4, 1], + [4, 1], + [6, -1], + ]); + // Access cutout if (h > 5) { difference() { @@ -78,7 +87,7 @@ module spoolmount(h=5) { intersection() { cylinder(h=5, r=25.1, $fn=200); - for (a = [45 : 90 : 335]) { + for (a = [45 : 180 : 335]) { // Locking bumps rotate([0, 0, a - 10]) rotate_extrude(angle=20, $fn=200) @@ -93,7 +102,7 @@ module spoolmount(h=5) { // Rounded bump ends for (o = [-10, 10]) { - rotate([0, 0, a + o]) + rotate([0, 0, a + 90 + o]) translate([0, 30.1, 0]) scale([0.2, 1.0, 1.0]) rotate_extrude($fn=200) diff --git a/v1/scad/objects/generic/extension-clip-25mm.scad b/v1/scad/objects/generic/extension-clip-25mm.scad deleted file mode 100644 index 74e364a..0000000 --- a/v1/scad/objects/generic/extension-clip-25mm.scad +++ /dev/null @@ -1,3 +0,0 @@ -use <../../lib/generic/extension-clip.scad> - -extension_clip(h=25); \ No newline at end of file diff --git a/v1/scad/objects/generic/extension-twist-ccw-25mm.scad b/v1/scad/objects/generic/extension-twist-25mm.scad similarity index 58% rename from v1/scad/objects/generic/extension-twist-ccw-25mm.scad rename to v1/scad/objects/generic/extension-twist-25mm.scad index 5643b47..487cf4c 100644 --- a/v1/scad/objects/generic/extension-twist-ccw-25mm.scad +++ b/v1/scad/objects/generic/extension-twist-25mm.scad @@ -1,3 +1,3 @@ use <../../lib/generic/extension-twist.scad> -extension_twist(h=25, twist=30); \ No newline at end of file +extension_twist(h=25); \ No newline at end of file diff --git a/v1/scad/objects/generic/extension-twist-cw-25mm.scad b/v1/scad/objects/generic/extension-twist-cw-25mm.scad deleted file mode 100644 index 3ffeb98..0000000 --- a/v1/scad/objects/generic/extension-twist-cw-25mm.scad +++ /dev/null @@ -1,3 +0,0 @@ -use <../../lib/generic/extension-twist.scad> - -extension_twist(h=25, twist=-30); \ No newline at end of file