chiark / gitweb /
filamentspool FilamentCupCup wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Sep 2012 21:32:24 +0000 (22:32 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Sep 2012 21:32:24 +0000 (22:32 +0100)
filamentspool.scad

index c88e30c..01c7a2f 100644 (file)
@@ -10,6 +10,11 @@ ratchettoothheight=5;
 ratchettoothsmoothr=1;
 ratchettoothslope=0.75;
 overlap=0.5;
+cupbigrad=35;
+
+stalklength=50;
+overclipcupgap=5;
+overclipheight=15;
 
 armendwallthick=2.5;
 armendbasethick=1.2;
@@ -17,6 +22,7 @@ armendbasethick=1.2;
 ratchetpawl=ratchetstep-ratchettooth-bigslop*2;
 
 include <doveclip.scad>
+include <cliphook.scad>
 
 channelwidth = prongthick + slop;
 channeldepth = prongwidth + ratchettoothheight;
@@ -51,10 +57,12 @@ module ArmEnd(length=120){
   }
 }
 
-module FilamentHandle(stalklength=50){
+module FilamentHandle(){
   pawlusewidth = ratchetpawl-ratchettoothsmoothr*2;
   mirror([0,1,0]) {
     cube([stalklength, prongwidth, prongthick]);
+    translate([stalklength, prongwidth/2, 0])
+      cylinder(r=prongwidth/2, h=prongthick, $fn=20);
     translate([ratchettoothsmoothr, prongwidth, 0]) {
       minkowski(){
        cylinder($fn=20,r=ratchettoothsmoothr, h=1);
@@ -70,5 +78,38 @@ module FilamentHandle(stalklength=50){
   }
 }
 
+module FilamentCupCup(){
+  xstraight = cupbigrad;
+  linear_extrude(height=prongthick) {
+    FlatArc(0,0, cupbigrad,cupbigrad+prongwidth, 89,271, $fn=80);
+  }
+  for (my=[0,1]) mirror([0,my,0]) {
+    translate([0,cupbigrad,0])
+      cube([xstraight, prongwidth, prongthick]);
+  }
+}
+
+module FilamentCup() {
+  FilamentHandle();
+
+  dx = cupbigrad + prongwidth;
+  dy = cupbigrad + prongwidth + overclipcupgap;
+
+  translate([dx, dy, 0])
+    FilamentCupCup();
+  translate([0, -1, 0]);
+  cube([prongwidth, dy+1, prongthick]);
+
+  propshift = stalklength - overclipheight - prongthick;
+  proptaken = propshift + prongthick;
+  echo(cupbigrad, dx, propshift, proptaken);
+
+  translate([propshift, -1, 0])
+    cube([prongwidth,
+         sqrt(cupbigrad*cupbigrad - proptaken*proptaken)
+         + overclipcupgap + prongthick + 1,
+         prongthick]);
+}
+
 //ArmEnd();
-FilamentHandle();
+FilamentCup();