chiark / gitweb /
pull-cord-keeper: before screw hole
[reprap-play.git] / pull-cord-keeper.scad
index b7a6aa7e6a9a929b6f9bba2c4b0a29bdcf93df6e..258e3e87d6389a6fdf41087a67a774b712fa89cd 100644 (file)
@@ -9,6 +9,21 @@ hcentredist = 10;
 blockdepth = 5;
 blockwidth = hcentredist*2 + 6;
 
+height = 20;
+
+ziglen = hcentredist/2;
+
+feedxgap = 5;
+feedzgap = 5;
+ribsgap = 1;
+
+ribdepth = 3;
+ribheight = 4;
+
+backxgap = 1;
+
+blockoverlapcnr = 5;
+
 module Oval(centredist, rad) {
   hull() {
     translate([-centredist/2,0,0]) circle(r=rad);
@@ -18,17 +33,98 @@ 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 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 Division(cutmore) {
+  mirror([0,0,1]) {
+    translate([0, 0, -cutmore*feedzgap/2]) {
+      translate([-ziglen + -cutmore*feedxgap/2, -100, 0])
+       cube([100, 100, 50]);
+    }
+  }
+  translate([blockwidth/2 - blockoverlapcnr + -cutmore*backxgap/2,
+            -1,
+            -50])
+    cube([100, 100, 100]);
+
+  translate([ziglen + -cutmore*feedxgap/2,
+            -50,
+            -50])
+    cube([100, 51, 100]);
+
+  translate([50,
+            hinnerrad/2 + houterrad/2 + blockdepth/2 + -cutmore*ribsgap/2,
+            0])
+    rotate([-90,0,90])
+    linear_extrude(height=100)
+    Ribs();
 }
 
-Positive();
+module SDemo(){
+  //difference(){
+  %  Positive();
+  //  Division(0);
+  //}
+  Division(-1);
+}
+
+module A(){
+  difference(){
+    Positive();
+    Division(+1);
+  }
+}
+
+module B(){
+  intersection(){
+    Positive();
+    Division(-1);
+  }
+}
+
+module Demo(){
+  color("red") A();
+  color("blue") B();
+}
+
+//Ribs();
+//Demo();
+
+//A();
+//B();
+//%Division(+1);
+
+//Hoop();
+
+Demo();