41 lines
1.2 KiB
OpenSCAD
41 lines
1.2 KiB
OpenSCAD
|
include <params.scad>
|
||
|
use <white_stones.scad>
|
||
|
|
||
|
module bstone() {
|
||
|
difference() {
|
||
|
wstone();
|
||
|
for($r=[$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=200);
|
||
|
translate([0, 0, -1]) {
|
||
|
cylinder(r=$r-$mark_thickness/2, h=$stone_height/3+2, $fn=200);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
translate([0, 0, $stone_height*2/3]) {
|
||
|
difference() {
|
||
|
cylinder(r=$r+$mark_thickness/2, h=$stone_height/3+1, $fn=200);
|
||
|
translate([0, 0, -1]) {
|
||
|
cylinder(r=$r-$mark_thickness/2, h=$stone_height/3+2, $fn=200);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$median = floor($goban_size/2);
|
||
|
|
||
|
for($x=[$median:$goban_size-1]) {
|
||
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|