//ed: external diameter //id: internal diameter //r: bend radius //quarter: if true, yields a 90° turn //half: if true, yields a 180° turn //http://spolearninglab.com/curriculum/lessonPlans/hacking/resources/software/3d/openscad/openscad_helpers.html# bend_pipe(5,0,10,true); module bend_pipe(ed, id, r, quarter=false, half=false) { difference() { intersection() { rotate_extrude(convexity=5) translate([r + id / 2, 0, 0]) circle(r=ed / 2); if(quarter) { translate([0,0,-r]) cube([r*2,r*2,r*2]); } else if(half) { translate([0,-r*2,-r]) cube([r*4,r*4,r*2]); } } rotate_extrude(convexity=5) translate([r + id / 2,0,0]) circle(r=id / 2); } }