// Adaptateurs divers pour connec connecter des boyaux // Originalement, une solution pour brancher un radiateur à un boyau d'arrosage // et autres tuyaux // allviews adapt // Radiateur vers 3/8 // allviews adapt_3_4 // Radiateur vers 3/4 // allviews adapt_3_4_karlon // Radiateur vers 3/4 karlon // allviews adapt_gros_3_4 // Gros radiateur vers 3/4 // allviews adapt_3_4_1_2 // 3/4 vers 1/2 // allviews adapt_1_2_1_4 // 1/2 vers 1/4 // viewopts adapt_1_2_1_4 brim5mm h2 // allviews adapt_3_4_3_8 // 3/4 vers 3/8 (boyau d'arrosage) // testviews testrad // testviews testtube // Test pour tube 3/4 // testviews testtube_1_2 // Test pour tube 1/2 // testviews testtube_1_4 // Test pour tube 1/4 // viewopts testtube_1_4 brim10mm // viewopts adapt h2 // viewopts adapt_3_4 h2 // viewopts adapt_3_4_karlon h2 // viewopts adapt_gros_3_4 h2 // allviews sortie_base sortie_ecrou // viewopts sortie_base h1 // viewopts sortie_ecrou h1 // testviews test-sortie-base // viewopts test-sortie-base h2 // allviews coude_3_4_3_4 // Coude 3/4 vers 3/4 // viewopts coude_3_4_3_4 h2 // allviews passthrough // Traverse la paroi d'un réservoir // allviews passthrough-ecrou // viewopts passthrough h2 // viewopts passthrough-ecrou h2 // allviews support_1_2 // Fixe un tuyau 1/2 au mur // printviews support_1_2:x2,y2 // 4 supports 1/2 // allviews bouchon_1_2 // Bouchon pour tuyau 1/2 include use ray1_rad=32/2; ray1_rad2=37/2; ray2_arrose=12/2; ray2_3_4=21.66/2-0.4; ray2_1_2=16/2-0.4; ray2_1_4=6/2-0.4; len1_rad=20; len2=20; len_edge=6; karlon_extra=0.1; // On ajoute un peu au diametre quand on connecte du karlon module adapt(thick,ray1,ray2){ difference(){ len1=ray1!=0 ? len1_rad : 0; union(){ if (ray1!=0){ cylinder(r=ray1,h=len1,$fn=80); translate([0,0,3]) rotate_extrude(angle=360,$fn=40) translate([ray1-1.5,0,0]) circle(r=2); translate([0,0,len1]) cylinder(r1=ray1,r2=ray2,h=ray1,$fn=80); } off1 = ray1 != 0 ? len1+ray1-5 : 0; translate([0,0,off1]) cylinder(r=ray2,h=len2,$fn=80); nb=3; for (z=[1:nb]){ translate([0,0,len1+ray1+len2/nb*z-5]) rotate_extrude(angle=360,$fn=40) translate([ray2-1.5,0,0]) circle(r=2); } off2 = ray1 != 0 ? len1+ray1+len2-len_edge+2 : len2; translate([0,0,off2]) cylinder(r1=ray2,r2=ray2-thick/2,h=len_edge,$fn=80); } union(){ if (ray1 != 0){ translate([0,0,-1]) cylinder(r=ray1-thick,h=len1+1.1,$fn=80); translate([0,0,len1]) cylinder(r1=ray1-thick,r2=ray2-thick,h=ray1,$fn=80); } translate([0,0,-1]) cylinder(r=ray2-thick,h=len1+ray1+len2+2+len_edge,$fn=80); } } } module testrad(ray1){ intersection(){ r=ray1+4; translate([-r,-r,0]) cube([2*r,2*r,10]); adapt(1,ray1,ray2_3_4); } } module testtube(ray1,ray){ intersection(){ r=ray1+4; translate([-r,-r,0]) cube([2*r,2*r,45]); translate([0,0,-len1_rad-ray1-len2+20]) adapt(2,ray1,ray); } } module adapt_gen(thick1,thick2,ray1,ray2){ len2e = len2+len_edge; lenconnect=10; translate([0,0,len2e]) rotate([180,0,0]) adapt(thick1,0,ray1); translate([0,0,len2e]) difference(){ cylinder(r1=ray1,r2=ray2+0.5,h=lenconnect,$fn=80); translate([0,0,-0.1]) cylinder(r1=ray1-thick1,r2=ray2-thick2,h=lenconnect+0.2,$fn=80); } translate([0,0,len2e+lenconnect]) adapt(thick2,0,ray2); } module coude_tube(ray,raytube,ang){ rotate_extrude($fn=80,angle=ang){ translate([ray,0,0]) circle(r=raytube); } } module coude(thick,ray1,ray2){ len2e = len2+len_edge; lenconnect=10; translate([0,0,len2e]) rotate([180,0,0]) adapt(2,0,ray1); rcoude=20; translate([0,-rcoude,len2e]) rotate([0,-90,0]) difference(){ coude_tube(rcoude,ray1,90); coude_tube(rcoude,ray1-thick,360); } translate([0,-rcoude,len2e+rcoude]) rotate([90,0,0]) adapt(2,0,ray2); } sortie_dia=ray2_3_4*2+5; sortie_len=15; module sortie_base(){ difference(){ union(){ nutthick=3; cylinder(d=sortie_dia+8, h=nutthick, $fn=6); //cylinder(d=sortie_dia,h=10,$fn=80); translate([0,0,nutthick]) thread_for_screw (diameter=sortie_dia ,length=sortie_len-nutthick); } translate([0,0,-1]) cylinder(r=ray2_3_4-2,h=sortie_len+2,$fn=80); } translate([0,0,sortie_len]) adapt(2,0,ray2_3_4); } module sortie_ecrou(){ difference(){ height=7; cylinder(d=sortie_dia+8, h=height, $fn=6); translate([0,0,-1]) thread_for_nut (diameter=sortie_dia+1.2,length=height+2); } } // permet de traverser la parois d'un réservoir module passthrough (dia){ echo ("dia=",dia); nutthick=5; lenscrew=15; difference(){ union(){ nutthick=5; cylinder(d=dia+10, h=nutthick, $fn=6); //cylinder(d=sortie_dia,h=10,$fn=80); translate([0,0,nutthick]) thread_for_screw (diameter=dia+6 ,length=lenscrew); } //translate([0,0,-2]) cylinder(r=dia/2,h=100,$fn=80); translate([0,0,-2]) thread_for_screw (diameter=dia ,length=nutthick+lenscrew+4); } } // Attache un tuyau 1/2 au mur module support (dia){ width=15; intersection(){ translate([-dia,0,0]) cube([dia*2,dia,width]); difference(){ cylinder(r=dia/2+3,h=width,$fn=80); translate([0,0,-1]) cylinder(r=dia/2+1,h=width+2,$fn=80); } } len=15; thick=4; translate([-dia/2-3,-dia/2-3,0]) cube([thick-2,dia/2+3,width]); translate([-dia-8,-dia/2-3,0]){ difference(){ cube([len,thick,width]); translate([len/2,-1,width/2]) rotate([-90,0,0]) cylinder(r=2.5,h=thick+2,$fn=40); } } } module bouchon(ray){ translate([0,0,5]) adapt(2,0,ray); cylinder(r=ray+5,h=5,$fn=80); } module main_view(view){ if (view=="adapt"){ adapt(2,2,ray1_rad,ray2_arrose); }else if (view=="adapt_3_4"){ adapt(2,2,ray1_rad,ray2_3_4); }else if (view=="adapt_3_4_karlon"){ adapt(2,2,ray1_rad,ray2_3_4+karlon_extra); }else if (view=="adapt_gros_3_4"){ adapt(2.5,2.5,ray1_rad2,ray2_3_4); }else if (view=="adapt_3_4_1_2"){ adapt_gen(2,2,ray2_3_4,ray2_1_2); }else if (view=="adapt_1_2_1_4"){ adapt_gen(2,0.75,ray2_1_2,ray2_1_4); }else if (view=="adapt_3_4_3_8"){ adapt_gen(2,2,ray2_3_4,ray2_arrose); }else if (view=="coude_3_4_3_4"){ translate([0,0,42]) rotate([-135,0,0]) coude(2,ray2_3_4,ray2_3_4); difference(){ translate([-10,21,0]) cube([20,37,12]); // Cela fonctionne à peu près. Le coude est creu, donc // ça enlève du matériel et ça en laisse qui flotte. // Il faudrait que coude() soit modifié pour être non creu // mais ça implique du travail. translate([0,0,42]) rotate([-135,0,0]) coude(11,ray2_3_4,ray2_3_4); } }else if (view=="testrad"){ testrad(ray1_rad2); }else if (view=="testtube"){ testtube(ray1_rad2,ray2_3_4); }else if (view=="testtube_1_2"){ intersection(){ cylinder(r=2*ray2_1_2,h=30,$fn=80); translate([0,0,-5]) adapt(2,0,ray2_1_2); } }else if (view=="testtube_1_4"){ intersection(){ cylinder(r=2*ray2_1_4,h=30,$fn=80); translate([0,0,-13]) adapt(0.75,0,ray2_1_4); } }else if (view=="sortie_base"){ sortie_base(); }else if (view=="test-sortie-base"){ intersection(){ translate([-20,-20,0]) cube([40,40,20]); sortie_base(); } }else if (view=="sortie_ecrou"){ sortie_ecrou(); }else if (view=="passthrough"){ passthrough(ray2_3_4*2); }else if (view == "support_1_2"){ support (18); }else if (view == "bouchon_1_2"){ bouchon (ray2_1_2); } }