blade.scad 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. razor_carrier_width = 39.7;
  2. razor_carrier_depth = 1.0;
  3. razor_carrier_height = 7.0;
  4. razor_blade_width = 38.9;
  5. razor_blade_depth = 0.3;
  6. razor_blade_height = 19.6 - razor_carrier_height;
  7. razor_notch_width = (razor_blade_width - 32.0) / 2;
  8. razor_notch_radius = 2.9 / 2;
  9. razor_notch_height = 8.5;
  10. sled_razor_clearance = 0.2;
  11. sled_razor_inset = 4.0;
  12. sled_nib_width = (razor_notch_width * 1.0) - (0*sled_razor_clearance);
  13. sled_nib_height = razor_notch_radius * 0.75;
  14. sled_slot_width = razor_carrier_width + sled_razor_clearance;
  15. sled_slot_height = razor_notch_height + (sled_nib_height / 2) + razor_notch_radius - sled_razor_inset;
  16. sled_slot_depth = razor_carrier_depth + sled_razor_clearance;
  17. sled_header_height = 5;
  18. sled_header_width = sled_slot_height + 1;
  19. sled_side_width = 2.5;
  20. sled_height = sled_slot_height + sled_header_height;
  21. sled_width = sled_slot_width + sled_side_width * 2;
  22. sled_depth = razor_carrier_depth + 2;
  23. module blade() {
  24. cube([razor_carrier_height, razor_carrier_width, razor_carrier_depth]);
  25. translate([
  26. razor_carrier_height,
  27. (razor_carrier_width - razor_blade_width) / 2,
  28. razor_carrier_depth / 2 - razor_blade_depth / 2
  29. ]) {
  30. difference() {
  31. cube([razor_blade_height, razor_blade_width, razor_blade_depth]);
  32. translate([
  33. razor_notch_radius + (razor_notch_height - razor_carrier_height),
  34. razor_notch_width - razor_notch_radius,
  35. -razor_blade_depth
  36. ]) {
  37. translate([-razor_notch_radius, -razor_notch_width, 0]) {
  38. cube([razor_notch_radius * 2, razor_notch_width, razor_carrier_depth]);
  39. }
  40. cylinder(h = razor_carrier_depth,
  41. r1 = razor_notch_radius, r2 = razor_notch_radius);
  42. }
  43. translate([
  44. razor_notch_radius + (razor_notch_height - razor_carrier_height),
  45. razor_blade_width - razor_notch_width + razor_notch_radius,
  46. -razor_blade_depth
  47. ]) {
  48. translate([-razor_notch_radius, 0, 0]) {
  49. cube([razor_notch_radius * 2, razor_notch_width, razor_carrier_depth]);
  50. }
  51. cylinder(h = razor_carrier_depth,
  52. r1 = razor_notch_radius, r2 = razor_notch_radius);
  53. }
  54. }
  55. }
  56. }
  57. module sled() {
  58. difference() {
  59. cube([sled_header_height, sled_width, sled_depth]);
  60. translate([
  61. sled_header_height - sled_razor_inset,
  62. sled_side_width, (sled_depth / 2) - (sled_slot_depth / 2)
  63. ]) {
  64. cube([sled_razor_inset + clean_buffer, sled_slot_width, sled_slot_depth]);
  65. }
  66. }
  67. translate([sled_header_height, 0, 0]) {
  68. cube([sled_slot_height, sled_side_width, sled_depth]);
  69. translate([sled_slot_height - sled_nib_height, sled_side_width, 0]) {
  70. cube([sled_nib_height, sled_nib_width, sled_depth]);
  71. }
  72. }
  73. translate([sled_header_height, sled_slot_width + sled_side_width, 0]) {
  74. cube([sled_slot_height, sled_side_width, sled_depth]);
  75. translate([sled_slot_height - sled_nib_height, -sled_nib_width, 0]) {
  76. cube([sled_nib_height, sled_nib_width, sled_depth]);
  77. }
  78. }
  79. }
  80. module blade_on_sled() {
  81. color([0, 0.3, 0.7, 1]) {
  82. sled();
  83. }
  84. translate([
  85. sled_height - sled_slot_height - sled_razor_inset,
  86. (sled_width - razor_carrier_width) / 2,
  87. (sled_depth / 2) - (razor_carrier_depth / 2)
  88. ]) {
  89. color([0.6, 0.3, 0, 1]) {
  90. blade();
  91. }
  92. }
  93. }