Python RGB Matrix games and animations https://www.xythobuz.de/ledmatrix_v2.html
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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. dia = 14.5;
  2. rod_l = 1200;
  3. wall = 4;
  4. clamp_d = dia + wall * 2;
  5. clamp_h = 30;
  6. screw = 4.5;
  7. l = rod_l + 2 * dia;
  8. plane_off = 100;
  9. plane_l = rod_l - plane_off;
  10. echo("rod", rod_l);
  11. echo("plane", plane_l);
  12. echo("outer", l);
  13. $fn = $preview ? 42 : 100;
  14. module rods() {
  15. // left/right
  16. for (x = [0, l])
  17. translate([x, 0, 0])
  18. cylinder(d = dia, h = rod_l);
  19. // top/bottom
  20. for (z = [0, l])
  21. translate([dia, 0, z - dia])
  22. rotate([0, 90, 0])
  23. cylinder(d = dia, h = rod_l);
  24. // plane
  25. translate([(l - plane_l) / 2, 0, -dia + (l - plane_l) / 2 - 1 * plane_off])
  26. cube([plane_l, 1, plane_l + 2 * plane_off]);
  27. translate([(l - plane_l) / 2 - 1 * plane_off, 0, -dia + (l - plane_l) / 2])
  28. cube([plane_l + 2 * plane_off, 1, plane_l]);
  29. }
  30. module clamp() {
  31. difference() {
  32. union() {
  33. hull()
  34. for (r = [0, 90])
  35. rotate([0, r, 0])
  36. translate([0, 0, dia])
  37. cylinder(d = clamp_d, h = clamp_h / 2);
  38. for (r = [0, 90])
  39. rotate([0, r, 0])
  40. translate([0, 0, dia])
  41. cylinder(d = clamp_d, h = clamp_h);
  42. }
  43. for (r = [0, 90])
  44. rotate([0, r, 0])
  45. translate([0, 0, dia])
  46. translate([0, 0, -20])
  47. cylinder(d = dia, h = clamp_h + 30);
  48. for (i = [0, 1])
  49. translate([i ? clamp_h * 3 / 4 + dia : 0, clamp_d / 2 + 1, i ? 0 : clamp_h * 3 / 4 + dia])
  50. rotate([90, 0, 0])
  51. cylinder(d = screw, h = clamp_d + 2);
  52. }
  53. }
  54. module frame() {
  55. %translate([-l / 2, 0, dia - l / 2])
  56. rods();
  57. for (r = [0 : 90 : 360])
  58. rotate([0, r, 0])
  59. translate([-l/ 2, 0, -l / 2])
  60. clamp();
  61. }
  62. if ($preview)
  63. translate([l / 2, 0, l / 2])
  64. frame();
  65. else
  66. clamp();