Advertisement
Guest User

Untitled

a guest
Aug 8th, 2017
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. /*
  2. dash dildo v1 for Jehannum's red rocket
  3. aka "I wonder if this pastebin post will haunt him on google forever"
  4.  
  5. coordinate meanings:
  6. X is width, positive is toward passenger side
  7. Z is depth, positive is coming out of the dash
  8. Y is height, positive is up
  9. */
  10.  
  11. // small overlap of cutouts to make previews look better.
  12. nudge = 0.01;
  13.  
  14. // ** uncomment one of these to change what's displayed ****
  15. // main clock cutout (for generating a STL)
  16. //clock();
  17. // clock plus ipod preview
  18. preview();
  19. // sectioned preview showing how crap goes together
  20. //sectioned_preview();
  21.  
  22.  
  23. module preview() {
  24. //nano_preview();
  25. clock();
  26. }
  27.  
  28. module sectioned_preview() {
  29. nano_preview();
  30. difference() {
  31. clock();
  32. translate([-100,0,-nudge]) cube([200,200,200]);
  33. }
  34.  
  35. }
  36.  
  37.  
  38. // ************** parameters ******************
  39. // all dimensions in mm
  40.  
  41. // clock body dimensions
  42. clock_face_angle = 10.85;
  43. clock_x = 84;
  44. clock_y = 28;
  45. clock_z = 52;
  46. corner_radius = 3;
  47.  
  48. // clock mounting tab configuration
  49. clock_tab_width = 110;
  50. clock_tab_height = 22;
  51. clock_tab_hole_dia = 5;
  52. clock_tab_hole_spacing = 95;
  53. clock_tab_thickness = 2;
  54. clock_tab_corner_radius = 3;
  55. clock_tab_z = 43;
  56.  
  57. // nano dimensions from apple's website
  58. nano_x = 39.6;
  59. nano_y = 5.4;
  60. nano_z = 76.5;
  61. nano_rounding = 2.4;
  62.  
  63. // offsets to move ipod off-center in dock
  64. nano_x_offset = 0;
  65. nano_y_offset = 0;
  66.  
  67. // offset for lightning adapter, you probably want this to be negative
  68. nano_adapter_z_offset = -10;
  69.  
  70. // clearance around nano (slot width/height is expanded by this #)
  71. nano_x_clearance = 1.5;
  72. nano_y_clearance = 1;
  73.  
  74. // from the internet
  75. nano_adapter_x = 26.3;
  76. nano_adapter_y = 5.8;
  77. nano_adapter_z = 26.3;
  78. nano_adapter_rounding = 2.4;
  79.  
  80. // clearance (two-sided) from adapter to slot
  81. // 1 will make the slot 1mm wider/taller
  82. nano_adapter_x_clearance = 0.5;
  83. nano_adapter_y_clearance = 0.5;
  84.  
  85. // X offset from center of adapter to center of ipod (wild guess)
  86. nano_adapter_x_offset = -14;
  87.  
  88.  
  89.  
  90. // face rounding idea #1 = sphere hull
  91. module face_sphere_cutout() {
  92. color("red")
  93. translate([0,0,clock_z+1]) // PLAY WITH THE +1 NUMBER TO FRIG WITH SLOT DEPTH
  94. scale([1,1,1])
  95. hull() {
  96. translate([-19,0,0]) sphere(r=5);
  97. translate([19,0,0]) sphere(r=5);
  98. translate([-19,0,10]) sphere(r=5); // ADD THESE TWO LINES
  99. translate([19,0,10]) sphere(r=5); // ADD THESE TWO LINES
  100. }
  101. }
  102.  
  103. // clock body with cutouts for face/ipod/adapter
  104. module clock() {
  105. difference() {
  106. clock_body();
  107. nano_cutout();
  108. face_sphere_cutout();
  109. }
  110. }
  111.  
  112. // solid clock body
  113. module clock_body() {
  114.  
  115. // body
  116. difference() {
  117. // face (extended)
  118. translate([-clock_x/2,-clock_y/2,0]) cube_rounded_z([clock_x,clock_y,clock_z+clock_y],r=3);
  119.  
  120. // angled face cutoff
  121. translate([0,0,clock_z]) rotate([-clock_face_angle,0,0]) translate([-clock_x/2-nudge,-clock_y]) cube([clock_x+(2*nudge),2*clock_y,2*clock_y]);
  122. }
  123.  
  124. // tabs w/hole cutouts
  125. difference() {
  126. // tab
  127. translate([-clock_tab_width/2,-clock_tab_height/2,clock_tab_z])
  128. cube_rounded_z([clock_tab_width,clock_tab_height,clock_tab_thickness],r=clock_tab_corner_radius);
  129. // holes
  130. translate([-clock_tab_hole_spacing/2,0,clock_tab_z-nudge])
  131. cylinder(d=clock_tab_hole_dia,h=clock_tab_hole_dia+nudge);
  132. translate([clock_tab_hole_spacing/2,0,clock_tab_z-nudge])
  133. cylinder(d=clock_tab_hole_dia,h=clock_tab_hole_dia+nudge);
  134. }
  135. }
  136.  
  137.  
  138.  
  139.  
  140. module nano_preview() {
  141. // adapter
  142. color("silver")
  143. translate([nano_x_offset+nano_adapter_x_offset,nano_y_offset,nano_adapter_z_offset])
  144. cube_rounded_z([nano_adapter_x,nano_adapter_y,nano_adapter_z],r=nano_adapter_rounding,center_xy=true);
  145.  
  146. // nano
  147. color("pink")
  148. translate([nano_x_offset,0,nano_adapter_z + nano_adapter_z_offset])
  149. cube_rounded_z([nano_x,nano_y,nano_z],r=nano_rounding,center_xy=true);
  150. }
  151.  
  152. module nano_cutout() {
  153. // adapter
  154. color("gray")
  155. translate([nano_x_offset+nano_adapter_x_offset,nano_y_offset,nano_adapter_z_offset])
  156. cube_rounded_z([nano_adapter_x+nano_adapter_x_clearance,nano_adapter_y+nano_adapter_y_clearance,nano_adapter_z+nudge],r=nano_adapter_rounding+(nano_adapter_y_clearance/2),center_xy=true);
  157.  
  158. // nano
  159. color("purple")
  160. translate([nano_x_offset,0,nano_adapter_z + nano_adapter_z_offset])
  161. cube_rounded_z([nano_x+nano_x_clearance,nano_y+nano_y_clearance,nano_z],r=nano_rounding+(nano_y_clearance/2),center_xy=true);
  162. }
  163.  
  164.  
  165. module cube_rounded_z(dimensions,r=0,center=false,center_xy=false) {
  166.  
  167. // dimensions
  168. x = dimensions[0];
  169. y = dimensions[1];
  170. z = dimensions[2];
  171.  
  172. center_xy = center ? true : center_xy;
  173.  
  174. // clip radius to maximum possible
  175. r = min([r,x/2,y/2]);
  176.  
  177. translate([center_xy ? -x/2 : 0, center_xy ? -y/2 : 0, center ? -z/2 : 0])
  178. if (r > 0) {
  179. hull() {
  180. translate([r,r,0]) cylinder(r=r,h=z);
  181. translate([x-r,r,0]) cylinder(r=r,h=z);
  182. translate([x-r,y-r,0]) cylinder(r=r,h=z);
  183. translate([r,y-r,0]) cylinder(r=r,h=z);
  184. }
  185. } else {
  186. cube([x,y,z]);
  187. }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement