$fn=60; include tore_size=30; tore_diam=10; difference() { union() { back_half() torus(d_maj=tore_size, d_min=tore_diam); translate([0,3,-3.5]) cuboid([28,20,3], rounding=9, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); *translate([-tore_size/2,-5,0]) ycyl(d=tore_diam, l=10, rounding1=1); *translate([tore_size/2,-5,0]) ycyl(d=tore_diam, l=10, rounding1=1); } translate([0,-5,-3.5]) cuboid([15,15,4], rounding=6, edges=[FWD+RIGHT,FWD+LEFT,BACK+RIGHT,BACK+LEFT]); back_half() torus(d_maj=tore_size, d_min=tore_diam/2); *translate([-tore_size/2,-5,0]) ycyl(d=tore_diam/2, l=10, rounding1=-1); *translate([tore_size/2,-5,0]) ycyl(d=tore_diam/2, l=10, rounding1=-1); }