3 module hose_ferule(t=0.3) { //t = tolerance
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);
9 cylinder(d=t+12, h=30);
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);
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
26 translate([0,0,0.01]) cylinder(d1=23.5, d2=20.5, h=30);
28 rotate_extrude() rotate([0,0,45]) translate([15,30.4,0]) square(5, center=true);
33 module snap_fit(t=0) {
35 translate([-9,-2,0]) cylinder(d=2+t, h=31);
36 translate([-200,-2,0]) cylinder(d=2+t, h=31);
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);
42 module cone_cutout(t=0) {
45 translate([-25,0,0]) cube(50);
48 mirror([1,0,0]) snap_fit(t);
56 translate([0,5,0]) difference() {