+module HoseSideElevation(){
+ or = hose_head_dia/2 + hose_side_thick;
+
+ x3 = 0;
+ x4 = x3 + hose_base_offset;
+ x5 = x4 + hose_head_dia/2;
+ x6 = x4 + hose_head_dia;
+ x7 = x5 + or;
+
+ z0 = 0;
+ zm = -or;
+
+ difference(){
+ intersection(){
+ translate([-100,-100]) square([x7+210, 100]);
+ hull(){
+ translate([x5, 0]) circle(r=or);
+ translate([-1, zm]) square([1,z0-zm]);
+ }
+ }
+ translate([x5,0]) circle(r=hose_head_dia/2);
+ }
+}
+
+module HoseSidePlan(){
+ ro = hose_inner_dia/2 + hose_side_width;
+ ri = (hose_inner_dia/2);
+
+ apx = sqrt( ri*ri - (hose_aperture*hose_aperture)/4 );
+ apsq = hose_base_offset + apx - hose_aperture/sqrt(2);
+ echo(apsq);
+
+ difference(){
+ hull(){
+ translate([-1, -ro]) square([1, ro*2]);
+ translate([hose_base_offset, 0]) circle(r= ro);
+ }
+ translate([hose_base_offset, 0]) circle(r= hose_inner_dia/2);
+ translate([apsq, 0])
+ rotate(-45)
+ square([50,50]);
+ }
+
+ %square(center=true, [100, hose_aperture]);
+}
+
+module HoseSide(){
+ for (m=[0,1]) {
+ mirror([0,m,0])
+ translate([0, hose_head_width, 0])
+ rotate([90,0,0])
+ linear_extrude(height= hose_side_width)
+ HoseSideElevation();
+ }
+}
+
+module Clip(){
+ PumpSide();
+ HoseSide();
+}
+
+module ClipPrint(){
+ rotate([180,0,0])
+ Clip();
+}
+