$fn=25; x = 20; y = 10; z = 10; wall = 2; bottom = 1; difference() { minkowski(){ cube([x+wall,y+wall,z+bottom], center=true); cylinder(); } translate([0,0,bottom]) minkowski(){ cube([x,y,z], center=true); cylinder(); } translate([0,0,(z/2)]){ linear_extrude(height=1.5){ minkowski(){ square([x+(wall/2),y+(wall/2)], center=true); circle(); } } } } translate([x+10,0,2.5]) rotate([180,1,0]) difference() { difference(){ translate([0,0,z/2+1]) minkowski(){ cube([x+wall,y+wall,2],center=true); cylinder(); } difference() { minkowski(){ cube([x+wall,y+wall,z+bottom], center=true); cylinder(); } translate([0,0,bottom]) minkowski(){ cube([x,y,z], center=true); cylinder(); } translate([0,0,(z/2)]){ linear_extrude(height=1.5){ minkowski(){ square([x+(wall/2),y+(wall/2)], center=true); circle(); } } } } cube([x+wall/2,y+wall/2,z+5],center=true); cylinder(z*2,2,2,$fn=5, center=true); } }