$fn=64; // --- Parameters --- stand_height = 120; // Total height of the stand base_diameter = 200; // Diameter at the bottom for stability top_diameter = 170; // Diameter at the top bowl_hole_diameter = 135; // Cutout size for the food/water bowl wall_thickness = 6; // Thickness of the walls arch_width = 80; // Width of the leg archways arch_height = 85; // Height of the leg archways // --- Main Object --- difference() { // Outer conical body cylinder(h=stand_height, d1=base_diameter, d2=top_diameter); // Hollow interior to save material and print time translate([0, 0, -1]) cylinder(h=stand_height - wall_thickness + 1, d1=base_diameter - 2*wall_thickness, d2=top_diameter - 2*wall_thickness); // Top cutout for the bowl to drop into translate([0, 0, stand_height - wall_thickness - 1]) cylinder(h=wall_thickness + 2, d=bowl_hole_diameter); // Arch cutouts to create 4 legs for(i = [0 : 90 : 270]) { rotate([0, 0, i]) arch_cutout(); } } // --- Modules --- module arch_cutout() { // Create an arch shape and extrude it outward through the walls rotate([90, 0, 0]) translate([0, 0, -base_diameter]) linear_extrude(height=base_diameter*2) hull() { // Rectangular base of the arch (extends down to ensure clean cut) translate([-arch_width/2, -20]) square([arch_width, 20]); // Semicircular top of the arch translate([0, arch_height - arch_width/2]) circle(d=arch_width); } }