chiark / gitweb /
pull-cord-keeper: wip
[reprap-play.git] / pull-cord-keeper.scad
index b7a6aa7e6a9a929b6f9bba2c4b0a29bdcf93df6e..ddbcaf6310b8849ff13adebd50b73f858a354f00 100644 (file)
@@ -9,6 +9,17 @@ hcentredist = 10;
 blockdepth = 5;
 blockwidth = hcentredist*2 + 6;
 
+height = 20;
+
+ziglen = hcentredist/2;
+
+feedxgap = 5;
+
+feedzgap = 5;
+
+ribdepth = 2;
+ribheight = 3;
+
 module Oval(centredist, rad) {
   hull() {
     translate([-centredist/2,0,0]) circle(r=rad);
@@ -18,17 +29,53 @@ module Oval(centredist, rad) {
 
 module Hoop(){
   difference(){
-    Oval(hcentredist, houterrad);
+    hull(){
+      Oval(hcentredist, houterrad);
+      translate([0, (blockdepth + hoopthick)/2 + hinnerrad])
+       square([blockwidth,
+               blockdepth + hoopthick],
+              center=true);
+    }
     Oval(hcentredist, hinnerrad);
   }
 }
 
 module Positive(){
-  Hoop();
-  translate([0, (blockdepth + hoopthick)/2 + hinnerrad])
-    square([blockwidth,
-           blockdepth + hoopthick],
-          center=true);
+  translate([0,0, -height/2])
+    linear_extrude(height=20)
+    Hoop();
+}
+
+module Division(biggerpi) {
+  xgap = feedxgap * biggerpi;
+  zgap = feedzgap * biggerpi;
+  mirror([0,0,1])
+    translate([-(ziglen + xgap/2), -100, zgap/2])
+    cube([100, 100, 10]);
+}
+
+module Ribs(){
+  imax = ceil(height*2 / ribheight);
+  for (i=[-imax:imax]) {
+    hull(){
+      translate([-ribdepth/2,
+                ribheight*i,
+                0])
+       polygon([[0,          0],
+                [ribdepth, -ribheight],
+                [ribdepth, +ribheight]]);
+      translate([50, 0])
+       square([1, height*2], center=true);
+    }
+  }
+}          
+
+module Demo(){
+  //difference(){
+  %  Positive();
+  //  Division(0);
+  //}
+  Division(1);
 }
 
-Positive();
+Ribs();