$fn = 100; difference() { union() { hull() { translate([0, 1, 0]) rotate([90, 0, 0]) rounded_corners(x=16, y=16, r=0.5); translate([0, 116, 0]) rotate([90, 0, 0]) rounded_corners(x=16, y=16, r=0.5); } hull() { translate([1, 0, 0]) rotate([0, -90, 0]) rounded_corners(x=16, y=16, r=0.5); translate([68, 0, 0]) rotate([0, -90, 0]) rounded_corners(x=16, y=16, r=0.5); } hull() { translate([52, 1, 0]) rotate([90, 0, 0]) rounded_corners(x=16, y=16, r=0.5); translate([52, 54, 0]) rotate([90, 0, 0]) rounded_corners(x=16, y=16, r=0.5); } } translate([8, 8, -1]) cylinder(h=18, d=3.2); translate([8, 107.5, -1]) cylinder(h=18, d=3.2); } module rounded_corners(x, y, r) { translate([r, r, r]) sphere(r=r); translate([x - r, r, r]) sphere(r=r); translate([r, y - r, r]) sphere(r=r); translate([x - r, y - r, r]) sphere(r=r); }