$fn = 100; translate([0, 0, 12]) rotate ([0,180,0]) bioflow_top() ; module bioflow_top() { union() { difference() { // Main cube translate([0,0,6]) cube([110, 163, 12], center = true); // 45 degree corners translate([53,81,5]) rotate([0,0,45]) cube([15, 28, 30], center = true); translate([53,-81,5]) rotate([0,0,45]) cube([28, 15, 30], center = true); translate([-53,-81,5]) rotate([0,0,45]) cube([15, 28, 30], center = true); translate([-53, 81,5]) rotate([0,0,45]) cube([28, 15, 30], center = true); difference() { // Wide cut + corners for top cover translate([0,0,-2.5]) cube([103, 156, 10], center = true); translate([50,76,5]) rotate([0,0,45]) cube([10, 28, 30], center = true); translate([50,-76,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); translate([-50,-76,5])rotate([0,0,45]) cube([10, 28, 30], center = true); translate([-50,76,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); } difference() { // Threshold cut + corners translate([0,0,9]) cube([103, 156, 10], center = true); translate([50,76,5]) rotate([0,0,45]) cube([10, 28, 30], center = true); translate([50,-76,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); translate([-50,-76,5])rotate([0,0,45]) cube([10, 28, 30], center = true); translate([-50,76,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); } difference() { // Small cut + corners translate([0,0,4]) cube([97, 150, 10], center = true); translate([47.75,74,5]) rotate([0,0,45]) cube([10, 28, 30], center = true); translate([47.75,-74,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); translate([-47.75,-74,5])rotate([0,0,45]) cube([10, 28, 30], center = true); translate([-47.75,74,5]) rotate([0,0,45]) cube([28, 10, 30], center = true); } difference() { translate([51.5,0,6]) cube([8, 40, 18], center = true); translate([53.5,24,6]) rotate([0,0,45]) cube([10, 15, 16], center = true); translate([53.5,-24,6]) rotate([0,0,-45]) cube([10, 15, 16], center = true); } difference() { translate([0,-77.0,7]) cube([40, 8, 18], center = true); translate([-24,-79.5,6]) rotate([0,0,45]) cube([10, 15, 16], center = true); translate([24, -79.5,6]) rotate([0,0,-45]) cube([10, 15, 16], center = true); } } difference() { translate([56.5,0,6]) cube([3.0, 44, 12], center = true); translate([56,26,6]) rotate([0,0,45]) cube([10, 15, 14], center = true); translate([56,-26,6]) rotate([0,0,-45]) cube([10, 15, 14], center = true); translate([54,0,13.5]) rotate([0,-45,0]) cube([5, 33, 5], center = true); } difference() { translate([0,-83,6]) cube([44, 3.0, 12], center = true); translate([-25.5,-82.5,6]) rotate([0,0,45]) cube([10, 15, 14], center = true); translate([25.5,-82.5,6]) rotate([0,0,-45]) cube([10, 15, 14], center = true); translate([0,-80,12.5]) rotate([-45,0,0]) cube([33, 5, 5], center = true); } } }