X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=sewing-table.scad.m4;h=b09d59a53d0a615d63453e7c245081fb62c294a5;hb=c29f6b29a090870aec993b5da29bcbb895af5850;hp=6e3275515af08083bd26ead3a967c2f767a8b30c;hpb=b911b865a383d58a3ae5a3df866869e1963e099d;p=reprap-play.git diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index 6e32755..b09d59a 100644 --- a/sewing-table.scad.m4 +++ b/sewing-table.scad.m4 @@ -19,6 +19,12 @@ screw_big_len = 4.0; round_edge_rad = 2.0; interlock_dia = 10; +interlock_fine = 0.66; + +interlock_fine_slope = 1.0; +interlock_fine_lenslop = 1.0; + +demo_slop = 0.1; // calculated @@ -44,6 +50,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(){ @@ -149,18 +157,40 @@ module InterlockEdgePlan(negative, nlobes, length) { InterlockLobePlan(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; + protr = interlock_fine + interlock_sq_adj; + + z2 = -tile_th/2; + z1 = -tile_th/2 - protr / interlock_fine_slope; + z3 = -tile_th/2 + protr / interlock_fine_slope; INREFFRAME(left_cnr, right_cnr) { - translate([0, 0, plusth]){ - mirror([0,0,1]){ - linear_extrude(height=tile_th+plusth*2, convexity=10){ - InterlockEdgePlan(negative, nlobes, length); - } - } + for (vsect = [ // zs0 zs1 ys0, ys1 + [ -tile_th-plusth, plusth, 0, 0], + [ z1, z2, 0, protr], + [ z2, z3, protr, 0], + ]) { + zs0 = vsect[0]; + zs1 = vsect[1]; + zsd = zs1-zs0; + ys0 = vsect[2]; + ys1 = vsect[2]; + ysd = ys1-ys0; + multmatrix([ [ 1,0,0,0 ], + [ 0,1,0,0 ], + [ 0,0,1,zs0 ], + [ 0,0,0,1 ] ]) + linear_extrude(height=zsd, convexity=10) + InterlockEdgePlan(negative, nlobes, length); } } } @@ -201,7 +231,7 @@ module TestDemo(){ ////toplevel translate([ -thehd[0], 0 ]) color("blue") TestPiece1(); - translate([ +thehd[0], 0 ]) + translate([ +thehd[0] + demo_slop, 0 ]) TestPiece2(); } @@ -224,12 +254,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 @@ -239,6 +270,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]); @@ -247,8 +279,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();