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=0d1e813cdeece80975517fb9663e23cb94ad1e43;hp=e8f6b7a7c68a4e79ee2c6310a0a7200708d48609;hb=851ba08b086f3ab4912212409f62f7cc6a191b81;hpb=e21fc4e825b97f960748962465d8fef8f51fa6df diff --git a/sewing-table.scad.m4 b/sewing-table.scad.m4 index e8f6b7a..0d1e813 100644 --- a/sewing-table.scad.m4 +++ b/sewing-table.scad.m4 @@ -1,6 +1,7 @@ // -*- C -*- include +include ply_th = 18; ply_hole_dia = 15; @@ -30,7 +31,7 @@ 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; +interlock_negative_rad = interlock_rad + 0.125; module Post(){ mirror([0,0,1]) { @@ -54,9 +55,16 @@ module Posts(posts) { module TileBase(botleft_post, topright_post){ botleft = botleft_post - thehd; size = topright_post - botleft_post + thehd * 2; - mirror([0,0,1]) - translate([botleft[0], botleft[1], 0]) - cube([size[0], size[1], tile_th]); + difference(){ + mirror([0,0,1]) + translate([botleft[0], botleft[1], 0]) + cube([size[0], size[1], tile_th]); + translate( [ botleft_post[0], botleft_post[1], -tile_th ] + + 0.5 * [ post_dia, post_dia, 0 ] ) + Commitid_BestCount_M( topright_post-botleft_post + + [0, thehd[0] ] + + [-post_dia,-post_dia] ); + } } m4_dnl INREFFRAME(left_post, right_post, morevars) { body; } @@ -102,11 +110,23 @@ module RoundLeftCorner(this_post, right_post) { } } -module InterlockCore(r) { - translate([0, -thehd[0], 1]){ - mirror([0,0,1]){ - linear_extrude(height=tile_th+2){ - circle(r=r, $fn=40); +module InterlockCore(r, plusth, ymir) { + dx = sqrt(3) * r; + $fn= 80; + translate([0, -thehd[0], plusth]){ + mirror([0,ymir,0]){ + mirror([0,0,1]){ + linear_extrude(height=tile_th+plusth*2, convexity=10){ + 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); + } + } + } } } } @@ -114,17 +134,21 @@ module InterlockCore(r) { module InterlockNegative(this_post, right_post) { INREFFRAME(this_post, right_post) - InterlockCore(interlock_negative_rad); + InterlockCore(interlock_negative_rad, 1, 0); +} + +module Interlock(this_post, right_post) { + INREFFRAME(this_post, right_post) + InterlockCore(interlock_rad, 0, 1); } -module TestPiece1(){ +module TestPiece1(){ ////toplevel holes = [ [-100, 0], [ 0, 0] ]; difference(){ TileBase(holes[0], holes[1]); InterlockNegative(holes[1], holes[1] + [0,1]); - } Posts(holes); RoundEdge(holes[0], holes[1]); @@ -132,4 +156,24 @@ module TestPiece1(){ RoundLeftCorner(holes[0], holes[1]); } -TestPiece1(); +module TestPiece2(){ ////toplevel + holes = [ [ 0, 0], + [ 50, 0] + ]; + TileBase(holes[0], holes[1]); + Posts(holes); + RoundEdge(holes[0], holes[1]); + Interlock(holes[0], holes[0] + [0, -1]); +} + +module Demo(){ + translate([ -thehd[1], 0 ]) + color("blue") + TestPiece1(); + translate([ +thehd[1], 0 ]) + TestPiece2(); +} + +//TestPiece1(); +//TestPiece2(); +//Demo();