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.

hose_filter.scad 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. pipe_od = 4.0;
  2. pipe_id = 2.0;
  3. pipe_od_max = 6.0;
  4. barb_height = 4;
  5. barb_count = 2;
  6. barb_off = 1;
  7. pipe_height = 15;
  8. filter_height = 8;
  9. filter_dia = 15;
  10. filter_wall = 2.0;
  11. filter_hole_dia = filter_dia - 2 * filter_wall;
  12. hole_count_x = 20;
  13. hole_count_y = 1;
  14. hole_width = 0.8;
  15. hole_height = filter_height - 2 * filter_wall;
  16. hole_off = filter_wall;
  17. adapter_height = 4;
  18. show_open = false;
  19. $fn = 42;
  20. module pipe() {
  21. difference() {
  22. union() {
  23. cylinder(d = pipe_od, h = pipe_height);
  24. for (i = [1 : barb_count]) {
  25. translate([0, 0, i * (pipe_height / (barb_count + 1)) - barb_off])
  26. cylinder(d1 = pipe_od_max, d2 = pipe_od, h = barb_height);
  27. }
  28. }
  29. translate([0, 0, -1])
  30. cylinder(d = pipe_id, h = pipe_height + 2);
  31. }
  32. }
  33. module filter() {
  34. difference() {
  35. cylinder(d = filter_dia, h = filter_height);
  36. translate([0, 0, hole_off])
  37. for (i = [1 : hole_count_x]) {
  38. for (j = [0 : hole_count_y - 1]) {
  39. translate([0, 0, (hole_height + hole_off) * j])
  40. rotate([0, 0, 360 / hole_count_x * i])
  41. cube([hole_width, filter_dia, hole_height]);
  42. }
  43. }
  44. translate([0, 0, filter_wall])
  45. cylinder(d = filter_hole_dia, h = filter_height - filter_wall + 1);
  46. translate([0, 0, filter_height - filter_wall - 1])
  47. cylinder(d = pipe_id, h = filter_wall + 2);
  48. }
  49. }
  50. module adapter() {
  51. difference() {
  52. cylinder(d1 = filter_dia, d2 = pipe_od, h = adapter_height);
  53. translate([0, 0, -0.1])
  54. cylinder(d1 = filter_hole_dia, d2 = pipe_id, h = adapter_height + 0.2);
  55. }
  56. }
  57. module part() {
  58. difference() {
  59. union() {
  60. filter();
  61. translate([0, 0, filter_height])
  62. adapter();
  63. translate([0, 0, filter_height + adapter_height])
  64. pipe();
  65. }
  66. if (show_open) {
  67. translate([-50, -filter_dia, -50])
  68. cube([100, filter_dia, 100]);
  69. }
  70. }
  71. }
  72. part();