// joint for Croozer Cargo infty = 100; eps = 0.01; side_space = 1.5; wall = 2; corner_d = 3; inner_w = 16 + 0.6; outer_w = 22.5 - 0.3; body_h = 45; hole_d = 7*1.1; hole_off = 29; module body() { hull() for (angle = [45:90:360]) rotate([0, 0, angle]) translate([outer_w/sqrt(2)-corner_d*sqrt(2)/2, 0, 0]) cylinder(r=corner_d/2, h = body_h, $fn = 8); hull() for (angle = [45:90:360]) rotate([0, 0, angle]) translate([(outer_w+2*wall)/sqrt(2)-corner_d*sqrt(2)/2, 0, 0]) cylinder(r=corner_d/2, h = side_space, $fn = 8); } difference() { body(); translate([-inner_w/2, -inner_w/2, -eps]) cube([inner_w, inner_w, body_h + 2*eps]); translate([0, infty/2, hole_off]) rotate([90, 0, 0]) cylinder(r = hole_d/2, h=infty, $fn = 6); }