Do=18; //prumer zakladního válce píšťaly Di=15.98; //prumer vnitřní výstupní díry píšťaly Lo=63; //delka celé trubky píšťaly Tp=1.2; //ubrani na platku z vrchu na rovince od Do/2 Vp=3; //výška hrany platku od vrchu Do/2 Lp=17; //délka na zkosení plátku od hrany plátku k rovince Lr=17; //délka rovinky na plátku od hrany platku Ln=20; //délka kde se výška srovná s Do/2 Tup=0.5; //tupost hrany platku vyska Dup=0.4; //delka tuposti platku Vh=5.5; //výška hubicky na spicce Lh=22; //delka zuzené hubicky hlh=22; //modelace vysky elipsy huby heh=40; //delka elipsy huby ia=0; //zobacek voh=0.8; // orez huby z vrchu loh=0; //horni zobacek, vynechani x mm vrchniho orezu huby od spicky Lw=5; //délka okénka Sw=9; //sirka okenka Vki=2.5; //výška kanálku na vstupu ldb=-1.2; //ladení výšky kanalku oproti celu hubičky Vko=1.2; //výška kanálku na vystupu lda=-0.2; //ladení vystupní výšky kanalku oproti hrane plátku Sra=0.6; //srazeni nad vystupem kanalku delkově Mir=5; //zrcadlo do hlasničky kam az do dalky od čela vyst kanalku Lk=25; //délka kanálku Ski=8; //sirka kanalku na vstupu Sko=Sw; //sirka kanalku na vystupu Kr=2.5; //spodní zpevnující kruh mohutnost Tr=0.5; //modelace operky pro trubku, tlouska trubky zastrkavane //priprava klinku pro odraz do hlasničky ################# module mirrek(x,y,z) { polyhedron( points=[[0,y,0], [0,0,0], [0,0,z], [-x,y,0], [-x,0,0], [-x,0,z]], faces=[[0,1,2],[1,0,3,4],[4,3,5],[1,4,5,2], [0,2,5,3]]); } //translate([Do/2,-Do/2,-Lw]) mirrek(Do,Do/2+zz,Mir); //priprava klinku pro orez konce nad kanalkem ################# module klinek(x,y,z) { polyhedron( points=[[0,0,0], [0,y,0], [0,y,-z], [-x,0,0], [-x,y,0], [-x,y,-z]], faces=[[0,1,2],[1,0,3,4],[4,3,5],[1,4,5,2], [0,2,5,3]]); } //translate([Sw/2,zz,-Lw]) klinek(Sw,Do/2-zz,Sra); //priprava kanalku jako modulu s parametry############################# module kanalek(f,k,zz,zh,vi,vo,si,so) { polyhedron( points=[[-si/2,vi,f], [-si/2,zh,f], [-so/2,zz,k], [-so/2,vo,k], [si/2,vi,f], [si/2,zh,f], [so/2,zz,k], [so/2,vo,k]], faces=[[0,1,5,4],[1,2,6,5],[2,3,7,6],[3,0,4,7], [5,6,7,4],[0,3,2,1]]); } f=-Lk-Lw; //zacatek kanalku v delce k=-Lw; //konec kanálku zz=Do/2-Vp+lda; //výška základny kanálku s ladenou vyskou na vystupu zh=Do/2-Vp+ldb; //výška základny kanálku na vstupu vi=zz+Vki+ldb; //svetlost vstupu kanalku vyskove vo=zz+Vko+lda; //svetlost vystupu kanálku vyskove si=Ski; //svetlost vstupu kanalku sirkove so=Sko; //svetlost vystupu kanalku sirkove //translate([0,0,Lw]) kanalek(f,k, zz,zh,vi, vo, si, so); //modulace platku########################### module platek(r,p,u,n,z,q,a,b,c,s) { polyhedron( points=[[-s/2,z,0], [-s/2,q,r], [-s/2,a,p], [-s/2,a,u], [-s/2,b,n], [-s/2,c,n], [-s/2,z,u], [s/2,z,0], [s/2,q,r], [s/2,a,p], [s/2,a,u], [s/2,b,n], [s/2,c,n], [s/2,z,u]], faces=[[0,7,8,1],[1,8,9,2],[2,9,10,3],[3,10,11,4],[4,11,12,5],[5,12,13,6], [6,13,7,0], [13,12,11,10,9,8,7],[0,1,2,3,4,5,6]]); } p=Lp; //delka platku se zkosením u=Lr; //kam az jde po vyrovnaní zkoseni rovina n=Ln; //a az tady se to z roviny srovná s vnejsim prumerem trubky Do s=Do; //sirka platku a radej vic a=Do/2-Tp; //ubrani na rovince b=Do/2; //vybeh na prumer Do c=Di/2; //sebeh na prumer Di z=Do/2-Vp; //vyska spodni hrany platku q=Do/2-Vp+Tup; //vyska tuposti platku r=Dup; //delka skoseni tuposti platku //platek(r,p,u,n,z,q,a,b,c,s); //modulace uber########################### module uber(pu,uu,nu,nz,zu,au,su) { polyhedron( points=[[-su/2,zu,pu], [-su/2,au,uu], [-su/2,au,nz], [-su/2,zu,nu], [su/2,zu,pu], [su/2,au,uu], [su/2,au,nz], [su/2,zu,nu]], faces=[[0,4,5,1],[1,5,6,2],[2,6,7,3],[3,7,4,0],[5,4,7,6],[0,1,2,3]]); } pu=-Lw; //od konce kanálku uu=Lp; //az do vyronani plátku s rovinou nz=Lr; //kam az jde po vyrovnaní zkoseni rovina nu=Ln; //a az tady se to z roviny srovná s vnejsim prumerem trubky Do su=Do; //sirka platku a radej vic au=Do/2-Tp; //ubrani na rovince zu=Do/2; //vyska na obrysu vrchu pistalky //uber(pu,uu,nu,nz,zu,au,su); //kruh na konci module kruh() difference() { translate([0,0,Lo-Lk-Lw]) cylinder(Kr,Do/2,Do/2+Kr/2,$fn=400); translate([0,0,Lo-Lk-Lw]) cylinder(Kr,Di/2,Di/2,$fn=400); } //kruh(); //Polozeni zakladu pistaly s hubou a oknem module zaklad() color("red") difference() { translate([0,0,-Lk-Lw]) cylinder(Lo,Do/2,Do/2, $fn=400); //zaklad valec translate([-Do/2,-hlh/2+Do/2-Vh,-Lk-Lw-heh/2+Lh]) rotate([0,90,0])resize([heh,hlh,Do]) cylinder(10,10,10,$fn=400); // vykus huby translate([-Sw/2,0,-Lw]) cube([Sw,Do/2,Lw+Lr]); //vytvorení okénka translate([0,0,-Lw]) cylinder(Ln+Lw,Di/2-Tr,Di/2-Tr,$fn=400); //vyvrt valce } //zaklad(); module komplet() //vlozeni platku color("orange") union() { zaklad(); platek(r,p,u,n,z,q,a,b,c,s); translate([Do/2,-Do/2,-Lw]) mirrek(Do,Do/2+zz,Mir); translate([Sw/2,Do/2-Vp,-Lw]) cube([(Do-Sw)/2,Vp,Lp+Lw]); //vlozka do boku okenka translate([-Sw/2-(Do-Sw)/2,Do/2-Vp,-Lw]) cube([(Do-Sw)/2,Vp,Lp+Lw]); //vlozka do boku okenka translate([0,0,Ln]) cylinder(Tr,Do/2,Do/2, $fn=400); //zarazka pro trubku translate([-Sw/4,Do/2-Vh,-Lk-Lw+ia])rotate([0,90,0]) cylinder(Sw/2,ia,ia,$fn=100); //zobacek } //komplet(); module orez() //vlozeni platku color("grey") difference() { komplet(); uber(pu,uu,nu,nz,zu,au,su); //orez za plátkem translate([Sw/2,zz+Vko+lda,-Lw]) klinek(Sw,Do/2-zz,Sra); //orez nad vystupem kanalku translate([0,0,Ln+Tr]) cylinder(Lo,Di/2,Di/2,$fn=400); //vrt pro trubku translate([0,0,Ln]) cylinder(Tr,Di/2-Tr,Di/2,$fn=400); // zkoseni zarazky kanalek(f,k, zz, zh, vi, vo, si, so); //vytvoreni kanalku } //orez(); module cistka() color("cyan") intersection() { orez(); translate([0,0,-Lk-Lw]) cylinder(Lo,Do/2,Do/2,$fn=400); //zaklad valec } //cistka(); module zdoby() color("brown") union() { cistka(); kruh(); //ozdoba a zpevnení } //zdoby(); module rezan() color("green") difference() { zdoby(); translate([0,0,Lo-Lk-Lw]) cylinder(2,Di/2,Di/2+0.2,$fn=400); //nabeh pro trubku translate([0,Do-voh,-Lk/2-Lw+loh]) cube([Do,Do,Lk-loh], center=true); //rez //translate([Do/2,0,0]) cube([Do,Do+Kr,Lo*2], center=true); //rez } translate([0,0,Lo-Lk-Lw+Kr]) rotate([0,180,0]) rezan(); //stabilizacni kruh pro prilnutí k heatplechu vvv=0.2; //vyska stojanku module zajisteni() difference() { translate([0,0,0]) cylinder(vvv, d=Do*2); translate([0,0,0]) cylinder(vvv, r=Do/2+Kr/2); } zajisteni(); //Bobeš //www.51.cz