$fn=64; // --- Parameters --- tile_size = 50; // Length and width of the square tile road_width = 24; // Width of the road surface base_thickness = 2; // Thickness of the solid base under everything curb_height = 1.5; // Height of the sidewalks/curbs above the road curb_radius = 4; // Radius of the rounded corners at the intersection // --- Module --- module t_intersection() { union() { // Base plate (solid foundation) translate([0, 0, base_thickness / 2]) cube([tile_size, tile_size, base_thickness], center = true); // Raised curbs / sidewalks translate([0, 0, base_thickness]) linear_extrude(height = curb_height) difference() { // Full tile area square([tile_size, tile_size], center = true); // Subtract road area // Applying positive then negative offset rounds the concave inner corners offset(r = -curb_radius) offset(r = curb_radius) union() { // Main horizontal road (straight across) square([tile_size + 20, road_width], center = true); // Intersecting vertical road (the stem of the T) translate([0, -tile_size / 2]) square([road_width, tile_size + 20], center = true); } } } } // Render the object t_intersection();