// allviews cuve_droite cuve_gauche rack cuve_pompe assemblage asm-rack pdu include cuve_len=13*10*12+30; // 13 cm pour un S9. On ajoute 1 cm pour le jeu cuve_height=(3+27+3+3)*10; // 3 cm sous la plaque, 27 cm pour les S9 // sans ventilateurs // 3 cm de plus et 3 cm pour l'évacuation. cuve_depth=2*29*10; cuve_basey=10*2.5*10; // Première cuve miner_height=27*10; cuve_stepy=cuve_height+miner_height+100; // distance verticale entre les cuves cuve_thick=2; cuve_videw=70; cuve_videh=70; cuve_pompe_len=24*2.5*10; // 2 pieds de long cuve_pompe_width=cuve_depth/2; cuve_pompe_height=8.5*2.5*10; // Dimensions intérieurs d'un conteneur de 20 pieds con_len=5.867*1000; con_width=2.330*1000; con_height=2.350*1000; module channel(channelw,channelt){ difference(){ translate([-channelw,0,0]) cube([channelw,channelt,cuve_height]); union(){ translate([-channelw/2,channelt+10,cuve_height/5]) rotate([90,0,0]) cylinder(r=4,h=20+channelt,$fn=40); translate([-channelw/2,channelt+10,4*cuve_height/5]) rotate([90,0,0]) cylinder(r=4,h=20+channelt,$fn=40); } } cube([channelt,channelw,cuve_height]); } module cuve(left){ len=cuve_len; height=cuve_height; depth=cuve_depth; thick=cuve_thick; t2=thick*2; difference(){ cube([len+t2,depth+t2,height+thick]); union(){ translate([thick,thick,thick]) cube([len,depth,height+1]); translate([50,depth-10, height-30]) cube([cuve_len-100,20,35+3]); } } cdepth=cuve_videw; cheight=cuve_videh; translate([20,depth+thick,height-(left?100:160)]) rotate([0,left ? 2 : -2,0]){ difference(){ len_40=len-40; cube([len_40,cdepth,cheight]); union(){ translate([thick,thick,thick]) cube([len_40-t2,cdepth-t2,cheight+1]); posx=left ? len_40-10 : -10; translate([posx,cdepth/2,cheight/2]) rotate([0,90,0]) cylinder(r=30,h=40*thick,$fn=40); } } } // Les supports sur les cotés channelw=1.5*2.5*10; channelt=1/8*2.5*10; posy=cuve_depth/2+channelw; color("red") translate([-cuve_thick*2,posy,0]){ channel(channelw,channelt); } color("red") translate([cuve_thick*2+cuve_len,posy,0]){ translate([cuve_thick,0,cuve_height]) rotate([0,180,0]) channel(channelw,channelt); } } module rack(){ thick=1.5*2.5*10; len=6*thick; color("green") for (y=[0:2]){ translate([-cuve_len/2-thick-cuve_thick,cuve_depth/2,0]){ if (y==0) cube([thick,thick,con_height]); translate([thick,-len/2+thick/2,cuve_basey+cuve_stepy*y-thick]) cube([thick,len,thick]); } translate([cuve_len/2+cuve_thick*2,cuve_depth/2,0]){ if (y==0) cube([thick,thick,con_height]); translate([-thick,-len/2+thick/2,cuve_basey+cuve_stepy*y-thick]) cube([thick,len,thick]); } } } pdu_height=3.40*2.5*10; pdu_width=17.15*2.5*10; pdu_depth=6*2.5*10; pdu_depth2=pdu_depth+1.39*2.5*10; module pdu(){ cube([pdu_depth,pdu_width,pdu_height]); cube([pdu_depth2,pdu_width/4,pdu_height]); } module asm_rack(left){ rack(); for (y=[0:2]){ translate([-cuve_len/2,0,cuve_basey+cuve_stepy*y]){ cuve(left); posy= !left ? cuve_depth+cuve_videw/2 : -cuve_videw/2; translate([-80,posy,cuve_height-135]) color("black") rotate([0,90,0]) cylinder(r=1*2.5*10,h=90,$fn=40); } pduy= cuve_depth/2-pdu_width/2; translate([cuve_len/2+1.5*2.5*10,pduy ,cuve_basey+cuve_stepy*y+cuve_height]){ for (py=[0:1]){ offy=py==0 ? 3*2.5*10 : 0; translate([0,offy,-3*2.5*10+py*(pdu_depth2+80)]) color("orange") rotate([0,90,0]) pdu(); } } } tuyaur=1.5*2.5*10; // 1.5 pouces rayon. posty=!left ? cuve_depth+cuve_videw/2 : -cuve_videw/2; translate([-cuve_len/2-tuyaur-50,posty,0]){ offy=2*2.5*10; translate([0,0,offy]) cylinder(r=tuyaur ,h=cuve_basey+2*cuve_stepy+cuve_height-offy-100,$fn=40); } posl=-cuve_len/2-6*2.5*10; posy= !left ? cuve_depth/2+cuve_videw+10 : -cuve_videw-10; translate([posl,posy,0]) cuve_pompe(); } module cuve_pompe(){ t2=cuve_thick*2; difference(){ cube([cuve_pompe_len+t2,cuve_pompe_width+t2,cuve_pompe_height]); translate([cuve_thick,cuve_thick,cuve_thick]) cube([cuve_pompe_len,cuve_pompe_width,cuve_pompe_height]); } } module assemblage(){ // Container de 20 pieds %cube([con_len,con_width,con_height]); // Panneau électrique pan_width=60*10; pan_depth=6*25; pan_height=4*30*10; translate([50*2.5*10,0,3*30*10]) cube([pan_width,pan_depth,pan_height]); // Porte porte_height=72*2.5*10; porte_width=30*2.5*10; porte_depth=6*2.5*10; color("white") translate([10*2.5*10,-porte_depth/2,0]) cube([porte_width,porte_depth,porte_height]); // Montre la largeur translate([10*30*10,con_width/2-1000/2,300]) cube([50,1000,50]); for (x=[0:2]){ basex=150; posx=basex+con_len/3*x+cuve_len/2; if (x != 0){ translate([posx,0,0]) asm_rack(true); } translate([posx,con_width-cuve_depth,0]) asm_rack(false); } } module main_view(view){ echo (); echo ("Dimensions en millimètres"); echo ("cuve_len=",cuve_len); echo ("cuve_height=",cuve_height); echo ("cuve_depth=",cuve_depth); echo (); if (view=="cuve_gauche"){ cuve(true); }else if (view=="cuve_droite"){ cuve(false); }else if (view=="rack"){ rack(); }else if (view=="cuve_pompe"){ cuve_pompe(); }else if (view=="assemblage"){ assemblage(); }else if (view=="asm-rack"){ asm_rack(false); translate([cuve_len+1500,0,0]) asm_rack(true); }else if (view=="pdu"){ pdu(); } }