plate_w = 30; //Wall thickness. inner_r = 80; outer_r = 100; outer_l = 20; bend_r = 200; block_h = 2*(outer_r + plate_w); block_w = bend_r + outer_r + outer_l +plate_w; mounting_hole_r = plate_w/2; corner_r = plate_w*0.7; module bend_cut() //Used to cut out the bend. { rotate_extrude() translate([bend_r,0])circle(r=inner_r); translate([bend_r,0]) rotate([90,0,0]) cylinder(r=outer_r, h = block_w); translate([0,bend_r]) rotate([0,-90,0]) cylinder(r=outer_r, h = block_w); } module side_round_cube(w,l,h,r) { translate([r,0]) cube([w-2*r,l,h]); translate([0,r]) cube([w,l-2*r,h]); translate([r,r]) cylinder(r=r, h=h); //Corners round. translate([w-r,r]) cylinder(r=r, h=h); translate([r,l-r]) cylinder(r=r, h=h); translate([w-r,l-r]) cylinder(r=r, h=h); } module thing() { difference() { side_round_cube(block_w,block_w,block_h, corner_r); translate([outer_l,outer_l, block_h/2]) bend_cut(); //Cut from the corners. translate([block_w,block_w, plate_w]) cylinder(r= sqrt(2)*block_w -bend_r-inner_r-plate_w, h=block_h); translate([0,0, plate_w]) cylinder(r= bend_r-inner_r-plate_w, h=block_h); //Cut mounting holes. translate((bend_r-inner_r-plate_w)*[1,1,-1]/sqrt(8)) cylinder(r= mounting_hole_r, h=3*block_h); translate([block_w-2*plate_w,block_w-2*plate_w,-block_h]) cylinder(r= mounting_hole_r, h=3*block_h); } } thing();