board_x = 5; board_y = 5; board_z = 0; board_length = 1000; board_width = 1000; board_height = 12; board_wall_length = 160; board_wall_width = 1000; board_wall_height = 12; board_wall_j_width = 6; board_wall_j_length = 6; board_wall_j_height = 12; wall_j_width = 6; wall_j_length = 6; wall_j_height = 12; wall_height = 60; cell_size = board_length/10;// it's equal to car width/length(will be fine if car be quadrat) module board(x, y, z, length, width, height) { translate([x, y, z]) color("orange") cube([length , width, height]); } module set_board_nets(x, y, z, length, width, height) { for(i = [board_x + cell_size : cell_size/2 : (board_length)]) { for(j = [board_y + cell_size : cell_size/2 : board_width]){ translate([i, j, 0]) color("red") cube([length, width, height]); } } } module BoardWithNets() { difference() { board(board_x, board_y, board_z, board_wall_length, board_width, board_height); set_board_nets(board_x, board_y, board_z+2, wall_j_width, wall_j_length, wall_j_height); } } module joint(tx, ty) { translate([tx, ty, 0]) color("black") cube([board_height - 0.3, board_height * 8, board_height]); } projection(cut = false) { union() { // Main board with side slots cut out difference() { board(board_x, board_y, board_z, board_wall_length, board_width, board_height); for (pos = [1/5, 2/5, 3/5, 4/5]) { offset = board_length * pos - board_height * 4; joint(board_x + board_wall_length/2 - board_height, board_y + offset); } } // Add the top and bottom joints (tabs) for (y_pos = [board_y - board_wall_height, board_y + board_width]) { for (pos = [1/3, 2/3]) { //offset = board_wall_length * pos - board_height*2 + board_height/2; offset = board_wall_length * pos - board_height*2 + board_height/2; translate([board_x + offset, y_pos, 0]) color("black") cube([board_height * 2.5, board_height, board_height]); } } } }