chiark / gitweb /
sewing-table: PostTestPiece: swap x direction
[reprap-play.git] / pull-cord-keeper.scad
index f4d21c0c9ea9a34842b0129dd87d58080ec4d082..c8655c9842f942882addc05c8ce758eccbd62858 100644 (file)
@@ -11,6 +11,8 @@ blockwidth = hcentredist*2 + 6;
 
 height = 20;
 
+roundedgedia = 7.5;
+
 ziglen = hcentredist/2;
 
 feedxgap = 5;
@@ -20,8 +22,12 @@ ribsgap = 1;
 ribdepth = 3;
 ribheight = 4;
 
+backxgap = 1;
+
 blockoverlapcnr = 5;
 
+screwholedia = 4 + 0.5;
+
 module Oval(centredist, rad) {
   hull() {
     translate([-centredist/2,0,0]) circle(r=rad);
@@ -29,10 +35,20 @@ module Oval(centredist, rad) {
   }
 }  
 
+module VExtrude(){
+  translate([0,0, -height/2])
+    linear_extrude(height=20)
+    children(0);
+}
+
+module OuterOval(){
+  Oval(hcentredist, houterrad);
+}
+
 module Hoop(){
   difference(){
     hull(){
-      Oval(hcentredist, houterrad);
+      OuterOval();
       translate([0, (blockdepth + hoopthick)/2 + hinnerrad])
        square([blockwidth,
                blockdepth + hoopthick],
@@ -42,10 +58,36 @@ module Hoop(){
   }
 }
 
+module RoundEdges(){
+  intersection(){
+    VExtrude()
+      OuterOval();
+
+    for (xi=[-1,1]) {
+      hull(){
+       for (yi=[-1,1]) {
+         translate([xi * (hcentredist/2 + hinnerrad),
+                    houterrad,
+                    yi * (height/2 - roundedgedia / 4 * sqrt(2))])
+           rotate([90,0,0])
+           cylinder(r=roundedgedia/2, h=houterrad*2, $fn=20);
+       }
+      }
+    }
+  }
+}
+
 module Positive(){
-  translate([0,0, -height/2])
-    linear_extrude(height=20)
-    Hoop();
+  difference(){
+    VExtrude()
+      Hoop();
+
+    rotate([90,0,0])
+      translate([0,0,-50])
+      cylinder(r=screwholedia/2, h=100);
+  }
+
+  RoundEdges();
 }
 
 module Ribs(){
@@ -71,10 +113,19 @@ module Division(cutmore) {
        cube([100, 100, 50]);
     }
   }
-  translate([blockwidth/2 - blockoverlapcnr, -50, -50])
+  translate([blockwidth/2 - blockoverlapcnr + -cutmore*backxgap/2,
+            -1,
+            -50])
     cube([100, 100, 100]);
 
-  translate([50, houterrad + blockdepth/2 + -cutmore*ribsgap, 0])
+  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();
@@ -104,14 +155,35 @@ module B(){
 
 module Demo(){
   color("red") A();
-//  color("blue") B();
+  color("blue") B();
+}
+
+module APrint(){ ////toplevel
+  rotate([0,180,0])
+    A();
+}
+
+module BPrint(){ ////toplevel
+  B();
+}
+
+module Kit(){ ////toplevel
+  translate([0, hinnerrad, 0])
+    APrint();
+  rotate([0,0,180])
+    BPrint();
 }
 
 //Ribs();
 //Demo();
 
-A();
+//A();
 //B();
 //%Division(+1);
 
+//Hoop();
+
 //Demo();
+//BPrint();
+
+//Kit();