| 1 | $fn=100; |
| 2 | |
| 3 | module hose_ferule(t=0.3) { //t = tolerance |
| 4 | //thread side |
| 5 | translate([0,0,2]) hull() rotate_extrude() translate([(t+13.5-4)/2,0,0]) circle(d=4); |
| 6 | cylinder(d=t+13.5, h=2); |
| 7 | |
| 8 | //crimp |
| 9 | cylinder(d=t+12, h=30); |
| 10 | |
| 11 | //hose side |
| 12 | translate([0,0,10.5]) { |
| 13 | translate([0,0,2]) hull() rotate_extrude() translate([(t+13.5-4)/2,0,0]) circle(d=4); |
| 14 | translate([0,0,6.5]) hull() rotate_extrude() translate([(t+13.5-4)/2,0,0]) circle(d=4); |
| 15 | translate([0,0,2]) cylinder(d=t+13.5, h=6.5-2); |
| 16 | } |
| 17 | |
| 18 | //hose |
| 19 | translate([0,0,15]) cylinder(d=t+12.5, h=30); |
| 20 | translate([0,0,29]) cylinder(d1=t+12.5, d2=20, h=5); //inner bevel |
| 21 | } |
| 22 | |
| 23 | module hose_cone() { |
| 24 | difference() { |
| 25 | //cone |
| 26 | translate([0,0,0.01]) cylinder(d1=23.5, d2=20.5, h=30); |
| 27 | //outer bevel |
| 28 | rotate_extrude() rotate([0,0,45]) translate([15,30.4,0]) square(5, center=true); |
| 29 | hose_ferule(); |
| 30 | } |
| 31 | } |
| 32 | |
| 33 | module snap_fit(t=0) { |
| 34 | hull() { |
| 35 | translate([-9,-2,0]) cylinder(d=2+t, h=31); |
| 36 | translate([-200,-2,0]) cylinder(d=2+t, h=31); |
| 37 | } |
| 38 | translate([-11.5,0,0]) cube([5+t,2+t,66], center=true); |
| 39 | translate([-9.3,0.6,0]) rotate([0,0,55]) cube([2.5+t,2.5+t,66], center=true); |
| 40 | } |
| 41 | |
| 42 | module cone_cutout(t=0) { |
| 43 | difference() { |
| 44 | hose_cone(); |
| 45 | translate([-25,0,0]) cube(50); |
| 46 | |
| 47 | snap_fit(t); |
| 48 | mirror([1,0,0]) snap_fit(t); |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | // Instantiate |
| 53 | |
| 54 | cone_cutout(t=0.3); |
| 55 | |
| 56 | translate([0,5,0]) difference() { |
| 57 | hose_cone(); |
| 58 | cone_cutout(); |
| 59 | } |