X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=sewing-table.scad.m4;h=7e6afbf7b3f378371e4d7b06ef7d1aefbf2ddd6e;hp=9382c3950043f0279aed1a733ecb8fd750e6921b;hb=3fa84e83e48d39a12f266b79ed2463ce44bb186c;hpb=9b94833dacd9a3f254cc20ec4ef8dccca0f748d6 diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index 9382c39..7e6afbf 100644 --- a/sewing-table.scad.m4 +++ b/sewing-table.scad.m4 @@ -19,6 +19,11 @@ screw_big_len = 4.0; round_edge_rad = 2.0; interlock_dia = 10; +interlock_fine = 0.66; + +interlock_fine_lenslop = 1.0; + +demo_slop = 0.1; // calculated @@ -44,6 +49,8 @@ thehd_br = -thehd_tl; interlock_rad = interlock_dia/2; interlock_negative_rad = interlock_rad + 0.125; +interlock_sq_adj = 0.2; // arbitrary + module Post(){ mirror([0,0,1]) { difference(){ @@ -121,11 +128,14 @@ module RoundLeftCorner(this_cnr, right_cnr) { } } -module InterlockLobePlan(r, ymir) { +module InterlockLobePlan(negative) { + r = negative ? interlock_negative_rad : interlock_rad; + ymir = negative ? 0 : 1; + dx = sqrt(3) * r; $fn= 80; translate([thehd[0], 0]){ - mirror([0,ymir,0]){ + mirror([0,ymir]){ circle(r=r); difference(){ translate([-dx, -0.1]) @@ -139,30 +149,31 @@ module InterlockLobePlan(r, ymir) { } } -module InterlockLobeCore(negative=0) { - r = negative ? interlock_negative_rad : interlock_rad; - plusth = negative * 1.0; - ymir = negative ? 0 : 1; - translate([0, 0, plusth]){ - mirror([0,0,1]){ - linear_extrude(height=tile_th+plusth*2, convexity=10){ - InterlockLobePlan(r, ymir); - } +module InterlockEdgePlan(negative, nlobes, length) { + for (lobei = [ 0 : nlobes-1 ]) { + lobex = (length - thehd[0]*2) * (lobei ? lobei / (nlobes-1) : 0); + translate([lobex, 0, 0]) { + InterlockLobePlan(negative); } } -} -module InterlockLobe(this_cnr, right_cnr, negative=0) { - INREFFRAME(this_cnr, right_cnr) - InterlockLobeCore(negative); + iadj = interlock_sq_adj; + slotshorter = negative ? 0 : interlock_fine_lenslop; + mirror([0, negative]) + translate([slotshorter, iadj]) + square([length - slotshorter*2, interlock_fine + iadj*2]); } module InterlockEdge(left_cnr, right_cnr, negative=0, nlobes=2) { + plusth = negative * 1.0; + INREFFRAME(left_cnr, right_cnr) { - for (lobei = [ 0 : nlobes-1 ]) { - lobex = (length - thehd[0]*2) * (lobei ? lobei / (nlobes-1) : 0); - translate([lobex, 0, 0]) - InterlockLobeCore(negative); + translate([0, 0, plusth]){ + mirror([0,0,1]){ + linear_extrude(height=tile_th+plusth*2, convexity=10){ + InterlockEdgePlan(negative, nlobes, length); + } + } } } } @@ -203,7 +214,7 @@ module TestDemo(){ ////toplevel translate([ -thehd[0], 0 ]) color("blue") TestPiece1(); - translate([ +thehd[0], 0 ]) + translate([ +thehd[0] + demo_slop, 0 ]) TestPiece2(); } @@ -226,12 +237,13 @@ module Tile02(){ ////toplevel posts = Rectangle_corners2posts(c); difference(){ TileBase(c[0], c[2]); + InterlockEdge(c[1], c[2], 1); } Posts(posts); RoundEdge(c[0], c[1]); RoundEdge(c[3], c[0]); RoundLeftCorner(c[0], c[1]); - InterlockEdge(c[2], c[3], 0, 2); + InterlockEdge(c[2], c[3], 0); } module Tile12(){ ////toplevel @@ -241,6 +253,7 @@ module Tile12(){ ////toplevel posts = Rectangle_corners2posts(c); difference(){ TileBase(c[0], c[2]); + InterlockEdge(c[0], c[1], 1); } Posts(posts); RoundEdge(c[2], c[3]); @@ -249,8 +262,8 @@ module Tile12(){ ////toplevel } module Demo(){ ////toplevel - color("blue") Tile12(); - color("red") Tile02(); + translate(demo_slop*[-2,1]) color("blue") Tile12(); + translate(demo_slop*[-2,0]) color("red") Tile02(); } //TestPiece1();