chiark / gitweb /
air-hockey-puck: wip
[reprap-play.git] / rope-adjuster.scad
index f181493dc2ee7911f743f2a7f517e58c469a618a..fa4f591809d4c2571ebc28a6803275e276a6298e 100644 (file)
@@ -3,16 +3,22 @@
 include <utils.scad>
 
 hole_dia = 10;
-around_hole = 5;
-thick = 4;
+around_hole = 4;
+thick = 3;
 lever_len = 50;
 
 teeth_n = 4;
 teeth_bite = 4;
 teeth_pitch = 4;
 teeth_gap = 3;
-teeth_back = 2;
+teeth_back = 1;
 teeth_height = 12;
+teeth_chamfer = 3;
+
+// calculated
+
+teeth_x_mid = lever_len/2 - hole_dia/2 - teeth_bite - teeth_gap*1.5;
+teeth_height_total = teeth_height + teeth_chamfer;
 
 module Circles(r) {
   for (x = [-1,+1] * 0.5 * lever_len) {
@@ -27,16 +33,22 @@ module Plan() {
       Circles(hole_dia/2 + around_hole);
     }
     Circles(hole_dia/2);
+    translate([ teeth_x_mid - teeth_bite - teeth_back - teeth_gap - hole_dia/2,
+               0 ])
+      circle(hole_dia/2);
   }
 }
 
 module TeethPlan(){
   translate([
-            lever_len/2 - hole_dia/2 - teeth_bite - teeth_gap*1.5,
+            teeth_x_mid,
             -0.5 * teeth_n * teeth_pitch,
             ]) {
     for (m=[0,1]) {
       mirror([m,0]) {
+       translate([ teeth_bite + teeth_gap/2, 0 ])
+         rectfromto([ -0.1, 0 ],
+                    [ teeth_back, teeth_n * teeth_pitch ]);
        for (i= [ 0: teeth_n-1 ]) {
          translate([teeth_gap/2, teeth_pitch*i])
            polygon([[ 0,0 ],
@@ -51,8 +63,15 @@ module TeethPlan(){
 module Adjuster(){
   linextr(0,thick)
     Plan();
-  linextr(thick - 0.1, thick + teeth_height)
-    TeethPlan();
+  difference(){
+    linextr(thick - 0.1, thick + teeth_height_total)
+      TeethPlan();
+    translate([ teeth_x_mid, 0, thick + teeth_height_total + 1])
+      linextr_y_xz(-teeth_pitch * teeth_n,
+                +teeth_pitch * teeth_n)
+      rotate(45)
+      square(sqrt(2) * (teeth_gap/2 + teeth_chamfer + 1), center=true);
+  }
 }
 
 Adjuster();