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.

pi_mount.scad 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. pi_width = 85;
  2. pi_height = 56;
  3. pi_hole_dist_x = 58;
  4. pi_hole_dist_y = 49;
  5. pi_hole_off_x = 3.5;
  6. pi_hole_off_y = 3.5;
  7. pi_hole = 2.8;
  8. wall = 5.0;
  9. pi_wall_dist = 10;
  10. pi_mount_dist = 5.0;
  11. pi_mount_post_top = 6.3;
  12. pi_mount_post_bot = 10.0;
  13. mount_dia = 4.2;
  14. mount_width = pi_hole_dist_x + pi_wall_dist + 20 + pi_hole_off_x + pi_hole / 2 + wall;
  15. mount_height = pi_height + 5;
  16. $fn = 42;
  17. module prism(l, w, h) {
  18. polyhedron(
  19. points = [[0,0,0], [l,0,0], [l,w,0], [0,w,0], [0,w,h], [l,w,h]],
  20. faces = [[0,1,2,3],[5,4,3,2],[0,4,5,1],[0,3,4],[5,2,1]]
  21. );
  22. }
  23. module cutout(l, o) {
  24. for (r = [0, 90, 180, 270])
  25. rotate([r + 45, 0, -90])
  26. translate([0, -l - o, o])
  27. prism(wall + 2, l, l);
  28. }
  29. module holes(h, d1 = pi_hole, d2 = pi_hole) {
  30. for (x = [0, pi_hole_dist_x])
  31. for (y = [0, pi_hole_dist_y])
  32. translate([pi_hole_off_x + x, 0, pi_hole_off_y + y])
  33. rotate([90, 0, 0])
  34. cylinder(d1 = d1, d2 = d2, h = h);
  35. }
  36. module pi() {
  37. cube([pi_width, 2.0, pi_height]);
  38. translate([0, 10, 0])
  39. holes(20);
  40. }
  41. module mount() {
  42. difference() {
  43. union() {
  44. cube([mount_width, wall, mount_height]);
  45. translate([7.5, wall, 0])
  46. cube([5, 1, mount_height]);
  47. translate([20 + pi_wall_dist, pi_mount_dist + wall, (mount_height - pi_height) / 2])
  48. holes(pi_mount_dist, pi_mount_post_top, pi_mount_post_bot);
  49. }
  50. for (z = [mount_height / 4, mount_height / 4 * 3])
  51. translate([10, -1, z])
  52. rotate([-90, 0, 0])
  53. cylinder(d = mount_dia, h = wall + 3);
  54. translate([20 + pi_wall_dist, wall + pi_mount_dist + 1, (mount_height - pi_height) / 2])
  55. holes(wall + pi_mount_dist + 2);
  56. translate([63, wall + 1, 30])
  57. cutout(30, 2);
  58. }
  59. }
  60. module assembly() {
  61. %cube([20, 40, 100]);
  62. %translate([20 + pi_wall_dist, pi_mount_dist, 20])
  63. pi();
  64. translate([0, -wall, 20 - (mount_height - pi_height) / 2])
  65. mount();
  66. }
  67. assembly();