$fn = 64; // The main body module body() { difference() { union() { // The bridge difference() { // A hollow cylinder cylinder(d=52.5, h=25); translate([0,0,-0.5]) cylinder(d=48, h=26); // Cut into an arc translate([-30,-9,-0.5]) cube([60, 60, 26]); // With space removed for the ugly bump translate([0,0,-0.5]) cylinder(d=50.5, h=12); } // The bumps translate([21, -10, 0]) cube([3, 1, 25]); translate([-24, -10, 0]) cube([3, 1, 25]); } // Shaped translate([0, -20, -69.5]) rotate([-90, 0, 0]) translate([0, 0, -15/2]) cylinder(d=150, h=20); translate([0, -10, 26]) rotate([90, 0, 0]) union() { translate([10.75,0,0]) cylinder(d=11, h=20); translate([-10.75,0,0]) cylinder(d=11, h=20); translate([-21.5 / 2, -5.5, 0]) cube([21.5, 11, 20]); } translate([23.3, -10, 0]) rounder(); translate([-23.3, -10, 0]) rotate([0, 0, 90]) rounder(); } } // The seat for the bubble module seat() { difference() { translate([0, -35, 13]) rotate([180, 0, 0]) difference() { scale([1,1,0.75]) union() { sphere(d=17); translate([0,0,0]) rotate([90, 0, 0]) cylinder(d=17, h=12); } translate([0,0,-1]) cylinder(d=14.7, h=10); } cylinder(d=52.5, h=25); } } // A section to round some sharp corners module rounder() { difference() { cube([5, 5, 27]); union() { translate([0, 0, 0]) cylinder(r=1, h=25); } } } body(); seat();