silica-hodler.scad 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. use <threads.scad>;
  2. /* [Teil] */
  3. Teil = 2; // [1:Behälter, 2:Deckel, 3:Trennplatte]
  4. Debug = true;
  5. /* [Hidden] */
  6. $fn = 180;
  7. D=54;
  8. H=1.5;
  9. FaseOben=43.5;
  10. function durchmesser(Innengewinde) = (Innengewinde)?1:0;
  11. module gewinde(L, Innengewinde) {
  12. metric_thread(diameter=50+durchmesser(Innengewinde), pitch=5, thread_size=2, length=L, internal=Innengewinde, leadin=(Innengewinde)?0:2, test=false);
  13. }
  14. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  15. module behaelter() {
  16. union() {
  17. difference() {
  18. union() {
  19. // Aussenform für Innengewinde
  20. cylinder(d1=D-1, d2=D, h=H);
  21. translate([0,0,1.5]) cylinder(d=D, h=68);
  22. translate([0,0,51.5]) cylinder(d1=D, d2=D-1, h=H);
  23. }
  24. // Innengewinde raus
  25. translate([0,0,68-15]) gewinde(L=20, Innengewinde=true);
  26. // gesamte Innenbohrung
  27. translate([0,0,0]) cylinder(d=D-2.5, h=52);
  28. // "Kernloch" im Gewinde
  29. translate([0,0,52]) cylinder(d=FaseOben, h=20);
  30. // Ovale Schlitze in der Seitenwand
  31. for(z=[4:3:45]) {
  32. translate([0,0,z])
  33. for(r=[0:360/40:359]) {
  34. rotate([0,90,r]) hull() {
  35. translate([0,1.15,0]) cylinder(d=1, h=80, center=true);
  36. translate([0,-1.15,0]) cylinder(d=1, h=80, center=true);
  37. }
  38. }
  39. }
  40. }
  41. // Fase innen am Übergang zum Gewinde (wegen Support)
  42. translate([0,0,46.5]) difference() {
  43. cylinder(d=D-2.5, h=5.5);
  44. cylinder(d1=D-2.5, d2=FaseOben, h=5.5);
  45. }
  46. // Unten Mitte fester Boden
  47. cylinder(d=16, h=H);
  48. // 20 Speichen (Tortenstücke) im Boden
  49. for(r=[0:360/20:359]) {
  50. rotate([0,0,r]) hull() {
  51. rotate([0,0,+3]) cube([(D-2)/2,0.001,H]);
  52. rotate([0,0,-3]) cube([(D-2)/2,0.001,H]);
  53. }
  54. }
  55. // Kreisringe im Boden
  56. for(i=[16:3.5:D-3]) difference() {
  57. cylinder(d=i+2, h=H);
  58. cylinder(d=i, h=H);
  59. }
  60. // Boden Abschluss zum Rand
  61. difference() {
  62. cylinder(d=D-2.5, h=H);
  63. cylinder(d=D-2.5-2, h=H);
  64. }
  65. }
  66. }
  67. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  68. module deckel() {
  69. difference() {
  70. union() {
  71. cylinder(d=70, h=2.5);
  72. #translate([0,0,2.5]) gewinde(L=18, Innengewinde=false);
  73. // translate([0,0,2]) cylinder(d=D, h=17);
  74. // translate([0,0,2+17]) cylinder(d1=D, d2=D-2, h=1);
  75. }
  76. cylinder(d=42, h=2.5);
  77. translate([0,0,2.5]) cylinder(d=45, h=20);
  78. cube([6,44,20], center=true);
  79. }
  80. }
  81. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  82. module trennplatte() {
  83. H=1;
  84. D_trennplatte=44.5;
  85. // Unten Mitte fester Boden
  86. difference() {
  87. cylinder(d=16, h=H);
  88. 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);
  89. }
  90. // 20 Speichen (Tortenstücke) im Boden mit Abstandshalter (H+1)
  91. for(r=[0:360/20:359]) {
  92. rotate([0,0,r]) {
  93. hull() intersection() {
  94. translate([25,0,0]) cube(40, center=true);
  95. union() {
  96. rotate([0,0,+3]) cube([(D_trennplatte-2)/2,0.001,H]);
  97. rotate([0,0,-3]) cube([(D_trennplatte-2)/2,0.001,H]);
  98. }
  99. }
  100. translate([18,0,0]) cylinder(d=1.5, h=H+1);
  101. }
  102. }
  103. // Kreisringe im Boden
  104. for(i=[16:3.5:FaseOben]) difference() {
  105. cylinder(d=i+2, h=H);
  106. cylinder(d=i, h=H);
  107. }
  108. // Boden Abschluss zum Rand
  109. difference() {
  110. cylinder(d=D_trennplatte, h=H);
  111. cylinder(d=D_trennplatte-2, h=H);
  112. }
  113. }
  114. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  115. intersection() {
  116. union() {
  117. if (Teil == 1) {
  118. intersection() {
  119. behaelter();
  120. //translate([0,0,52]) cylinder(d=82, h=20);
  121. }
  122. }
  123. if (Teil == 2) {
  124. deckel();
  125. }
  126. if (Teil == 3) {
  127. trennplatte();
  128. }
  129. }
  130. if (Debug) rotate([0,0,0]) cube(100);
  131. }