Aquarium Pipe Guide

The canister filter I bought for my aquarium came with plastic U-bends which directed the flow over the lip of the glass. Whoever designed it obviously knew very little about fluid dynamics. It constricted flow and had hard 90° corners.
Having the tube bend smoothly without kinking required a little guide. A 20 mm vinyl tube should push snugly into this guide.
The OpenSCAD file can be adjusted for other sized tubes, different radius bends and any angle.
$fn=80;
module corner(diameter, angle, bendRadius, legLengthA, legLengthB) {
legLengthB=legLengthB-2.5;
module bend() {
rotate_extrude(angle=angle,convexity=10) {
translate([bendRadius,0,0]) {
difference() {
circle(d=diameter);
translate([0,-diameter/4,0]) square(diameter/2);
}
}
}
}
rotate([0,0,-angle]) union() {
bend();
rotate([180+(90-angle)+0.05,90,0]) translate([0,-bendRadius,0]) cylinder(d=diameter,h=legLengthA);
translate([bendRadius,0.05,0]) rotate([90,0,0]) cylinder(d=diameter,h=legLengthB);
}
}
module support(angle, outerDiameter, wall, radius) {
difference() {
corner(outerDiameter,angle,radius,0,0);
corner(outerDiameter-(wall*2),angle,radius,0.01,0.01);
}
module leg() {
difference() {
rotate([-90,0,0]) difference() {
cylinder(d=outerDiameter, h=20);
cylinder(d=outerDiameter-(wall*2), h=20);
}
translate([outerDiameter/2,0,0]) cube([outerDiameter/2,100,outerDiameter/2], center=true);
}
}
translate([radius,0,0]) leg();
translate([-radius,0,0]) rotate([0,180,0]) leg();
}
support(180,19.7,2,28);