diff --git a/outdoor/cordHook.scad b/outdoor/cordHook.scad new file mode 100644 index 0000000..8930a51 --- /dev/null +++ b/outdoor/cordHook.scad @@ -0,0 +1,62 @@ +// hook designed to hook small diameter cord and be as snagless as possible +// strategy: +// make profile without hook or loop +// make oversize slot +// minkowski sphere to bring slot size down +// cut hole and trim top and bottom + +// closed hole diameter +cdLoop = 3.1; +// hook slot width +cdHook = 2; +// slot section od +bigD = 20; +// closed hole section od +smallD = 9; +// slot angle +degSlot = 40; +// thickness +thick = 5; +// minkowski sphere radius, fillet rad sort of +filletRad = 2; +// sets side bulge. adds strength and beauty. low value will cause failed print. tested at 0.4 +bulbousness = 0.4; +// 40+ faces for print but it makes minkowski very slow in editing +$fn = 45; + +// diff for slicing off top bottom and loop hole +difference(){ + //trace sphere for chamfering around union of two cylinders with slot + minkowski(){ + //two cylinders with a slot cut at around ? degrees + difference(){ + union(){ + cylinder(d = bigD, thick * bulbousness, center = true); + // center starts origin, so translate up sin30 and right cos30 + translate([cos(degSlot) * bigD/2, sin(degSlot) * bigD/2, 0]){ + cylinder(d = smallD, thick * bulbousness, center = true); + } + } + // slot: + translate([50, 0, 0]){ + cube([100, cdHook + 2 * filletRad, 2], center = true); + } + // rounded slot pocket: + cylinder(d = cdHook + 2 * filletRad, 2, center = true); + } // diff + + sphere(r = filletRad); + + } + + + // minus: + translate([cos(degSlot) * bigD/2, sin(degSlot) * bigD/2, 0]){ + cylinder(d = cdLoop, 55, center = true); + } + for (dir = [-1, 1]) translate([0, 0, dir * (thick / 2 + 1)]){ + cube([99, 99, 2], center = true); + } + + } + diff --git a/outdoor/cordHook.stl b/outdoor/cordHook.stl new file mode 100644 index 0000000..9b7d336 Binary files /dev/null and b/outdoor/cordHook.stl differ