chiark / gitweb /
air-hockey-puck: wip
[reprap-play.git] / salter-scale-hook.scad
index afacf9fbf3b239903fc00e39e144c7297247a31a..3a8cfa354c0ca1642c4415a734a2b2da4251efec 100644 (file)
@@ -9,20 +9,36 @@ screw_head_dia = 8.2 + 1.0;
 rod_offset = 14 + 2;
 mainheight = 25;
 width = 40;
+rearthick = 4;
+screw_head_depth = 2;
+
+// calculated
+
+d = rod_dia/2 + thick/2;
+yminc = -d;
+ymin = yminc-thick/2;
+ymaxc = mainheight;
+ymax = mainheight+thick/2;
+
+cutdepth = rod_offset - rod_dia/2 - rearthick;
+
+cut_z0 = screw_head_dia/2;
+cut_z1 = width/2 - rearthick;
+
+cutslopez = cutdepth * 0.5;
 
 module C() {
   circle(r = thick/2, $fn=30);
 }
 
 module Profile() {
-  d = rod_dia/2 + thick/2;
   e = rod_offset;
   hull(){
     translate([-d, 0]) C();
     translate([-d,-d]) C();
   }
   difference(){
-    rectfromto([-d,-d-thick/2], [e,0]);
+    rectfromto([-d,ymin], [e,0]);
     circle(r= rod_dia/2, $fn=50);
   }
   hull(){
@@ -34,9 +50,59 @@ module Profile() {
 }
 
 module CutProfile(){
-  
+  hull(){
+    for (x = [rod_dia/2 + thick/2, 30]) {
+      for (y= [yminc,ymaxc] ) {
+       translate([x,y]) circle(r = (thick-rearthick)/2, $fn=20);
+      }
+    }
+  }
 }
 
-module Demo(){
+module ProfileDemo(){
   Profile();
+  color("red") translate([0,0,1]) CutProfile();
+}
+
+module Cut(less){
+  translate([0,0, cut_z0 + less])
+    linear_extrude(height = cut_z1 - cut_z0 - less*2)
+    CutProfile();
 }
+
+module ScrewHole(){
+  xd =  (screw_head_dia-screw_dia)/2;
+  translate([0,0,-50])
+    cylinder(h=100, r= screw_dia/2, $fn=20);
+  hull(){
+    translate([0,0,-xd])
+      cylinder(h=1, r= screw_dia/2, $fn=50);
+    cylinder(h=20, r= screw_head_dia/2, $fn=50);
+  }
+}
+
+module Hook(){
+  difference(){
+    translate([0,0, -width/2])
+      linear_extrude(height=width) Profile();
+
+    for (m=[0,1]) {
+      mirror([0,0,m]) {
+       hull(){
+         Cut(cutslopez);
+         translate([cutdepth,0,0]) Cut(0);
+       }
+      }
+    }
+
+    translate([rod_dia/2 + screw_head_depth,
+              ymaxc - screw_head_dia,
+              0]) {
+      rotate([0,-90,0])
+       ScrewHole();
+    }
+  }
+}
+
+//ProfileDemo();
+Hook();