// ----------------------------------------------------- // Anycubic Hotend Cover V2a // für einen Lüfter vom Typ "Noctua NF-A4x10 FLX 40mm" // und einen Lüfter vom Typ "Noctua NF-A4x20 FLX 40mm" // siehe: https://www.amazon.de/dp/B009NQLT0M // bzw.: https://www.amazon.de/dp/B071J8CZP9 // und: https://noctua.at/de/nf-a4x10-flx/specification // Detlev Ahlgrimm, 11.2018 // // 23.11.2018 V2 Vergrößerung der Lüfteraussparung an der Front um 10mm Tiefe, // die Düse muss für das Chassis nicht mehr als STL-Datei vorliegen // 19.01.2019 v2a Düse vorne mit mehreren Ausgängen auf speziellen Wunsch von tr3bun // ----------------------------------------------------- // vor dem Umbau liegt der db-Wert konstant oberhalb von 50 - Spitzen bis 56 // nach Umbau auf die Version 1 (2x10mm Lüfter) liegt der db-Wert meist um 45, einzelne Spitzen bei max. 50 // die Düse braucht 51 Minuten zum Druck, das Chassis 02:48 Stunden aa=[64, 70, 50]; // Abmessungen außen ([65, 71, 52]) rf=2; // Radius Front ws=1.5; // Wandstärke ahoy=3; // Aussparung hinten/oben Y ahoz=15; // Aussparung hinten/oben Z blo=[7, 6]; // Abstand der Befestigungslöcher oben [x, y] hlh=[11, 6, 10]; // Hinterer Lochhalter hlhl=[5.5, 0, 7]; // Hinterer Lochhalter, Loch laa=[40, 40, 12]; // Lüfter Abmessungen außen lla=32; // Lüfter Lochabstand (lla X lla) lbd=5; // Lüfter Befestigungsloch Durchmesser ldl=36; // Lüfter Durchlass-Loch hfp=[aa.x-ws, 44, 24]; // Position des Hotend-Lüfter-Grills zlt=0; // zusätzliche Lüfter-Tiefe $fn=100; // ----------------------------------------------------- // ein cube() mit abgerundeten Ecken // ----------------------------------------------------- module cubeRund(v, r=2) { hull() { translate([ r, r, 0]) cylinder(r=r, h=v.z); translate([v.x-r, r, 0]) cylinder(r=r, h=v.z); translate([ r, v.y-r, 0]) cylinder(r=r, h=v.z); translate([v.x-r, v.y-r, 0]) cylinder(r=r, h=v.z); } } // ----------------------------------------------------- // lg : Laenge Gewinde // lm : Laenge Mutter // ----------------------------------------------------- module SchraubeM3(lg=20, lm=3.1) { union() { cylinder(r=3.1, h=lm, $fn=6); translate([0, 0, lm-0.1]) cylinder(d=3.3, h=lg+0.1); } } // ----------------------------------------------------- // // ----------------------------------------------------- module LuefterModell() { difference() { translate([-laa.x/2, -laa.y/2, 0]) cubeRund(laa); translate([0, 0, -0.1]) cylinder(d=ldl, h=laa.z+0.2); translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, -0.1]) cylinder(d=lbd, h=laa.z+0.2); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, -0.1]) cylinder(d=lbd, h=laa.z+0.2); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, -0.1]) cylinder(d=lbd, h=laa.z+0.2); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, -0.1]) cylinder(d=lbd, h=laa.z+0.2); } } //!LuefterModell(); // ----------------------------------------------------- // v : Abmessungs-Vektor // r : Radius der Aussparungen // w : Wandstaerke zwischen den Aussparungen // i : invertieren (true:Sechseck-Umrandungen, false:Sechsecke) // a : anschraegen 45 Grad (bei true) // ----------------------------------------------------- module HexPatternV2(v, r=10, w=1, i=true, a=false) { dx=r*1.5; dy=r*0.866025; // 0.866025=sqrt(3)/2 sy=(i) ? -0.1 : 0; az=(i) ? 0.2 : 0; r1=(a) ? r-w/2-(v.z+0.2) : r-w/2; intersection() { difference() { if(i) cube(v); for(yi=[0:1:v.y/dy+1]) { for(xi=[0:1:v.x/(2*dx)+1]) { if((yi%2)==1) { translate([xi*2*dx+dx, yi*dy, sy]) cylinder(r1=r1, r2=r-w/2, h=v.z+az, $fn=6); } else { translate([xi*2*dx, yi*dy, sy]) cylinder(r1=r1, r2=r-w/2, h=v.z+az, $fn=6); } } } } if(!i) cube(v); } } // ----------------------------------------------------- // r : Aussenradius // d : Material-Durchmesser // ws : Wandstärke // a : Oeffnungswinkel // ----------------------------------------------------- module RingTeil(r, d, ws=1, a=0) { da=2*(r+d); difference() { translate([0, 0, d/2]) rotate_extrude() translate([r, 0, 0]) circle(d=d); translate([0, 0, d/2]) rotate_extrude() translate([r, 0, 0]) circle(d=d-2*ws); if(a<=90) translate([0, 0, -0.1]) linear_extrude(d+0.2) polygon([[0,0], [0,da], [da,da], [sin(a)*(r+d), cos(a)*(r+d)]]); else if(a<=180) translate([0, 0, -0.1]) linear_extrude(d+0.2) polygon([[0,0], [0,da], [da,da], [da,-da], [sin(a)*(r+d), cos(a)*(r+d)]]); else if(a<=270) translate([0, 0, -0.1]) linear_extrude(d+0.2) polygon([[0,0], [0,da], [da,da], [da,-da], [-da,-da], [sin(a)*(r+d), cos(a)*(r+d)]]); else translate([0, 0, -0.1]) linear_extrude(d+0.2) polygon([[0,0], [0,da], [da,da], [da,-da], [-da,-da], [-da,da], [sin(a)*(r+d), cos(a)*(r+d)]]); } } //!RingTeil(50, 20, a=90); // ----------------------------------------------------- // ein cube(v), bei dem die beiden vorderen Ecken // mir r abgerundet sind // ----------------------------------------------------- module BoxVorneRund(v, r=rf) { translate([r, r, 0]) cylinder(r=r, h=v.z); translate([v.x-r, r, 0]) cylinder(r=r, h=v.z); translate([r, 0, 0]) cube([v.x-2*r, 2*r, v.z]); translate([0, r, 0]) cube([v.x, v.y-r, v.z]); } // ----------------------------------------------------- // Ein Hex-Loch mit dem Durchmesser d zum ausscheinden // d: Durchmesser // h: Höhe // sx: Hex-Shift X // sy: Hex-Shift Y // hr: Hex-Radius // b: Breite der Hex-Verstrebungen // ----------------------------------------------------- module HexLoch(d=ldl, h=ws+0.2, sx=0, sy=0, hr=5, b=1.6) { intersection() { translate([-d+sx, -d+sy, 0]) HexPatternV2([2*d, 2*d, h], hr, b, false); cylinder(d=d, h=h); } } // ----------------------------------------------------- // der LüfterGrill samt Löcher für die // Befestigungsschrauben // ----------------------------------------------------- module LuefterAusschneider(l=lbd) { HexLoch(d=ldl, h=ws+0.2, sx=6, sy=1.3); translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d=l, h=ws+0.2); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d=l, h=ws+0.2); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d=l, h=ws+0.2); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d=l, h=ws+0.2); } //!LuefterAusschneider(); // ----------------------------------------------------- // // ----------------------------------------------------- module MutterHalterObenLinks(h=15) { difference() { hull() { translate([rf-1/sqrt(2)*rf+0.1, rf-1/sqrt(2)*rf+0.1, 0]) cylinder(r=0.1, h=0.1); translate([rf, rf, 2*rf]) cylinder(r=rf, h=h-2*rf); translate([rf, 0, h-6]) cube([9, 10, 6]); translate([0, rf, h-6]) cube([11, 10, 6]); } translate([blo.x, blo.y, 0]) cylinder(d=3.2, h=h-6+0.1); translate([blo.x, blo.y, h-2+0.2]) cylinder(d=3.3, h=3); // oben erstmal ohne Loch, damit es sauber gedruckt werden kann -> aufbohnen translate([blo.x, blo.y, h-6]) rotate([0, 0, 0]) cylinder(d=6.5, h=4, $fn=6); translate([blo.x, blo.y-5.6/2, h-5]) //cube([10, 5.6, 3]); // Platz für die M3-Mutter linear_extrude(3) polygon([[0,0], [10,-1], [10,5.6+1], [0,5.6]]); } } /*!difference() { MutterHalterObenLinks(); translate([-1, -1, 11]) cube([20, 20, 20]); }*/ // ----------------------------------------------------- // // ----------------------------------------------------- module MutterHalterHintenLinks() { difference() { rotate([90, 0, 0]) translate([0, 0, -hlh.y]) linear_extrude(hlh.y) polygon([[0,0], [hlh.x,0], [hlh.x,hlh.z], [0,hlh.z*2], [0,hlh.z]]); translate([hlhl.x, -0.1, hlhl.z]) rotate([-90, 0, 0]) cylinder(d=3.2, h=hlh.y+0.2); translate([hlhl.x, (hlh.y-3)/2, hlhl.z]) rotate([-90, 30, 0]) cylinder(d=6.3, h=3, $fn=6); translate([hlhl.x-5.5/2, (hlh.y-3)/2, hlhl.z]) cube([5.5, 3, 20]); } } /*!difference() { MutterHalterHintenLinks(); translate([-1, -1, -1]) cube([20, 4, 30]); }*/ // ----------------------------------------------------- // // ----------------------------------------------------- module LuefterVorbau() { difference() { union() { hull() { //BoxVorneRund(aa); translate([ rf, rf, 0]) cylinder(r=rf, h=aa.z); translate([aa.x-rf, rf, 0]) cylinder(r=rf, h=aa.z); translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) cubeRund([laa.x+6, laa.y+6, 29+zlt]); } } translate([-1, ws, -1]) cube([100, 100, 100]); translate([-1, -0.3, aa.z]) cube([100, 10, 10]); translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) union() { translate([(laa.x+6)/2, (laa.y+6)/2, 29-ws-0.1+zlt]) scale([1, 1, 2]) LuefterAusschneider(3.5); translate([2, 2, -20-ws]) cubeRund([laa.x+2, laa.y+2, 29+20+zlt]); } } } //!LuefterVorbau(); //#translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([3, 3, -20-ws]) cubeRund([laa.x, laa.y, 25+20]); // ----------------------------------------------------- // // ----------------------------------------------------- module HotendCover() { difference() { union() { BoxVorneRund(aa); // die massive Box... translate([hfp.x-0.1+ws, hfp.y, hfp.z]) rotate([0, 90, 0]) { translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d1=9, d2=7, h=1); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d1=9, d2=7, h=1); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d1=9, d2=7, h=1); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d1=9, d2=7, h=1); } } translate([ws, ws, -0.1]) BoxVorneRund([aa.x-2*ws, aa.y, aa.z+0.2]); // ...leermachen translate([-0.1, aa.y-ahoy, aa.z-ahoz]) cube([aa.x+0.2, ahoy+0.1, ahoz+0.1]); // Aussparung hinten oben translate([hfp.x+ws, hfp.y, hfp.z]) rotate([0, 90, 0]) { translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d1=lbd, d2=6.5, h=1.1); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d1=lbd, d2=6.5, h=1.1); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d1=lbd, d2=6.5, h=1.1); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d1=lbd, d2=6.5, h=1.1); } translate([hfp.x-0.1, hfp.y, hfp.z]) rotate([0, 90, 0]) scale([1, 1, 2]) LuefterAusschneider(); translate([ -0.1, hfp.y, hfp.z]) rotate([0, 90, 0]) HexLoch(d=ldl, h=ws+0.2, sx=6, sy=1.3); } translate([ 0, 0, aa.z-15]) MutterHalterObenLinks(); translate([aa.x, 0, aa.z-15]) mirror([1, 0, 0]) MutterHalterObenLinks(); translate([ 0, aa.y-hlh.y, 0]) MutterHalterHintenLinks(); translate([aa.x, aa.y-hlh.y, 0]) mirror([1, 0, 0]) MutterHalterHintenLinks(); } //!HotendCover(); // ----------------------------------------------------- // // ----------------------------------------------------- module Chassis(mitSupport=true) { difference() { union() { difference() { HotendCover(); translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([2, 2, -20-ws]) cubeRund([laa.x+2, laa.y+2, 29+20]); } /*translate([aa.x/2-(laa.x+6)/2, ws-0.8, 28]) rotate([0, 45, 0]) cube([2, 0.8, 25]); translate([aa.x/2-(laa.x+6)/2, ws-0.8, 20]) rotate([0, 45, 0]) cube([2, 0.8, 35]); translate([aa.x/2+(laa.x+6)/2, ws-0.8, 28]) rotate([0, -45, 0]) cube([2, 0.8, 25]); translate([aa.x/2+(laa.x+6)/2, ws-0.8, 15]) rotate([0, -45, 0]) cube([2, 0.8, 40]);*/ LuefterVorbau(); //%translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([laa.x/2+3, laa.y/2+3, -20-ws+(29+20)-12]) LuefterModell(); } //translate([aa.x/2, -7.5, aa.z+1]) linear_extrude(10) text("Bi-Turbo", size=7, halign="center"); //translate([40, -100, -1]) cube([40, 200, 100]); //translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([2.5+(laa.x+1)/2, 2.5+(laa.y+1)/2, 29-12-ws]) mirror([0, 0, 1]) LuefterDuese(); translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([2.5+(laa.x+1)/2, 2.5+(laa.y+1)/2, 29-12-ws]) mirror([0, 0, 1]) //import("/home/dede/Anycubic Hotend Cover-LuefterDuese-massiv.stl"); hull() { translate([0, 0, ws]) cylinder(d=ldl+2*ws, h=0.01); mirror([0, 0, 1]) translate([-(2.5+(laa.x+1)/2), -(2.5+(laa.y+1)/2), -(29-12-ws)]) rotate([-45, 0, 0]) translate([-((aa.x/2-(laa.x+6)/2)), 20, 0]) translate([35, 17, -16]) rotate([0, 35, 40]) rotate([0, 0, -300]) translate([0, 30, 10]) rotate([0, 90, 0]) cylinder(d=20, h=0.1); } } if(mitSupport) { translate([aa.x/2-(laa.x+6)/2, ws-0.8, 28]) rotate([0, 45, 0]) cube([2, 0.8, 25]); translate([aa.x/2+(laa.x+6)/2, ws-0.8, 28]) rotate([0, -45, 0]) cube([2, 0.8, 25]); translate([aa.x/2+(laa.x+6)/2, ws-0.8, 16]) rotate([0, -45, 0]) cube([2, 0.8, 40]); } } // ----------------------------------------------------- // // ----------------------------------------------------- module RingTeilMitDuese(r, d, ws=1, a=0) { echo("r=", r, "d=", d, "a=", a); difference() { hull() { rotate([0, 0, -a]) translate([0, r, d/2]) rotate([0, 90, 0]) cylinder(d=d, h=0.1); translate([18, 28, 9]) rotate([0, -35, 0]) rotate([0, 0, -170]) rotate([0, 0, -120]) translate([0, 25, 15/2]) rotate([0, 90, 0]) cylinder(d=15, h=0.1); } hull() { rotate([0, 0, -a]) translate([0, r, d/2]) rotate([0, 90, 0]) cylinder(d=d-2*ws, h=0.2, center=true); translate([18, 28, 9]) rotate([0, -35, 0]) rotate([0, 0, -170]) rotate([0, 0, -120]) translate([0, 25, 15/2]) rotate([0, 90, 0]) cylinder(d=15-2*ws, h=0.2, center=true); } } *difference() { RingTeil(r, d, ws, a); translate([0.1, d/2+r, 0]) rotate([90, 0, 0]) linear_extrude(d+1) polygon([[0,0], [-d/2,d], [0,d]]); } *translate([18, 28, 9]) rotate([0, -35, 0]) difference() { cylinder(d=55, h=1); translate([0, 0, -0.1]) cylinder(d=40, h=1.2); } translate([18, 28, 9]) rotate([0, -35, 0]) rotate([0, 0, -170]) union() { difference() { // Loecher schneiden RingTeil(25, 15, ws, 120); for(a=[20:30:230]) rotate([0, 0, a]) translate([0, 33, -5]) rotate([60, 0, 0]) cylinder(d=4, h=20); } rotate([0, 0, 0]) translate([0, 25, 15/2]) rotate([0, 90, 0]) cylinder(d=15, h=ws); } //translate([0, 15, 5]) rotate([0, 0, -20]) rotate([0, 0, -60]) //translate([0, 35, 5]) rotate([0, 0, 40]) translate([0, -20, 0]) rotate([0, 0, -60]) RingTeil(20, 10, ws, 300); *difference() { hull() { difference() { intersection() { RingTeil(r, d, ws, a); translate([-0.1, d/2+r, 0]) rotate([90, 0, 0]) linear_extrude(d+1) polygon([[0,0], [-d/2,d], [0,d]]); } translate([-0.05, d/2+r, 0]) rotate([90, 0, 0]) linear_extrude(d+1) polygon([[0,0], [-d/2,d], [0,d]]); } translate([6, r-d/4, d/4]) rotate([0, 90, 0]) cylinder(d=6, h=0.1); translate([6, r+d/4, d/4]) rotate([0, 90, 0]) cylinder(d=6, h=0.1); } hull() { difference() { intersection() { translate([0, 0, ws]) RingTeil(r, d-2*ws, ws, a); translate([-0.11, d/2+r, 0]) rotate([90, 0, 0]) linear_extrude(d+1) polygon([[0,0], [-d/2,d], [0,d]]); } translate([-0.05, d/2+r, 0]) rotate([90, 0, 0]) linear_extrude(d+1) polygon([[0,0], [-d/2,d], [0,d]]); } translate([6.01, r-d/4+ws, d/4]) rotate([0, 90, 0]) cylinder(d=6-2*ws, h=0.1); translate([6.01, r+d/4-ws, d/4]) rotate([0, 90, 0]) cylinder(d=6-2*ws, h=0.1); } } } *!difference() { RingTeilMitDuese(30, 20, ws, 300); //translate([-12, 0, -1]) cube([30, 30, 30]); } // ----------------------------------------------------- // die Noozle befindet sich: // 20mm unter dem Gehäuse // 18mm vor y-max vom Gehäuse // ----------------------------------------------------- module LuefterDuese(massiv=false) { difference() { union() { translate([-(laa.x+1)/2, -(laa.y+1)/2, 0]) cubeRund([laa.x+1, laa.y+1, ws]); hull() { translate([0, 0, ws]) cylinder(d=ldl+2*ws, h=0.01); mirror([0, 0, 1]) translate([-(2.5+(laa.x+1)/2), -(2.5+(laa.y+1)/2), -(29-12-ws)]) rotate([-45, 0, 0]) translate([-((aa.x/2-(laa.x+6)/2)), 20, 0]) translate([35, 17, -16]) rotate([0, 35, 40]) rotate([0, 0, -300]) translate([0, 30, 10]) rotate([0, 90, 0]) cylinder(d=20, h=0.1); } if(massiv==false) { translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d=8, h=ws+3); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, 0]) cylinder(d=8, h=ws+3); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d=8, h=ws+3); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, 0]) cylinder(d=8, h=ws+3); } } if(massiv==false) { //translate([0, 0, -0.1]) LuefterAusschneider(); // nur für die Befestigungslöcher translate([-laa.x/2+(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, ws+4]) rotate([180, 0, 0]) SchraubeM3(lm=4); translate([ laa.x/2-(laa.x-lla)/2, -laa.y/2+(laa.y-lla)/2, ws+4]) rotate([180, 0, 0]) SchraubeM3(lm=4); translate([-laa.x/2+(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, ws+4]) rotate([180, 0, 0]) SchraubeM3(lm=4); translate([ laa.x/2-(laa.x-lla)/2, laa.y/2-(laa.y-lla)/2, ws+4]) rotate([180, 0, 0]) SchraubeM3(lm=4); translate([-laa.x/2+(laa.x-lla)/2-5, laa.y/2-(laa.y-lla)/2, ws+1]) cube([5, 5, 3]); translate([-(laa.x/2-(laa.x-lla)/2)+5, laa.y/2, -0.1]) cylinder(r=1.5, h=15); translate([0, 0, -0.1]) cylinder(d=ldl, h=ws+0.2); // Lüfter-Loch hull() { translate([0, 0, ws]) cylinder(d=ldl, h=0.01); //translate([-10, 0, ws+35]) cylinder(d=15, h=0.02); mirror([0, 0, 1]) translate([-(2.5+(laa.x+1)/2), -(2.5+(laa.y+1)/2), -(29-12-ws)]) rotate([-45, 0, 0]) translate([-((aa.x/2-(laa.x+6)/2)), 20, 0]) translate([35, 17, -16]) rotate([0, 35, 40]) rotate([0, 0, -300]) translate([0.01, 30, 10]) rotate([0, 90, 0]) cylinder(d=20-2*ws, h=0.1); } } } mirror([0, 0, 1]) translate([-(2.5+(laa.x+1)/2), -(2.5+(laa.y+1)/2), -(29-12-ws)]) rotate([-45, 0, 0]) translate([-((aa.x/2-(laa.x+6)/2)), 20, 0]) translate([35, 17, -16]) rotate([0, 35, 40]) RingTeilMitDuese(30, 20, ws, 300); } //!LuefterDuese(); //translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([2.5+(laa.x+1)/2, 2.5+(laa.y+1)/2, 29-12-ws]) mirror([0, 0, 1]) LuefterDuese(); //!LuefterDuese(massiv=true); //translate([37, 37, 0]) rotate([180, 0, 0]) mirror([0, 0, 1]) LuefterDuese(); //translate([35, 17, -16]) rotate([0, 35, 40]) RingTeilMitDuese(30, 20, ws, 300); // translate([35, 17, -16]) rotate([0, 35, 40]) rotate([0, 0, -300]) translate([0, 30, 10]) rotate([0, 90, 0]) cylinder(d=20, h=0.1); // ----------------------------------------------------- // Montage-Ansicht // ----------------------------------------------------- //%translate([hfp.x-0.1, hfp.y, hfp.z]) rotate([0, -90, 0]) LuefterModell(); //%translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([laa.x/2+3, laa.y/2+3, -20-ws+(29+20)-12]) LuefterModell(); %translate([aa.x/2, aa.y-18, -20]) cylinder(r=3, h=20); // Nozzle difference() { Chassis(mitSupport=false); //translate([-1, -50, -1]) cube([30, 50, 100]); } translate([(aa.x/2-(laa.x+6)/2), -20, 0]) rotate([45, 0, 0]) translate([2.5+(laa.x+1)/2, 2.5+(laa.y+1)/2, 29-12-ws]) mirror([0, 0, 1]) LuefterDuese(); // ----------------------------------------------------- // Druck // ----------------------------------------------------- //!Chassis(); //!translate([37, 37, 0]) rotate([180, 0, 0]) mirror([0, 0, 1]) LuefterDuese();