include // origin is bottom left corner. t = 0.3; t_bot = 1; r = 1; $fn = 36; print = 0; // 0 or 1 body = [29,22]; body_h = 5; left(50*print) { up(1) rect_tube(size=body, wall=t, h=body_h-1, anchor=BOTTOM+LEFT+FWD, rounding=r, irounding=r); up(body_h) cuboid([body[0], body[1], t_bot], anchor=BOTTOM+LEFT+FWD, rounding=r, edges="Z"); difference() { up(2) rect_tube(size=body, wall=t*3, h=body_h - 2, anchor=BOTTOM+LEFT+FWD, rounding=r, irounding=r); right(7) back(20) cuboid([10,10,10]); right(22) back(20) cuboid([10,10,10]); } back(17) up(body_h) { right(7) cyl(h=1.5, d=4, anchor=TOP); right(22) cyl(h=1.5, d=4, anchor=TOP); } back(13) up(body_h) { right(7) cuboid([7,1,2.5], anchor=TOP); right(22) cuboid([7,1,2.5], anchor=TOP); } color("red") back(17.5) up(body_h+t) { right(7) cuboid([10.5,8.5,3], anchor=BOTTOM, rounding=2, edges="Z"); right(22) cuboid([10.5,8.5,3], anchor=BOTTOM, rounding=2, edges="Z"); } }