chiark / gitweb /
sewing-table: interlock
[reprap-play.git] / sewing-table.scad.m4
index 1fa1df07fe73d605e1f01095bd45c74ecaf73186..eb7dc2a710aefa6aedc1e534f7cbc3ad0047c697 100644 (file)
@@ -17,6 +17,8 @@ screw_big_len = 4.0;
 
 round_edge_rad = 2.0;
 
+interlock_dia = 10;
+
 // calculated
 
 ply_edge_hole_dist = ply_edge_min + ply_hole_dia/2;
@@ -27,6 +29,9 @@ hole_slop = (ply_hole_dia - post_dia)/2;
 tile_hard_edge_hole_dist = ply_edge_hole_dist + hole_slop;
 thehd = [ tile_hard_edge_hole_dist, tile_hard_edge_hole_dist ];
 
+interlock_rad = interlock_dia/2;
+interlock_negative_rad = interlock_rad + 0.25;
+
 module Post(){
   mirror([0,0,1]) {
     difference(){
@@ -97,7 +102,29 @@ module RoundLeftCorner(this_post, right_post) {
   }
 }
 
+module InterlockCore(r) {
+  dx = sqrt(3) * r;
+  $fn= 80;
+  translate([0, -thehd[0], 1]){
+    mirror([0,0,1]){
+      linear_extrude(height=tile_th+2){
+       circle(r=r);
+       difference(){
+         translate([-dx, -0.1])
+           square([ dx*2, r/2 + 0.1 ]);
+         for (xi = [-1, 1]) {
+           translate([ xi*dx, r ])
+             circle(r=r);
+         }
+       }
+      }
+    }
+  }
+}
+
 module InterlockNegative(this_post, right_post) {
+  INREFFRAME(this_post, right_post)
+    InterlockCore(interlock_negative_rad);
 }
 
 module TestPiece1(){