_rim_compare.scad 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. include <params.scad>
  2. module old_rim() {
  3. color("#2C3863") {
  4. hull() {
  5. translate([WALL + FLANGE_W - SLIDE_CLEAR - 0.01, 0, 0])
  6. cube([0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, FLANGE_H - SLIDE_CLEAR]);
  7. translate([WALL + SLIDE_CLEAR, 0, -0.005])
  8. cube([0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0.01]);
  9. }
  10. hull() {
  11. translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR, 0, 0])
  12. cube([0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, FLANGE_H - SLIDE_CLEAR]);
  13. translate([OUT_L - WALL - SLIDE_CLEAR - 0.01, 0, -0.005])
  14. cube([0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0.01]);
  15. }
  16. translate([WALL + FLANGE_W - SLIDE_CLEAR, 0, 0])
  17. cube([2.0, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, FLANGE_H]);
  18. translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR - 2.0, 0, 0])
  19. cube([2.0, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, FLANGE_H]);
  20. hull() {
  21. translate([FLANGE_W - SLIDE_CLEAR + 2.0, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR - 0.01, 0])
  22. cube([OUT_L - 2*(FLANGE_W - SLIDE_CLEAR + 2.0), 0.01, FLANGE_H - SLIDE_CLEAR]);
  23. translate([FLANGE_W - SLIDE_CLEAR + 2.0, LID_Y_LEN - SLIDE_CLEAR - 0.01, -0.005])
  24. cube([OUT_L - 2*(FLANGE_W - SLIDE_CLEAR + 2.0), 0.01, 0.01]);
  25. }
  26. translate([FLANGE_W - SLIDE_CLEAR + 2.0, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR - 2.0, 0])
  27. cube([OUT_L - 2*(FLANGE_W - SLIDE_CLEAR + 2.0), 2.0, FLANGE_H]);
  28. intersection() {
  29. hull() {
  30. translate([WALL + FLANGE_W - SLIDE_CLEAR - 0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0])
  31. cube([0.01, FLANGE_W - 2*SLIDE_CLEAR, FLANGE_H - SLIDE_CLEAR]);
  32. translate([WALL + SLIDE_CLEAR, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, -0.005])
  33. cube([0.01, FLANGE_W - 2*SLIDE_CLEAR, 0.01]);
  34. }
  35. hull() {
  36. translate([WALL + SLIDE_CLEAR, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0])
  37. cube([FLANGE_W - 2*SLIDE_CLEAR, 0.01, FLANGE_H - SLIDE_CLEAR]);
  38. translate([WALL + SLIDE_CLEAR, LID_Y_LEN - SLIDE_CLEAR - 0.01, -0.005])
  39. cube([FLANGE_W - 2*SLIDE_CLEAR, 0.01, 0.01]);
  40. }
  41. }
  42. intersection() {
  43. hull() {
  44. translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0])
  45. cube([0.01, FLANGE_W - 2*SLIDE_CLEAR, FLANGE_H - SLIDE_CLEAR]);
  46. translate([OUT_L - WALL - SLIDE_CLEAR - 0.01, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, -0.005])
  47. cube([0.01, FLANGE_W - 2*SLIDE_CLEAR, 0.01]);
  48. }
  49. hull() {
  50. translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR, LID_Y_LEN - FLANGE_W + SLIDE_CLEAR, 0])
  51. cube([FLANGE_W - 2*SLIDE_CLEAR, 0.01, FLANGE_H - SLIDE_CLEAR]);
  52. translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR, LID_Y_LEN - SLIDE_CLEAR - 0.01, -0.005])
  53. cube([FLANGE_W - 2*SLIDE_CLEAR, 0.01, 0.01]);
  54. }
  55. }
  56. }
  57. }
  58. RIB = 2.0;
  59. module ring(x0, x1, y1, h, run) {
  60. translate([x0, 0, 0])
  61. diff()
  62. cuboid([x1 - x0, y1, h], anchor=BOTTOM+FRONT+LEFT) {
  63. if (run > 0)
  64. edge_profile_asym([TOP+LEFT, TOP+RIGHT, TOP+BACK], corner_type="chamfer")
  65. mask2d_chamfer(x=run, y=h);
  66. tag("remove")
  67. position(BOTTOM+FRONT+LEFT)
  68. translate([run, -0.1, -0.1])
  69. cuboid([(x1 - x0) - 2*run, y1 - run + 0.1, h + 0.2], anchor=BOTTOM+FRONT+LEFT);
  70. }
  71. }
  72. module new_rim() {
  73. color("#2C3863") {
  74. ring(WALL + SLIDE_CLEAR, OUT_L - WALL - SLIDE_CLEAR, LID_Y_LEN,
  75. FLANGE_H - SLIDE_CLEAR, FLANGE_W);
  76. ring(WALL + SLIDE_CLEAR + FLANGE_W, OUT_L - WALL - SLIDE_CLEAR - FLANGE_W, LID_Y_LEN,
  77. FLANGE_H, RIB);
  78. }
  79. }
  80. // ============================================================
  81. // RENDER — old (hand-rolled) vs new (BOSL2 cuboid+chamfer)
  82. // ============================================================
  83. old_rim();
  84. translate([0, LID_Y_LEN + 15, 0]) new_rim();