/** * Glove and boots dryer nozzle for 40mm fans * ⓒ 2024, Joerg Reuter * CC-BY-SA, https://creativecommons.org/licenses/by-sa/4.0/ **/ tube_d_out=36; tube_d_in=38; tube_h1=8; tube_h2=tube_h1+4; tube_h3=tube_h2+5; tube_w=1.2; tube_rim=0.4; base_h=1.4; base_w=40; corner_d=base_w/15; screw_d=3.4; screw_off=4; e=0.01; $fn=$preview? 32:128; module connector() { offset=(tube_d_in-tube_d_out)/2; rotate_extrude() translate([tube_d_out/2-tube_w, 0, 0]) polygon([ [offset, 0], [0, tube_h1], [0, tube_h2], [tube_w-tube_rim, tube_h3], [tube_w, tube_h3], [tube_w, tube_h1], [tube_w+offset, 0] ]); } module plate() { width=base_w/2; coff=sqrt(corner_d)/2; difference() { cube([base_w, base_w, base_h], center=true); cylinder(h=base_h*2, r=tube_d_in/2-tube_w, center=true); translate([-width+screw_off, -width+screw_off, -base_h/2+e]) cylinder(h=base_h+2, d=screw_d+e, center=true); translate([width-screw_off, -width+screw_off, -base_h/2+e]) cylinder(h=base_h+2, d=screw_d+e, center=true); translate([-width+screw_off, width-screw_off, -base_h/2+e]) cylinder(h=base_h+2, d=screw_d+e, center=true); translate([width-screw_off, width-screw_off, -base_h/2+e]) cylinder(h=base_h+2, d=screw_d+e, center=true); translate([-width, -width, 0]) rotate([0, 0, 45]) cube([corner_d, corner_d, base_h+e], center=true); translate([width, -width, 0]) rotate([0, 0, 45]) cube([corner_d, corner_d, base_h+e], center=true); translate([-width, width, 0]) rotate([0, 0, 45]) cube([corner_d, corner_d, base_h+e], center=true); translate([width, width, 0]) rotate([0, 0, 45]) cube([corner_d, corner_d, base_h+e], center=true); } } translate([0, 0, base_h-e]) connector(); translate([0, 0, base_h/2]) plate();