44 lines
1.3 KiB
OpenSCAD
44 lines
1.3 KiB
OpenSCAD
include <params.scad>
|
|
use <white_stones.scad>
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
}
|