$fn=64; // Parametric variables for FigureStage grid system grid_spacing = 15.0; // Distance between grid connection points peg_diameter = 3.0; // Diameter of connection pegs peg_taper = 2.8; // Top diameter of pegs for easier insertion peg_height = 4.0; // Height of the connection pegs bracket_width = 15.0; // Width of the bracket arms bracket_thickness = 3.0; // Thickness of the bracket body arm_length = 30.0; // Length of each arm to cover two grid points module figure_stage_corner_connector() { union() { // Main L-shaped bracket body union() { // X-axis arm cube([arm_length, bracket_width, bracket_thickness]); // Y-axis arm cube([bracket_width, arm_length, bracket_thickness]); // Reinforcement at the inner corner translate([bracket_width, bracket_width, 0]) cylinder(h=bracket_thickness, r=2); translate([bracket_width, bracket_width, 0]) cube([2, 2, bracket_thickness]); } // Connection Pegs (spaced exactly at grid_spacing) // Corner peg translate([bracket_width/2, bracket_width/2, bracket_thickness - 0.1]) cylinder(h=peg_height + 0.1, d1=peg_diameter, d2=peg_taper); // X-arm peg translate([bracket_width/2 + grid_spacing, bracket_width/2, bracket_thickness - 0.1]) cylinder(h=peg_height + 0.1, d1=peg_diameter, d2=peg_taper); // Y-arm peg translate([bracket_width/2, bracket_width/2 + grid_spacing, bracket_thickness - 0.1]) cylinder(h=peg_height + 0.1, d1=peg_diameter, d2=peg_taper); } } // Center the model for rendering translate([-bracket_width/2, -bracket_width/2, 0]) figure_stage_corner_connector();