include module hexBase(){ difference(){ cylinder(h=thick_hex,r=diam_hex*0.5,$fn=6,center=true); for(i=[0:6]){ rotate([0,0,60*i]) translate([0.5*diam_hex,0,0]) cylinder(h=2*thick_hex,r=hole_diam_hex*0.5,center=true); rotate([0,0,60*i]) translate([0,43,0]) cube([10,5,2*thick_hex],center=true); } } } module hexBaseHole(){ difference(){ hexBase(); cylinder(h=2*thick_hex,r=diam_hex*0.125,$fn=6,center=true); } } module arc(height,diam_out,diam_in,angle_left,angle_right){ difference(){ cylinder(h=height,r=diam_out*0.5,center=true); cylinder(h=2*height,r=diam_in*0.5,center=true); for (i=[angle_left,angle_right]) rotate([0,0,i]) translate([0,0.5*diam_out,0]) cube([diam_out,diam_out,2*height],center=true); } } module wheat_seeds(){ for(i=[-1,1]){ // tip translate([9*i,-27,0]){ rotate([0,0,23*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } // lower translate([13*i,-20,0]){ rotate([0,0,10*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } translate([17*i,-15,0]){ rotate([0,0,10*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } translate([21*i,-10,0]){ rotate([0,0,10*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } // upper translate([19*i,-28,0]){ rotate([0,0,75*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } translate([24*i,-24,0]){ rotate([0,0,76*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } translate([29*i,-17,0]){ rotate([0,0,77*i]){ scale([4,2,1]){ cylinder(h=10,r=1,$fn= 20,center=true); } } } } } module hexWheat(){ difference(){ union(){ difference(){ hexBaseHole(); //left difference(){ cylinder(h=2*thick_hex,r=30,center=true); cylinder(h=2*thick_hex,r=28,center=true); translate([0,-54,0]) cube([60,60,3*thick_hex],center=true); } difference(){ cylinder(h=2*thick_hex,r=26,center=true); cylinder(h=2*thick_hex,r=24,center=true); translate([0,-30,0]) cube([60,60,3*thick_hex],center=true); } difference(){ cylinder(h=2*thick_hex,r=34,center=true); cylinder(h=2*thick_hex,r=32,center=true); translate([0,-35,0]) cube([70,70,3*thick_hex],center=true); } wheat_seeds(); } for(i=[-1,1]) rotate([0,0,0+45*i]) translate([0,28,0]) cube([12,15,thick_hex],center=true); } for(i=[-1,1]) rotate([0,0,0+45*i]) for(j=[-3,0,3]) translate([j,29,0]) cube([2,12,2*thick_hex],center=true); } } //module hexWood(){ // difference(){ // hexBaseHole(); // for(i=[0:5]){ // rotate([0,0,60*i]) // translate([0,25,0]) // scale([0.6,0.6,1]) // sakura_flower(); // } // } // //} module bamboo(){ for(i=[0:3]) translate([0,0+9*i,0]) cube([2,8,2*thick_hex],center=true); translate([5,25,0]) rotate([0,0,-50]) scale([1,3,1]) cylinder(h=2*thick_hex,r=1,center=true); translate([5,20,0]) rotate([0,0,50]) scale([1,3.5,1]) cylinder(h=2*thick_hex,r=1,center=true); translate([-4,8,0]) rotate([0,0,50]) scale([1,3,1]) cylinder(h=2*thick_hex,r=1,center=true); translate([-4,1,0]) rotate([0,0,-50]) scale([1,3,1]) cylinder(h=2*thick_hex,r=1,center=true); translate([-5,5,0]) rotate([0,0,80]) scale([1,3.5,1]) cylinder(h=2*thick_hex,r=1,center=true); } module hexWood(){ difference(){ hexBase(); translate([0,-20,0]) cylinder(h=2*thick_hex,r=diam_hex*0.125,$fn=6,center=true); translate([0,5,0]) bamboo(); for(i=[-1,1]){ translate([15*i,0,0]) rotate([0,0,-5*i]) bamboo(); translate([30*i,-15,0]) rotate([0,180,-5*i]) bamboo(); } } } module sakura_leave(){ difference(){ hull(){ cylinder(h=10,r=5,center=true); translate([0,-7,0]) cylinder(h=10,r=2,center=true); } translate([0,6,0]) rotate([0,0,45]) cube([4,4,20],center=true); translate([0,-7,0]){ hull(){ cylinder(h=20,r=0.2,center=true); translate([0,-5,0]) cylinder(h=20,r=0.2,center=true); } } } } module sakura_flower(){ for(i=[0:4]){ rotate([0,0,72*i]) translate([0,12,0]) sakura_leave(); } cylinder(h=10,r=2,center=true); } module wool(){ translate([0,24,0]) cube([8,2,10],center=true); translate([0,28,0]) cube([8,2,10],center=true); for(i=[-1,1]) translate([2*i,17.5,0]) cube([2,8,10],center=true); for(i=[-1,1]) translate([2*i,34.5,0]) cube([2,8,10],center=true); for(j=[-1,1]) translate([8*j,0,0]) for(i=[-1,1]) translate([2*i,26,0]) cube([2,8,10],center=true); } module fence_sheep(){ for(a=[0:2]){ rotate([0,0,120*a]){ for(i=[-1,1]){ translate([9*i,25,0]) cube([1.5,20,thick_hex],center=true); } for(i=[-5,0,5]){ translate([i,20,0]) cube([1.5,15,thick_hex],center=true); } translate([0,25,0]) cube([19,1.5,thick_hex],center=true); } } } module sheep(){ for(a=[0:2]){ rotate([0,0,60+120*a]){ //legs for(i=[-1,1]){ translate([2*i,18,0]) cube([1,4,thick_hex],center=true); } translate([0,23.5,0]) difference(){ //body union(){ for(i=[0:11]){ rotate([0,0,30*i]) translate([0,3,0]) cylinder(h=thick_hex,r=1.5,center=true); } cylinder(h=thick_hex,r=2,center=true); } //eyes for(i=[-1,1]){ translate([0.7*i,0.8,0]) cylinder(h=2*thick_hex,r=0.4,center=true); } // //face side // for(i=[-1,1]){ // translate([1.45*i,0.2,0]) // cube([0.1,2,3*thick_hex],center=true); // } // // face bottom // translate([0,-0.7,0]) // difference(){ // cylinder(h=2*thick_hex,r=1.5,center=true); // cylinder(h=3*thick_hex,r=1.4,center=true); // translate([0,1.5,0]) // cube([3,3,3*thick_hex],center=true); // } // //nose // for(i=[-1,1]){ // translate([0.25*i,-1,0]) // cube([0.1,0.6,3*thick_hex],center=true); // } // //horns/ears // for(i=[-1,1]){ // translate([1.3*i,1.5,0]) // rotate([0,0,-25*i]) // difference(){ // cylinder(h=2*thick_hex,r=1,center=true); // cylinder(h=3*thick_hex,r=0.7,center=true); // // translate([0,-1,0]) // cube([2,2,3*thick_hex],center=true); // } // } } } } } module hexWool(){ union(){ difference(){ hexBaseHole(); // for(i=[0:5]){ // rotate([0,0,60*i]) // wool(); // } difference(){ cylinder(h=2*thick_hex,r=35,$fn=6,center=true); cylinder(h=3*thick_hex,r=20,$fn=6,center=true); } } fence_sheep(); sheep(); } } module hexClay(){ difference(){ hexBaseHole(); for(j=[-1,1]){ translate([0,35*j,0]) cube([8,4,10],center=true); for(i=[0:2]) translate([-10+10*i,30*j,0]) cube([8,4,10],center=true); for(i=[0:3]) translate([-15+10*i,25*j,0]) cube([8,4,10],center=true); for(i=[0:4]) translate([-20+10*i,20*j,0]) cube([8,4,10],center=true); for(i=[0:5]) translate([-25+10*i,15*j,0]) cube([8,4,10],center=true); for(i=[0,1,5,6]) translate([-30+10*i,10*j,0]) cube([8,4,10],center=true); for(i=[-1,0,5,6]) translate([-25+10*i,5*j,0]) cube([8,4,10],center=true); } for(i=[0,6]) translate([-30+10*i,0,0]) cube([8,4,10],center=true); } } module hexMountain(){ difference(){ hexBase(); fujiNeg(); translate([0,12,0]) linear_extrude(height = 20, center = true, convexity = 10, twist = 0) polygon(points=[[-10,0],[-5,5],[5,5],[10,0]]); translate([0,-20,0]) cylinder(h=2*thick_hex,r=diam_hex*0.125,$fn=6,center=true); } } module fujiNeg(){ difference(){ cylinder(h=10,r=30,center=true); translate([0,-15,0]){ difference(){ rotate([0,0,45]) cube([60,60,15],center=true); translate([0,40,0]) cube([20,10,20],center=true); } } // cube([10,0,15],center=true); } } module wave_japan(){ // $fn=10; render() difference(){ union(){ for(i=[0:3]) difference(){ cylinder(h=2*thick_hex,r=3+2*i,center=true); cylinder(h=2*thick_hex,r=2+2*i,center=true); } cylinder(h=2*thick_hex,r=1,center=true); } for(i=[-1,1]) rotate([0,0,150*i]) translate([0,12,0]) cube([24,24,3*thick_hex],center=true); } } module hexWater(){ difference(){ hexBase(); for(j=[24,12,-24,-36]) for(i=[1,2]) translate([-30+20*i,j,0]) wave_japan(); for(j=[0,-12]) for(i=[0:3]) translate([-30+20*i,j,0]) wave_japan(); for(j=[18,6,-6,-18,-30]) for(i=[0:2]) translate([-20+20*i,j,0]) wave_japan(); translate([0,30,0]) wave_japan(); // for(i=[0:2]) // translate([-20+20*i,-6,0]) // wave_japan(); // for(i=[0:1]) // translate([-20+20*i,16,0]) // wave_japan(); } } module bridge(){ union(){ scale([1.2,1,1]){ union(){ difference(){ cylinder(h=thick_hex,r=10,center=true); cylinder(h=2*thick_hex,r=8,center=true); translate([0,-11,0]) cube([22,22,2*thick_hex],center=true); } for(i=[-1,1]){ translate([10*i,10,0]) cube([2,20,thick_hex],center=true); translate([10*i,20,0]) cylinder(h=thick_hex,r=1.5,center=true); } for(j=[-0.5,4]) translate([0,j,0]) difference(){ cylinder(h=thick_hex,r=15,center=true); cylinder(h=2*thick_hex,r=14,center=true); translate([0,-11,0]) cube([22,22,2*thick_hex],center=true); for(i=[-1,1]) translate([26*i,0,0]) cube([32,32,2*thick_hex],center=true); } translate([0,12,0]) cube([1,5,thick_hex],center=true); for(i=[-1,1]) translate([3.5*i,13,0]) cube([1,10,thick_hex],center=true); for(i=[-1,1]) translate([7*i,9,0]) cube([1,7,thick_hex],center=true); } } translate([0,1,0]) cube([22,2,thick_hex],center=true); translate([0,-0.5*thick_hex,0]) cube([10,thick_hex,thick_hex],center=true); } } module base_building(){ difference(){ cylinder(h=thick_hex+1,r=9.5,center=true); cube([thick_hex,thick_hex,thick_hex+3],center=true); } } module samurai_head(){ difference(){ scale([1,1.1,1]){ cylinder(h=thick_hex,r=10,center=true); } for(i=[-1,1]) translate([3.5*i,4,0]) difference(){ cylinder(h=1.5*thick_hex,r=2.5,center=true); translate([0,3,0]) cube([6,6,2*thick_hex],center=true); } for(i=[-1,1]) translate([1.1*i,-1,0]) rotate([0,0,45*i]) cube([4,1,2*thick_hex],center=true); translate([0,-6,0]) cylinder(h=1.5*thick_hex,r=2.5,center=true); } } module samurai_body(){ difference(){ union(){ cube([19,30,thick_hex],center=true); translate([0,15,0]) cylinder(h=thick_hex,r=9.5,center=true); for(i=[-1,1]) translate([5*i,15,0]) rotate([0,0,45*i]) difference(){ cube([25,4,thick_hex],center=true); for(j=[0:1.5:4.5]) translate([11*i-i*j,0,0]) cube([1,2,1.5*thick_hex],center=true); } for(j=[0]) for(i=[-1,1]) translate([5*i,15+j,0]) rotate([0,0,45*i]) cube([12,12,thick_hex],center=true); translate([0,-15,0]) cube([thick_hex,2*thick_hex,thick_hex],center=true); } translate([0,11,0]) scale([0.4,0.4,1]) sakura_flower(); } } module ninja_head(){ difference(){ union(){ scale([1,1.1,1]){ cylinder(h=thick_hex,r=10,center=true); } translate([0,5,0]) difference(){ rotate([0,0,45]){ cube([20,20,thick_hex],center=true); } translate([0,-20,0]) cube([40,40,3*thick_hex],center=true); } difference(){ for(i=[-1,1]) translate([5*i,13,0]) rotate([0,0,45*i]) cube([25,5,thick_hex],center=true); translate([0,47,0]) cube([60,60,1.5*thick_hex],center=true); } } for(i=[-1,1]) translate([3.5*i,4,0]) rotate([0,0,10*i]){ difference(){ cylinder(h=1.5*thick_hex,r=2.5,center=true); translate([0,3,0]) cube([6,6,2*thick_hex],center=true); } } cube([15,0.5,1.5*thick_hex],center=true); for(i=[-1,1]) translate([7.5*i,2.25,0]) cube([0.5,5,1.5*thick_hex],center=true); } } module ninja_body(){ difference(){ union(){ cube([19,30,thick_hex],center=true); translate([0,15,0]) cylinder(h=thick_hex,r=9.5,center=true); for(i=[-1,1]) translate([5*i,15,0]) rotate([0,0,45*i]) difference(){ cube([25,4,thick_hex],center=true); for(j=[0:1.5:4.5]) translate([11*i-i*j,0,0]) cube([1,2,1.5*thick_hex],center=true); } for(j=[0]) for(i=[-1,1]) translate([5*i,15+j,0]) rotate([0,0,45*i]) cube([12,12,thick_hex],center=true); translate([0,-15,0]) cube([thick_hex,2*thick_hex,thick_hex],center=true); } translate([0,13,0]){ scale([0.8,0.8,1]){ rotate([0,0,10]) cube([10,1,1.5*thick_hex],center=true); translate([-1.5,-1,0]) cube([1,10,1.5*thick_hex],center=true); translate([0,-6,0]) difference(){ cylinder(h=1.5*thick_hex,r=2,center=true); cylinder(h=2*thick_hex,r=1,center=true); translate([1.5,2.5,0]) cube([5,5,2*thick_hex],center=true); translate([2.5,1.5,0]) cube([5,5,2*thick_hex],center=true); } translate([2,-7.5,0]) cube([5,1,1.5*thick_hex],center=true); } } } } module merchant_head(){ difference(){ union(){ scale([1,1.1,1]){ cylinder(h=thick_hex,r=10,center=true); } translate([0,5,0]) difference(){ rotate([0,0,45]){ cube([20,20,thick_hex],center=true); } translate([0,-35,0]) cube([70,70,3*thick_hex],center=true); } } for(i=[-1,1]) translate([3.5*i,4,0]) rotate([0,0,0]){ difference(){ cylinder(h=1.5*thick_hex,r=2.5,center=true); translate([0,3,0]) cube([6,6,2*thick_hex],center=true); } } } } module merchant_body(){ union(){ difference(){ scale([1,4,1]) cylinder(h=thick_hex,r=9.5,center=true); translate([0,-20,0]) cube([20,40,1.5*thick_hex],center=true); } translate([0,30,0]){ cube([50,4,1*thick_hex],center=true); for(i=[-1,1]){ translate([15*i,-3,0]) cube([2,6,1*thick_hex],center=true); translate([17.5*i,-12,0]) cube([10,15,1*thick_hex],center=true); } for(i=[-1,1]){ translate([20*i,-3,0]) cube([2,6,1*thick_hex],center=true); } } //translate([0,-15,0]) cube([thick_hex,2*thick_hex,thick_hex],center=true); } } module samurai(){ union(){ samurai_body(); translate([0,30,0]) samurai_head(); } } module ninja(){ union(){ ninja_body(); translate([0,30,0]) ninja_head(); } } module merchant(){ union(){ merchant_body(); translate([0,40,0]) merchant_head(); } } module building_token(){ } //MAIN $fn=50; color("Purple"){ translate([25.1,-43,0.5*thick_hex+0.5]) rotate([90,0,0]){ merchant_body(); translate([0,40,0]) merchant_head(); } translate([25.1,-43.1,0]) base_building(); } color("grey"){ translate([25.1,43,15+0.5*thick_hex+0.5]) rotate([90,0,0]){ ninja_body(); translate([0,30,0]) ninja_head(); } translate([25.1,43.1,0]) base_building(); } color("Maroon"){ translate([-25.1,43,15+0.5*thick_hex+0.5]) rotate([90,0,0]){ samurai_body(); translate([0,30,0]) samurai_head(); } translate([-25.1,43.1,0]) base_building(); } translate([0,43,3]) rotate([90,0,0]) color("Red") bridge(); color("DarkGreen") hexWood(); translate([75,43.5,0]){ rotate([0,0,180]) color("Gold"){ hexWheat(); } } translate([75,-43.5,0]){ color("SteelBlue"){ hexWater(); } } translate([-75,43.5,0]){ color("WhiteSmoke"){ hexWool(); } } translate([0,87,0]){ color("DarkRed"){ hexClay(); } } translate([0,-87,0]){ color("DarkSlateGray"){ hexMountain(); } } //sakura_flower(); // hexWheat(); //arc(10,20,10,30+180,-30+180); //hexBaseHole(); //hexBase();