$fn=64; // --- Parameters --- reservoir_dia = 150; // Outer diameter of the main bowl reservoir_h = 45; // Total height of the reservoir wall = 3; // Wall thickness pot_stand_h = 35; // Height of the internal ribs where the pot sits spout_offset = 80; // Distance from center to the watering spout spout_dia = 50; // Diameter of the watering spout union() { // Main bowl and spout difference() { // Outer Shell hull() { cylinder(d=reservoir_dia, h=reservoir_h); translate([spout_offset, 0, 0]) cylinder(d=spout_dia, h=reservoir_h); } // Inner Cavity translate([0, 0, wall]) hull() { cylinder(d=reservoir_dia - wall*2, h=reservoir_h + 1); translate([spout_offset, 0, 0]) cylinder(d=spout_dia - wall*2, h=reservoir_h + 1); } } // Support Ribs for Pot for (i = [0 : 45 : 135]) { rotate([0, 0, i]) difference() { // Main rib (embedded slightly into floor and walls for manifold geometry) translate([-(reservoir_dia - wall)/2, -wall/2, wall - 0.1]) cube([reservoir_dia - wall, wall, pot_stand_h + 0.1]); // Water flow cutouts (creates archways for water to circulate) // Right side cutouts translate([20, -wall, wall - 0.2]) cube([15, wall*2, 16]); translate([50, -wall, wall - 0.2]) cube([15, wall*2, 16]); // Left side cutouts translate([-35, -wall, wall - 0.2]) cube([15, wall*2, 16]); translate([-65, -wall, wall - 0.2]) cube([15, wall*2, 16]); } } // Central Hub to tie ribs together cleanly translate([0, 0, wall - 0.1]) cylinder(d=16, h=pot_stand_h + 0.1); }