include $fn=100; topHeight=140; // total height? topWidth=26; cutoutDepth=3; cutoutHeight=8.3; cutoutFromTop=17.75; shelfHeight=30.5; shelfDepth=13; ballWidth=2*INCH; thickness=145; //6*INCH; rounding=2; diff("remove","keep") { cuboid([topHeight-ballWidth,topWidth,thickness], anchor=BOTTOM, rounding=rounding){ tag("remove") { // cutout position(BACK+BOTTOM+LEFT) down(1) right(cutoutFromTop) cuboid([cutoutHeight,cutoutDepth*2,thickness+4], anchor=BOTTOM+LEFT); // shelf position(FRONT+BOTTOM+LEFT) left(1) down(1) cuboid([shelfHeight+1,shelfDepth*2,thickness+4], anchor=BOTTOM+LEFT); // relief position(BACK+BOTTOM+RIGHT) left(shelfHeight) down(1) cyl(thickness+2,d=shelfHeight*3, anchor=FRONT+BOTTOM+LEFT); } tag("keep") position(FRONT+RIGHT) cuboid([ballWidth/2,topWidth/2,thickness], rounding=rounding, anchor=FRONT); // ruler //position(TOP+BACK+LEFT) up(10) back(15) ruler(topHeight,10); } } right(topHeight/2) fwd(topWidth/4) cyl(thickness, d=ballWidth, anchor=BOTTOM, rounding=rounding);