UNPKG

craft-puzzle

Version:

craft parameterized puzzle pieces

270 lines (231 loc) 6.78 kB
<craft> <script type="text/openscad"> function main(){ return union( //first line puzzle1(), color([0,1,0], puzzle2()).translate([-5,0,0]), color([1,1,0], puzzle3()).translate([-10,0,0]), color([0,1,1], puzzle4()).translate([-15,0,0]), //second line color([1,0,1], puzzle5()).translate([-15,-5,0]), color([0,0,1], puzzle6()).translate([-10,-5,0]), color([1,0,0], puzzle7()).translate([-5,-5,0]), color([1,0.5,0], puzzle8()).translate([0,-5,0]), //third line color([1,0.5,0.5], puzzle9()).translate([0,-10,0]), color([0.5,1,0.5], puzzle10()).translate([-5,-10,0]), color([0.5,0.5,1], puzzle11()).translate([-10,-10,0]), color([1,0,0.5], puzzle12()).translate([-15,-10,0]) //pig().scale([0.3,0.3,0.5]) ); } function puzzle1(){ var canvas = cube([20,20,1]), conShape1 = circle({r:4.5, fn:6}), conShape2 = circle({r:3, fn:50}); var connectorLft = linear_extrude({height: 1}, conShape1) .translate([-5,5,0]), connectorRgt = linear_extrude({height:1},conShape2) .translate([6,-4,0]); var piece = union( canvas, connectorLft, connectorRgt ); return piece; } function puzzle2(){ var canvas = cube([20,20,1]), conShape1 = square(6), conShape2 = polygon([[0,0],[3,0],[1.5,3]]).scale(3); var connectorLft = linear_extrude({height:1}, conShape1) .translate([-3,7,0]), connectorBtm = linear_extrude({height:1},conShape2) .translate([6,-3,0]); var piece = union( canvas, connectorBtm, connectorLft ); return difference ( piece.translate([-20,0,0]), puzzle1() ); } function puzzle3(){ var canvas = cube([20,20,1]), conShape1 = circle({r:4, fn:50}), conShape2 = circle({r:4, fn:3}); var connectorBtm = linear_extrude({height:1}, conShape1) .translate([5,-3,0]); connectorLft = linear_extrude({height:1},conShape2) .translate([-5,5,0]); var piece = union( canvas, connectorBtm, connectorLft ); return difference ( piece.translate([-40,0,0]), puzzle2() ); } function puzzle4(){ var canvas = cube([20,20,1]), conShape1 = polygon([[0,2],[2,0],[0,-2]]).scale(2), conShape2 = circle({r:3, fn:50}); var connectorRht = linear_extrude({height:1}, conShape1) .translate([20,10,0]), connectorBtm = linear_extrude({height:1}, conShape2) .translate([7,-4,0]); var piece = union( canvas, connectorRht, connectorBtm ); return difference ( piece.translate([-60,0,0]), puzzle3() ); } function puzzle5(){ var canvas = cube([20,20,1]), conShape1 = polygon([[0,0],[0,3],[2,3],[1,1.5],[2,0]]).scale(3), conShape2 = circle({r:4, fn:7}); var connectorRgt = linear_extrude({height:1}, conShape1) .translate([18,6,0]), connectorBtm = linear_extrude({height:1}, conShape2) .translate([6,-5,0]); var piece = union( canvas, connectorRgt, connectorBtm ); return difference ( piece.translate([-60,-20,0]), puzzle4() ); } function puzzle6(){ var canvas = cube([20,20,1]), conShape1 = circle({r:4, fn:50}), conShape2 = circle({r:4.5, fn:6}); var connectorRgt = linear_extrude({height:1}, conShape1) .translate([18,6,0]), connectorBtm = linear_extrude({height:1}, conShape2) .translate([6,-4,0]); var piece = union( canvas, connectorRgt, connectorBtm ); return difference ( piece.translate([-40,-20,0]), puzzle5(), puzzle3() ); } function puzzle7(){ var canvas = cube([20,20,1]), conShape1 = circle({r:3.5, fn:8}), conShape2 = circle({r:3, fn:3}); var connectorBtm = linear_extrude({height:1}, conShape1) .translate([6,-5,0]), connectorRgt = linear_extrude({height:1}, conShape2) .translate([18.5,6,0]); var piece = union( canvas, connectorBtm, connectorRgt ); return difference ( piece.translate([-20,-20,0]), puzzle6(), puzzle2() ); } function puzzle8(){ var canvas = cube([20,20,1]), conShape = circle({r:5, fn:3}); var connector= linear_extrude({height:1}, conShape) .translate([5,-5,0]); var piece = union( canvas, connector ); return difference ( piece.translate([0,-20,0]), puzzle7(), puzzle1() ); } function puzzle8(){ var canvas = cube([20,20,1]), conShape = circle({r:5, fn:3}); var connector= linear_extrude({height:1}, conShape) .translate([5,-5,0]); var piece = union( canvas, connector ); return difference ( piece.translate([0,-20,0]), puzzle7(), puzzle1() ); } function puzzle9(){ var canvas = cube([20,20,1]), conShape = circle({r:4, fn:50}); var connector= linear_extrude({height:1}, conShape) .translate([-5,7,0]); var piece = union( canvas, connector ); return difference ( piece.translate([0,-40,0]), puzzle8() ); } function puzzle10(){ var canvas = cube([20,20,1]), conShape = circle({r:5, fn:3}); var connector= linear_extrude({height:1}, conShape) .translate([3,-1,0]).rotateZ(60); var piece = union( canvas, connector ); return difference ( piece.translate([-20,-40,0]), puzzle7(), puzzle9() ); } function puzzle11(){ var canvas = cube([20,20,1]), conShape = circle({r:5, fn:3}); var connector= linear_extrude({height:1}, conShape) .translate([3,-1,0]).rotateZ(60); var piece = union( canvas, connector ); return difference ( piece.translate([-40,-40,0]), puzzle6(), puzzle10() ); } function puzzle12(){ var canvas = cube([20,20,1]); return difference ( canvas.translate([-60,-40,0]), puzzle5(), puzzle11() ); } </script> </craft>