Holodisk model from the Fallout and Fallout 2 games.
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.
 
 

116 lines
3.5 KiB

  1. /*
  2. * Technical Specification for Wattz Electronics Holodisk (AKA Holotape or THT)
  3. *
  4. */
  5. // -- core dimensions --
  6. function get_holodisk_size() = [55, 100, 16];
  7. function get_holodisk_bottom_thickness() = 3;
  8. function get_holodisk_front_plate_thickness() = 1;
  9. // -- tape --
  10. function get_holodisk_tape_height() = 5;
  11. function get_holodisk_tape_thickness() = 0.2;
  12. // -- slide --
  13. spz = 8;
  14. function get_holodisk_slide_size() = [2, 35, get_holodisk_size().z - spz];
  15. function get_holodisk_slide_pos() = [0, 6, spz/2];
  16. sy = 2;
  17. sz = 4;
  18. function get_holodisk_slide_sliding_size() = [get_holodisk_slide_size().x, get_holodisk_slide_size().y - sy, get_holodisk_slide_size().z - sz];
  19. function get_holodisk_slide_sliding_pos() = [get_holodisk_slide_pos().x, get_holodisk_slide_pos().y + sy/2, get_holodisk_slide_pos().z + sz/2];
  20. srx = 2;
  21. srz = 2;
  22. function get_holodisk_slide_slider_size() = [get_holodisk_slide_size().x + srx, 13, get_holodisk_slide_size().z + srz];
  23. sliding_reserve=3;
  24. function get_holodisk_slide_slider_pos() = [get_holodisk_slide_sliding_pos().x, get_holodisk_slide_sliding_pos().y + sliding_reserve, get_holodisk_slide_sliding_pos().z - get_holodisk_slide_slider_size().z/2 + srz];
  25. function get_holodisk_slide_slider_travel() = get_holodisk_slide_sliding_size().y - get_holodisk_slide_slider_size().y - 2*sliding_reserve;
  26. // -- laser --
  27. function get_holodisk_laser_cutout_size() = [12, 9, 20];
  28. function get_holodisk_laser_cutout_pos() = [
  29. get_holodisk_size().x/2 - get_holodisk_laser_cutout_size().x/2,
  30. 12,
  31. 0];
  32. function get_holodisk_laser_cutout_pos_center() = [
  33. get_holodisk_laser_cutout_pos().x + get_holodisk_laser_cutout_size().x/2,
  34. get_holodisk_laser_cutout_pos().y + get_holodisk_laser_cutout_size().y/2,
  35. get_holodisk_laser_cutout_pos().z + get_holodisk_laser_cutout_size().z/2];
  36. // -- laser-window --
  37. function get_holodisk_laserwindow_pos() = [
  38. get_holodisk_laserwindow_pos_center().x - get_holodisk_laserwindow_size().x/2,
  39. get_holodisk_laserwindow_pos_center().y - get_holodisk_laserwindow_size().y/2,
  40. get_holodisk_laserwindow_pos_center().z - get_holodisk_laserwindow_size().z/2,
  41. ];
  42. function get_holodisk_laserwindow_pos_center() = [
  43. get_holodisk_laser_cutout_pos_center().x,
  44. 0,
  45. 6.5
  46. ];
  47. function get_holodisk_laserwindow_size() = [
  48. get_holodisk_laser_cutout_size().x,
  49. 30,
  50. get_holodisk_tape_height() + 2
  51. ];
  52. // -- spools --
  53. function get_holodisk_spool1_socket_pos_center() = [
  54. get_holodisk_size().x*0.45,
  55. get_holodisk_size().y*0.77,
  56. 0
  57. ];
  58. function get_holodisk_spool2_socket_pos_center() = [
  59. get_holodisk_spool1_socket_pos_center().x,
  60. get_holodisk_size().y*0.40,
  61. 0
  62. ];
  63. function get_holodisk_spools_spindle_diam() = 3;
  64. function get_holodisk_spool_spindle_connection_driver_size() = [
  65. get_holodisk_spools_spindle_diam()-1,
  66. get_holodisk_spools_spindle_diam()-1,
  67. 3
  68. ];
  69. module holodisk_spool_spindle_connection_driver_profile() {
  70. circle(d=get_holodisk_spool_spindle_connection_driver_size().x, $fn=6);
  71. }
  72. *holodisk_spool_spindle_connection_driver_profile();
  73. module holodisk_spool_spindle_connection_driver() {
  74. h=get_holodisk_spool_spindle_connection_driver_size().z;
  75. d=get_holodisk_spool_spindle_connection_driver_size().x;
  76. intersection() {
  77. linear_extrude(height=h, scale=0.8) {
  78. holodisk_spool_spindle_connection_driver_profile();
  79. }
  80. cylinder(h=h*1.15, d1=d*1.15, d2=d/1.8, $fn=100);
  81. cylinder(h=h*1.1, d1=d*1.8, d2=d*0.45, $fn=100);
  82. }
  83. }
  84. *holodisk_spool_spindle_connection_driver();
  85. // -- END --