$fn=60; include difference() { union() { back_half() torus(d_maj=25, d_min=10); cuboid([30,18,3], rounding=1.5, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); translate([-12.5,-5,0]) ycyl(d=10, l=10, rounding1=1); translate([12.5,-5,0]) ycyl(d=10, l=10, rounding1=1); } translate([0,-8,0]) cuboid([15,15,4], rounding=4, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); back_half() torus(d_maj=25, d_min=5); translate([-12.5,-5,0]) ycyl(d=5, l=10, rounding1=-1); translate([12.5,-5,0]) ycyl(d=5, l=10, rounding1=-1); }