chiark / gitweb /
sewing-table: Add small gaps to Demos
[reprap-play.git] / topeak-seatstay-lock.scad
index 73382e7b6572c3ca57040e44c61d4e8150dd18fd..072a55769e298641432b12df9db8d3a6781d0fc5 100644 (file)
@@ -1,20 +1,20 @@
 // -*- C -*-
 
-pump_dia = 27 + 0.5;
+pump_dia = 27 + 0.9;
 seatstay_mindia = 14 + 0.5;
-seatstay_maxdia = 19 + 0.5;
+seatstay_maxdia = 19 + 0.7;
 pump_seatstay_gap = 12.3;
 pump_seatstay_delta = 0.1;
+pump_ridge_width = 8 + 2.0;
 
-body_thick_x = 5;
-body_thick_y = 5;
+body_thick = 5;
 
-pin_workdepth = 16;
-pin_width = 11 + 0.5;
-pin_thick = 3 + 0.6;
+pin_workdepth = 16 - 1.0;
+pin_width = 11 + 1.0;
+pin_thick = 3 + 0.7;
 pin_base = 25;
 
-lock_manouvre_thick = 3.5 + 0.5;
+lock_manouvre_thick = 3.7 + 0.6;
 lock_manouvre_len = 18;
 lock_hang_width = 17.5;
 lock_manouvre_len_smaller = 13;
@@ -22,76 +22,90 @@ lock_manouvre_len_smaller = 13;
 body_depth_each = 5;
 clatter_gap = 0.5;
 
+roof_extent = 7;
+roof_thick = 2;
+
 // fudgeish
 
+cut_rotation = 2;
 holes_rotation = 9;
-pin_offset = 7;
+pin_y_offset = 5.5;
+pin_x_offset = 0.5;
+ridge_rotation = 8.5;
+lock_hang_ratio = 7;
 
 // computed
 
 body_depth = pin_width + body_depth_each*2;
 
-module Holes(){
+module Holes(forbody=false){
   translate([0, -pump_dia/2]);
   rotate(-holes_rotation){
     translate([-(pump_seatstay_gap/2 + pump_dia/2),
-              0])
-      circle(r=pump_dia/2);
+              0]) {
+      if (!forbody)
+       rotate(-ridge_rotation + holes_rotation)
+         translate([-50, -pump_ridge_width/2])
+         square([50, pump_ridge_width]);
+      circle(r=pump_dia/2, $fn=80);
+    }
     translate([+(pump_seatstay_gap/2 + seatstay_mindia/2),
               pump_dia/2 -seatstay_maxdia/2 -pump_seatstay_delta]) {
       hull(){
        for (ud=[-1,1])
          translate([0, ud * (seatstay_maxdia-seatstay_mindia)/2])
-           circle(r=seatstay_mindia/2);
+           circle(r=seatstay_mindia/2, $fn=50);
       }
     }
   }
 }
 
 module BodyPlan(){
-  hull(){
-    for(x=[-1,1]) for(y=[-1,1])
-      translate([x*body_thick_x, y*body_thick_y])
-       Holes();
+   minkowski(){
+    circle(body_thick);
+    hull()
+      Holes(true);
   }
 }
 
 module Body(){
-  translate([0,0,-body_depth/2])
+  translate([0,0,body_depth/2])mirror([0,0,1]){
     linear_extrude(height=body_depth){
-    difference(){
-      BodyPlan();
-      Holes();
+      difference(){
+       BodyPlan();
+       Holes();
+      }
+    }
+    linear_extrude(height=roof_thick){
+      difference(){
+       hull(){
+         BodyPlan();
+         translate([0,-roof_extent,0]) BodyPlan();
+       }
+       Holes();
+      }
     }
   }
 }
 
 module Pin(){
-  translate([0, pin_offset, 0]) rotate([0,90,0]){
+  translate([pin_x_offset, pin_y_offset, 0]) rotate([0,90,0]){
     translate([0, 0, -pin_thick/2])
       linear_extrude(height=pin_thick){
       translate([-pin_base/2, 0]) square([pin_base, 50]);
       translate([-pin_width/2, -100]) square([pin_width, 101]);
     }
     hull() for (d=[0,10]) {
-      translate([d*2,-d,0])
+      translate([d*lock_hang_ratio,-d,0])
        translate([-lock_manouvre_thick/2,
                   -pin_workdepth-100,
                   -lock_manouvre_len_smaller])
        cube([lock_manouvre_thick, 100,
              lock_manouvre_len + lock_manouvre_len_smaller]);
     }
-    translate([-lock_manouvre_thick/2, -pin_workdepth-50,
-              -lock_hang_width/2])
-      cube([50, 50, lock_hang_width]);
   }
 }
 
-module Demo(){
-  %Body();
-  Pin();
-}
-
 module All(){
   difference(){
     Body();
@@ -102,17 +116,20 @@ module All(){
 module Piece(pc,interval){
   translate([0,-pc*interval,0])
     intersection(){
-    mirror([0,pc,0])
+      rotate([0,0,pc*180-cut_rotation])
       translate([-200,clatter_gap/2,-200]) cube([400,400,400]);
     All();
   }
 }
 
+module PiecePrint(pc){
+  rotate([0,0,90]) rotate([0,180,0])
+    Piece(pc,4);
+}
+
 module PiecesPrint(){
-  rotate([0,180,0])
-    for (pc=[0,1]){
-      Piece(pc,4);
-    }
+  PiecePrint(0);
+  PiecePrint(1);
 }
 
 module Demo(){
@@ -126,3 +143,5 @@ module Demo(){
 //Pin();
 //Pieces();
 PiecesPrint();
+//PiecePrint(0);
+//PiecePrint(1);