include use module bstone() { difference() { union() { wstone(); cylinder(r=$mark_thickness, h=$stone_height*3/2, $fn=100); } for($r=[5*$mark_thickness/2:2*$mark_thickness:$stone_radius]) { translate([0, 0, -1]) { difference() { cylinder(r=$r+$mark_thickness/2, h=$stone_height/3+1, $fn=100); translate([0, 0, -1]) { cylinder(r=$r-$mark_thickness/2, h=$stone_height/3+2, $fn=100); } } } translate([0, 0, $stone_height*2/3]) { difference() { cylinder(r=$r+$mark_thickness/2, h=$stone_height/3+1, $fn=100); translate([0, 0, -1]) { cylinder(r=$r-$mark_thickness/2, h=$stone_height/3+2, $fn=100); } } } } } } $median = floor($goban_size/2); for($x=[0:$median]) { for($y=[0:$goban_size-1]) { if($x<$median || ($x==$median && $y<=$median)) { translate([ $x*2*($stone_radius+$stone_clearance), $y*2*($stone_radius+$stone_clearance), 0]) { bstone(); } } } }