My Gridfinity models

Gusset refinements for printability

Gussets on every grid boundary now instead of every other, and the outer
gussets get trimmed with a quarter-cylinder cut to match the baseplate's
corner radius so they don't poke out past the rounded edges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+27 -8
+27 -8
pegboard-shelf.scad
··· 47 47 48 48 // Gusset geometry 49 49 gusset_depth = shelf_depth; 50 - num_gussets = max(2, floor(grid_x / 2) + 1); 50 + num_gussets = grid_x + 1; 51 51 52 52 bp_clearance = BASEPLATE_HEIGHT * sin(shelf_angle); 53 53 ··· 84 84 for (i = [0 : num_gussets - 1]) { 85 85 gx = gusset_thick/2 + 86 86 i * (shelf_width - gusset_thick) / max(1, num_gussets - 1); 87 - translate([gx, 0, 0]) 88 - gusset(); 87 + difference() { 88 + translate([gx, 0, 0]) 89 + gusset(); 90 + if (i == 0) 91 + baseplate_corner_cut(left=true); 92 + if (i == num_gussets - 1) 93 + baseplate_corner_cut(left=false); 94 + } 89 95 } 90 96 91 97 // Backplate wall ··· 135 141 // Triangle in the Y-Z plane bridging tilted shelf to vertical backplate 136 142 // rotate([0,90,0]) maps: polygon_x → -world_z, polygon_y → world_y 137 143 138 - // Front-bottom of tilted shelf (pulled back to not overshoot baseplate radius) 144 + // Front-bottom of tilted shelf 139 145 by = backplate_thick + bp_clearance 140 146 + shelf_depth * cos(shelf_angle) 141 - - BASEPLATE_HEIGHT * sin(shelf_angle) 142 - - BASEPLATE_OUTER_RADIUS; 147 + - BASEPLATE_HEIGHT * sin(shelf_angle); 143 148 bz = BASEPLATE_HEIGHT * (1 - cos(shelf_angle)) 144 - - shelf_depth * sin(shelf_angle) 145 - + BASEPLATE_OUTER_RADIUS * sin(shelf_angle); 149 + - shelf_depth * sin(shelf_angle); 146 150 147 151 // Shelf underside projected back to the backplate face 148 152 ay = backplate_thick; ··· 162 166 [-cz, cy] 163 167 ]); 164 168 } 169 + 170 + module baseplate_corner_cut(left) { 171 + R = BASEPLATE_OUTER_RADIUS; 172 + translate([0, backplate_thick, BASEPLATE_HEIGHT]) 173 + rotate([-shelf_angle, 0, 0]) 174 + translate([0, -backplate_thick, -BASEPLATE_HEIGHT]) 175 + translate([left ? 0 : shelf_width - R, 176 + backplate_thick + bp_clearance + shelf_depth - R, 177 + -1]) 178 + difference() { 179 + cube([R, R + 1, BASEPLATE_HEIGHT + 2]); 180 + translate([left ? R : 0, 0, -1]) 181 + cylinder(r=R, h=BASEPLATE_HEIGHT + 4); 182 + } 183 + }