DS4_Base.scad 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. $fa = 0.5;
  2. $fs = 0.5;
  3. inside_x = 124;
  4. inside_y = 115;
  5. offset_x = 5;
  6. offset_y = -12;
  7. offset_z = 4;
  8. angle = 35;
  9. outside_x = inside_x + (2 * offset_x);
  10. outside_y = inside_y + (2 * offset_y);
  11. outside_z = 130;
  12. front = cos(angle) * (outside_x - offset_x) + offset_x;
  13. cable_radius = 15;
  14. cable_radius_small = 8;
  15. screw_taper = 5;
  16. screw_radius = 5;
  17. screw_offset = 4;
  18. screw_radius_small = 2.5;
  19. module screwHole(x, y) {
  20. translate([x, y, 0]) {
  21. translate([0, 0, screw_offset + screw_taper]) {
  22. cylinder(h = outside_z + 1, r = screw_radius);
  23. }
  24. translate([0, 0, screw_offset]) {
  25. cylinder(h = screw_taper, r1 = screw_radius_small, r2 = screw_radius);
  26. }
  27. translate([0, 0, -1]) {
  28. cylinder(h = outside_z + 1, r = screw_radius_small);
  29. }
  30. }
  31. }
  32. difference() {
  33. // Primary Cube
  34. cube([outside_x, outside_y, outside_z]);
  35. // Gross angle cut
  36. rotate([0, angle, 0]) {
  37. translate([-outside_x, -outside_y, outside_z / 2]) {
  38. cube([(outside_x * 2) + 1, (outside_y * 2) + 1, (outside_z * 2) + 1]);
  39. }
  40. }
  41. // Main inset
  42. color([1,0,0]) {
  43. rotate([0, angle, 0]) {
  44. translate([-((tan(angle) * outside_z / 2) - offset_x), offset_y, (outside_z / 2) - offset_z]) {
  45. cube([inside_x, inside_y, offset_z + 1]);
  46. }
  47. }
  48. }
  49. // Flat front
  50. color([0,1,0]) {
  51. translate([front, -outside_y, -outside_z]) {
  52. cube([(outside_x * 2) + 1, (outside_y * 2) + 1, (outside_z * 2) + 1]);
  53. }
  54. }
  55. // Cable cut
  56. translate([-1, outside_y / 2, -1]) {
  57. rotate([0, 90, 0]) {
  58. cylinder(h = front / 2 + 1, r = cable_radius_small);
  59. }
  60. translate([front / 2, 0, 0]) {
  61. cylinder(h = outside_z + 1, r = cable_radius);
  62. }
  63. }
  64. // Screw insets
  65. translate([front / 4 * 3, screw_radius / 2, 0]) {
  66. screwHole(0, outside_y / 4 - screw_radius / 2);
  67. screwHole(0, outside_y / 4 * 3 - screw_radius / 2);
  68. }
  69. translate([front / 4, screw_radius / 2, 0]) {
  70. screwHole(0, outside_y / 4 - screw_radius / 2);
  71. screwHole(0, outside_y / 4 * 3 - screw_radius / 2);
  72. }
  73. }