My self-made 3D-printable designs, mainly in OpenSCAD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

shower-adapter.scad 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. plug_dia = 10.5;
  2. plug_length = 20.0;
  3. plug_wall = 2.0;
  4. shower_wall = 4.0;
  5. shower_dia_min = 23.0;
  6. shower_dia_max = 25.0;
  7. shower_length = 40.0;
  8. shower_cut = 15.0;
  9. shower_angle = 45;
  10. plate_width = 20;
  11. plate_hole = 8.5;
  12. bolt_dia = 8.0;
  13. bolt_len = 33;
  14. knob_dia = 15.0;
  15. knob_height = 4.0;
  16. nut_dia = 15.0;
  17. nut_height = 8.0;
  18. $fn = 30;
  19. include <threads.scad>;
  20. module plug() {
  21. difference() {
  22. cylinder(d = plug_dia + plug_wall * 2, h = plug_length + plug_wall);
  23. translate([0, 0, -1])
  24. cylinder(d = plug_dia, h = plug_length + 1);
  25. }
  26. }
  27. module shower() {
  28. difference() {
  29. cylinder(d1 = shower_dia_min + shower_wall * 2, d2 = shower_dia_max + shower_wall * 2, h = shower_length);
  30. translate([0, 0, -1])
  31. cylinder(d1 = shower_dia_min, d2 = shower_dia_max, h = shower_length + 2);
  32. translate([-shower_cut / 2, 0, -1])
  33. cube([shower_cut, shower_dia_max, shower_length + 2]);
  34. }
  35. }
  36. module holder() {
  37. plug();
  38. translate([-(plug_dia + plug_wall) / 2, shower_dia_min / 2 + shower_wall + (plug_dia + plug_wall) / 2, 0])
  39. rotate([0, shower_angle, 0])
  40. shower();
  41. difference() {
  42. hull() {
  43. cylinder(d = plug_dia + plug_wall * 2, h = 1);
  44. translate([0, 0, plug_length + plug_wall - 1])
  45. cylinder(d = plug_dia + plug_wall * 2, h = 1);
  46. translate([0, 15, 26])
  47. cube([1, 1, 1]);
  48. translate([-10, 10, 10])
  49. cube([1, 1, 1]);
  50. translate([20, 5, 26])
  51. cube([1, 1, 1]);
  52. translate([20, 10, 10])
  53. cube([1, 1, 1]);
  54. }
  55. translate([0, 0, -1])
  56. cylinder(d = plug_dia, h = plug_length + 1);
  57. translate([-(plug_dia + plug_wall) / 2, shower_dia_min / 2 + shower_wall + (plug_dia + plug_wall) / 2, 0])
  58. rotate([0, shower_angle, 0])
  59. translate([0, 0, -1])
  60. cylinder(d1 = shower_dia_min, d2 = shower_dia_max, h = shower_length + 2);
  61. }
  62. }
  63. module adapter_a() {
  64. difference() {
  65. union() {
  66. hull() {
  67. cylinder(d = plug_dia - 0.3, h = plug_wall);
  68. translate([-plate_width / 2, plug_dia / 2, -plate_width])
  69. cube([plate_width, plug_wall, plate_width]);
  70. }
  71. translate([0, plug_wall + plug_dia / 2, -plate_width / 2])
  72. rotate([90, 0, 0])
  73. cylinder(d = plate_hole + 5, h = 11);
  74. }
  75. translate([0, plug_wall + 8 + plug_dia / 2, -plate_width / 2])
  76. rotate([90, 0, 0])
  77. cylinder(d = plate_hole, h = plate_width);
  78. }
  79. translate([0, 0, plug_wall])
  80. cylinder(d = plug_dia - 0.3, h = plug_length);
  81. }
  82. module adapter_b() {
  83. difference() {
  84. union() {
  85. hull() {
  86. translate([0, 0, plug_length + plug_wall])
  87. rotate([180, 0, 0])
  88. plug();
  89. translate([-plate_width / 2, plug_dia / 2, -plate_width])
  90. cube([plate_width, plug_wall, plate_width]);
  91. }
  92. translate([0, plug_wall + plug_dia / 2, -plate_width / 2])
  93. rotate([90, 0, 0])
  94. cylinder(d = plate_hole + 5, h = 13);
  95. }
  96. translate([0, plug_wall + 6 + plug_dia / 2, -plate_width / 2])
  97. rotate([90, 0, 0])
  98. cylinder(d = plate_hole, h = plate_width);
  99. translate([0, 0, plug_wall])
  100. cylinder(d = plug_dia, h = plug_length + 1);
  101. }
  102. }
  103. module thread(length, internal) {
  104. metric_thread(diameter=bolt_dia, pitch=2.54,
  105. length=length, internal=internal, n_starts=1,
  106. thread_size=-1, angle=40, leadin=1, leadfac=1.5);
  107. //cylinder(d = bolt_dia, h = length);
  108. }
  109. module bolt() {
  110. cylinder(d = knob_dia, h = knob_height, $fn = 12);
  111. translate([0, 0, knob_height])
  112. thread(bolt_len, false);
  113. }
  114. module nut() {
  115. difference() {
  116. cylinder(d = nut_dia, h = nut_height, $fn = 12);
  117. translate([0, 0, -0.1])
  118. thread(nut_height + 0.2, true);
  119. }
  120. }
  121. /*
  122. translate([0, 0, 3])
  123. scale([1, -1, 1])
  124. holder();
  125. adapter_a();
  126. translate([0, 15, -plate_width])
  127. rotate([0, 180, 180])
  128. adapter_b();
  129. */
  130. //translate([0, -8, -10])
  131. //rotate([90, 0, 180])
  132. //bolt();
  133. //translate([0, 29, -10])
  134. //rotate([90, 0, 0])
  135. nut();