+ RoundCornerAdd(rcs);
+}
+
+tile_01_11_cnr = tile01_tr + [-cutout_tile11_x, 0];
+tile_11_10_cnr = tile01_tr + [0, cutout_tile11_y];
+tile_01_00_cnr = tile01_tr - [0, cutout_tile01_y];
+
+module Tile11(){ ////toplevel
+ sz = [250,250];
+ c0 = tile01_tr + [-sz[0],0];
+ c = Rectangle_corners(c0, sz);
+ cnr_posts = Rectangle_corners2posts(c);
+ posts = concat(
+ Posts_interpolate_one(cnr_posts[0],
+ cnr_posts[1] - [cutout_tile11_x, 0]),
+ [ cnr_posts[1] + [0, cutout_tile11_y],
+ cnr_posts[2],
+ cnr_posts[3]
+ ]);
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ Posts(posts);
+ RoundEdge(R_EDGE(c,2));
+ InterlockEdge(R_EDGE(c,3));
+ }
+ InterlockEdge(c[0], tile_01_11_cnr, 1);
+ InterlockEdge(tile_11_10_cnr, c[2], 1);
+ Machine();
+ }
+}
+
+module Tile01(){ ////toplevel
+ sz = [250,170];
+ c0 = tile01_tr + -sz;
+ c = Rectangle_corners(c0, sz);
+ cnr_posts = Rectangle_corners2posts(c);
+ posts = concat(
+ Posts_interpolate_one(R_EDGE(cnr_posts,0)),
+ [ cnr_posts[2] + [0, -cutout_tile01_y] ],
+ Posts_interpolate_one(cnr_posts[2] - [cutout_tile11_x, 0],
+ cnr_posts[3])
+ );
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ Posts(posts);
+ RoundEdge(R_EDGE(c,0));
+ InterlockEdge(tile_01_11_cnr, c[3]);
+ InterlockEdge(R_EDGE(c,3));
+ }
+ InterlockEdge(c[1], tile_01_00_cnr, 1);
+ Machine();
+ }
+}
+
+module Tile10(){ ////toplevel
+ sz = [250,250];
+ c0 = tile01_tr + [0,0];
+ c = Rectangle_corners(c0, sz);
+ cnr_posts = Rectangle_corners2posts(c);
+ cty = cutout_tile11_y;
+ rcy = cty + rearcurve_avoid_y;
+ posts = [ cnr_posts[0] + [ 0, cty ],
+ cnr_posts[1] + [ -sz[0] + rearedge_len - cutout_l_end_x, cty ],
+ cnr_posts[1] + [ 0, rcy ],
+ cnr_posts[2],
+ cnr_posts[3] ];
+ rcs = [R_EDGE(c,2)];
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ Posts(posts);
+ RoundEdge(R_EDGE(c,1));
+ RoundEdge(R_EDGE(c,2));
+ InterlockEdge(c[3], tile_11_10_cnr);
+ }
+ RoundCornerCut(rcs);
+ Machine();
+ }
+ RoundCornerAdd(rcs);
+}
+
+module Tile00(){ ////toplevel
+ sz = [250,170];
+ c0 = tile01_tr + [0,-sz[1]];
+ c = Rectangle_corners(c0, sz);
+ cnr_posts = Rectangle_corners2posts(c);
+ cty = cutout_tile01_y;
+ rcy = cty + frontcurve_avoid_y;
+ posts = [ cnr_posts[0],
+ cnr_posts[1],
+ cnr_posts[2] + [ 0, -rcy ],
+ cnr_posts[2] + [ -sz[0] + rearedge_len - cutout_l_end_x, -cty ],
+ cnr_posts[3] + [ 0, -cty ]
+ ];
+ rcs = [R_EDGE(c,1)];
+ difference(){
+ union(){
+ Rectangle_TileBase(c);
+ Posts(posts);
+ RoundEdge(R_EDGE(c,0));
+ RoundEdge(R_EDGE(c,1));
+ InterlockEdge(tile_01_00_cnr, c[0]);
+ }
+ RoundCornerCut(rcs);
+ Machine();
+ }
+ RoundCornerAdd(rcs);