1include <BOSL2/std.scad>
 2
 3board_size = 19;
 4
 5board_length=100;//mm
 6board_thickness=4;//mm
 7
 8wall_thickness = 2;//mm
 9
10star_points = [[3,3],[9,3],[15,3],[3,9],[9,9],[15,9],[3,15],[9,15],[15,15]];
11star_point_length = 5; //mm
12
13piece_dimensions=[4,4,2];
14
15rounding = 1;//mm
16rounding_internal = 0.5;//mm
17
18resolution = 20;
19
20// Code
21internal_board_length = board_length-wall_thickness;
22internal_board_origin = [wall_thickness/2,wall_thickness/2,0];
23squares_on_board = board_size-1;
24square_scale = internal_board_length/squares_on_board;
25difference(){
26    cuboid([board_length,board_length,board_thickness],anchor=BOTTOM+FRONT+LEFT,edges=[TOP+FRONT,TOP+RIGHT,TOP+LEFT,TOP+BACK,LEFT+BACK,LEFT+FRONT,RIGHT+BACK,RIGHT+FRONT],rounding=rounding,$fn=resolution);
27    translate(internal_board_origin) cube([internal_board_length,internal_board_length,board_thickness]);
28}
29
30difference(){
31    union(){
32for ( x = [0 : squares_on_board-1] ){
33    for ( y = [0 : squares_on_board-1] ){
34    translate(internal_board_origin) translate([x*square_scale, y*square_scale, 0])
35        difference(){
36    cube([square_scale,square_scale,board_thickness]);
37            translate([wall_thickness/2,wall_thickness/2,-board_thickness]) cuboid([square_scale-wall_thickness,square_scale-wall_thickness,board_thickness*3],anchor=BOTTOM+FRONT+LEFT,edges=[LEFT+BACK,LEFT+FRONT,RIGHT+BACK,RIGHT+FRONT],rounding=rounding_internal,$fn=resolution);
38        }
39}
40}
41    for (i = [0 : len(star_points)-1]){
42        star_point_f_x = star_points[i].x;
43        star_point_f_y = star_points[i].y;
44        translate(internal_board_origin) translate([0,0,board_thickness/2]) translate([star_point_f_x*square_scale,star_point_f_y*square_scale,0]) rotate([0,0,45]) cube([star_point_length,star_point_length,board_thickness],center=true);
45    }
46}
47for ( x = [0 : squares_on_board-2] ){
48    for ( y = [0 : squares_on_board-2] ){
49        f_x = x+1;
50        f_y = y+1;
51        translate(internal_board_origin) translate([0,0,board_thickness]) translate([f_x*square_scale,f_y*square_scale,0]) scale(piece_dimensions) sphere(d=1,$fn=resolution*2);
52}
53}
54}