use ; /* [Teil] */ Teil = 1; // [1:Behälter, 2:Deckel, 3:Trennplatte] Debug = true; /* [Hidden] */ $fn = 180; D=54; H=1.5; FaseOben=43.5; function durchmesser(Innengewinde) = (Innengewinde)?1:0; module gewinde(L, Innengewinde) { metric_thread(diameter=50+durchmesser(Innengewinde), pitch=5, thread_size=2, length=L, internal=Innengewinde, leadin=(Innengewinde)?0:2, test=false); } /////////////////////////////////////////////////////////////////////////////////////////////////////// module behaelter() { union() { difference() { union() { // Aussenform mit Gewinde cylinder(d1=D-1, d2=D, h=H); translate([0,0,1.5]) cylinder(d=D, h=50); translate([0,0,51.5]) cylinder(d1=D, d2=D-1, h=H); translate([0,0,52]) gewinde(L=15, Innengewinde=false); } // gesamte Innenbohrung translate([0,0,0]) cylinder(d=D-2.5, h=52); // "Kernloch" im Gewinde translate([0,0,52]) cylinder(d=FaseOben, h=20); // Ovale Schlitze in der Seitenwand for(z=[4:3:45]) { translate([0,0,z]) for(r=[0:360/40:359]) { rotate([0,90,r]) hull() { translate([0,1.15,0]) cylinder(d=1, h=80, center=true); translate([0,-1.15,0]) cylinder(d=1, h=80, center=true); } } } } // Fase innen am Übergang zum Gewinde (wegen Support) translate([0,0,46.5]) difference() { cylinder(d=D-2.5, h=5.5); cylinder(d1=D-2.5, d2=FaseOben, h=5.5); } // Unten Mitte fester Boden cylinder(d=16, h=H); // 20 Speichen (Tortenstücke) im Boden for(r=[0:360/20:359]) { rotate([0,0,r]) hull() { rotate([0,0,+3]) cube([(D-2)/2,0.001,H]); rotate([0,0,-3]) cube([(D-2)/2,0.001,H]); } } // Kreisringe im Boden for(i=[16:3.5:D-3]) difference() { cylinder(d=i+2, h=H); cylinder(d=i, h=H); } // Boden Abschluss zum Rand difference() { cylinder(d=D-2.5, h=H); cylinder(d=D-2.5-2, h=H); } } } /////////////////////////////////////////////////////////////////////////////////////////////////////// module deckel() { difference() { union() { cylinder(d=70, h=2.5); translate([0,0,2]) cylinder(d=D, h=17); translate([0,0,2+17]) cylinder(d1=D, d2=D-2, h=1); } translate([0,0,2.5]) gewinde(L=18, Innengewinde=true); cylinder(d=42, h=4); cube([6,44,10], center=true); } } /////////////////////////////////////////////////////////////////////////////////////////////////////// module trennplatte() { H=1; D_trennplatte=FaseOben-1.25; // Unten Mitte fester Boden difference() { cylinder(d=16, h=H); for(r=[0:360/4:359]) rotate([0,0,r]) scale([1,2,1]) translate([4,0,0]) cylinder(d=1.25, h=10, center=true); } // 20 Speichen (Tortenstücke) im Boden mit Abstandshalter (H+1) for(r=[0:360/20:359]) { rotate([0,0,r]) { hull() intersection() { translate([25,0,0]) cube(40, center=true); union() { rotate([0,0,+3]) cube([(D_trennplatte-2)/2,0.001,H]); rotate([0,0,-3]) cube([(D_trennplatte-2)/2,0.001,H]); } } translate([18,0,0]) cylinder(d=1.5, h=H+1); } } // Kreisringe im Boden for(i=[16:3.5:FaseOben]) difference() { cylinder(d=i+2, h=H); cylinder(d=i, h=H); } // Boden Abschluss zum Rand difference() { cylinder(d=D_trennplatte, h=H); cylinder(d=D_trennplatte-2, h=H); } } /////////////////////////////////////////////////////////////////////////////////////////////////////// intersection() { union() { if (Teil == 1) { intersection() { behaelter(); //translate([0,0,52]) cylinder(d=82, h=20); } } if (Teil == 2) { deckel(); } if (Teil == 3) { trennplatte(); } } if (Debug) rotate([0,0,45]) cube(100); }