$fn=64; // --- Parameters --- tile_size = 40; // Width and length of the square tile tile_height = 4; // Total height of the tile road_width = 20; // Width of the straight road section road_depth = 1.5; // Depth of the road surface from the top cul_de_sac_radius = 14; // Radius of the round turnaround cul_de_sac_y = 3; // Y-axis center point for the turnaround module dead_end_tile() { difference() { // Main base tile translate([-tile_size/2, -tile_size/2, 0]) cube([tile_size, tile_size, tile_height]); // Subtract road and cul-de-sac geometry union() { // Straight road entrance (extended slightly to ensure clean cut) translate([-road_width/2, -tile_size/2 - 1, tile_height - road_depth]) cube([road_width, tile_size/2 + cul_de_sac_y + 1, road_depth + 1]); // Round cul-de-sac turnaround translate([0, cul_de_sac_y, tile_height - road_depth]) cylinder(r=cul_de_sac_radius, h=road_depth + 1); } } // Add raised center dividing line translate([-0.75, -19, tile_height - road_depth]) cube([1.5, 10, 0.4]); } dead_end_tile();