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=38638ac0f5f15bd0b2786a9f6d9601e396c19abb;hp=40ec1be2524399e6d80c9f0546707406d848ed0f;hb=1e024a80ef18fd8f0aac56a94634d6a2319966b6;hpb=4982e66d15e9dcc3aec326dfe480cdec31aaaf91 diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index 40ec1be..38638ac 100644 --- a/sewing-table.scad.m4 +++ b/sewing-table.scad.m4 @@ -139,7 +139,10 @@ module InterlockLobePlan(r, ymir) { } } -module InterlockLobeCore(r, plusth, 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){ @@ -151,9 +154,17 @@ module InterlockLobeCore(r, plusth, ymir) { module InterlockLobe(this_cnr, right_cnr, negative=0) { INREFFRAME(this_cnr, right_cnr) - InterlockLobeCore(negative ? interlock_negative_rad : interlock_rad, - negative ? 1 : 0, - negative ? 0 : 1); + InterlockLobeCore(negative); +} + +module InterlockEdge(left_cnr, right_cnr, negative=0, nlobes=2) { + INREFFRAME(left_cnr, right_cnr) { + for (lobei = [ 0 : nlobes-1 ]) { + lobex = (length - thehd[0]*2) * lobei / (nlobes-1); + translate([lobex, 0, 0]) + InterlockLobeCore(negative); + } + } } function TestPiece_holes2corners(holes) = @@ -188,7 +199,7 @@ module TestPiece2(){ ////toplevel InterlockLobe(corners[3], corners[0]); } -module Demo(){ ////toplevel +module TestDemo(){ ////toplevel translate([ -thehd[0], 0 ]) color("blue") TestPiece1(); @@ -196,6 +207,52 @@ module Demo(){ ////toplevel TestPiece2(); } +function Rectangle_corners(c0, sz) = + [ c0 + [ 0, 0 ], + c0 + [ sz[0], 0 ], + c0 + [ sz[0], sz[1] ], + c0 + [ 0, sz[1] ] ]; + +function Rectangle_corners2posts(c) = + [ c[0] + thehd_tr, + c[1] + thehd_tl, + c[2] + thehd_bl, + c[3] + thehd_br ]; + +module Tile02(){ ////toplevel + sz = [100,170]; + c0 = -sz; + c = Rectangle_corners(c0, sz); + posts = Rectangle_corners2posts(c); + difference(){ + TileBase(c[0], c[2]); + } + Posts(posts); + RoundEdge(c[0], c[1]); + RoundEdge(c[3], c[0]); + RoundLeftCorner(c[0], c[1]); + InterlockEdge(c[2], c[3], 0, 2); +} + +module Tile12(){ ////toplevel + sz = [100,250]; + c0 = [-sz[0], 0]; + c = Rectangle_corners(c0, sz); + posts = Rectangle_corners2posts(c); + difference(){ + TileBase(c[0], c[2]); + } + Posts(posts); + RoundEdge(c[2], c[3]); + RoundEdge(c[3], c[0]); + RoundLeftCorner(c[2], c[3]); +} + +module Demo(){ ////toplevel + color("blue") Tile12(); + color("red") Tile02(); +} + //TestPiece1(); //TestPiece2(); //Demo();