$fn=64; // --- Parameters --- leg_length = 60; // Total length of each leg leg_width = 25; // Width of the base channel wall_height = 12; // Height of the outer retaining wall wall_thickness = 3; // Thickness of the retaining wall base_thickness = 3; // Thickness of the base plate hole_diameter = 6; // Diameter of connection holes hole_offset = 12; // Distance from ends for the connection holes module deskgrid_corner() { difference() { union() { // Base X-axis cube([leg_length, leg_width, base_thickness]); // Base Y-axis cube([leg_width, leg_length, base_thickness]); // Outer Wall X-axis cube([leg_length, wall_thickness, wall_height]); // Outer Wall Y-axis cube([wall_thickness, leg_length, wall_height]); // Inner corner reinforcement (fillet) translate([leg_width, leg_width, 0]) cylinder(h=base_thickness, r=4); translate([leg_width-4, leg_width, 0]) cube([4, 4, base_thickness]); translate([leg_width, leg_width-4, 0]) cube([4, 4, base_thickness]); } // Connection Hole X-leg (centered in the channel) translate([leg_length - hole_offset, (leg_width + wall_thickness)/2, -1]) cylinder(h=base_thickness + 2, d=hole_diameter); // Connection Hole Y-leg (centered in the channel) translate([(leg_width + wall_thickness)/2, leg_length - hole_offset, -1]) cylinder(h=base_thickness + 2, d=hole_diameter); // Connection Hole Corner translate([(leg_width + wall_thickness)/2, (leg_width + wall_thickness)/2, -1]) cylinder(h=base_thickness + 2, d=hole_diameter); // Chamfer main outer corner translate([0, 0, 0]) rotate([0, 0, 45]) cube([6, 6, wall_height * 3], center=true); // Chamfer X-leg ends translate([leg_length, 0, 0]) rotate([0, 0, 45]) cube([10, 10, wall_height * 3], center=true); translate([leg_length, leg_width, 0]) rotate([0, 0, 45]) cube([10, 10, wall_height * 3], center=true); // Chamfer Y-leg ends translate([0, leg_length, 0]) rotate([0, 0, 45]) cube([10, 10, wall_height * 3], center=true); translate([leg_width, leg_length, 0]) rotate([0, 0, 45]) cube([10, 10, wall_height * 3], center=true); } } // Render the part deskgrid_corner();