Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

100 lines
2.4KB

  1. $fn = $preview ? 16 : 72;
  2. wall_thickness = 3;
  3. //box = [21,21,21];
  4. box = [195,75,36];
  5. corner_radius = 2;
  6. cutoff = 0.5;
  7. overlap = 4;
  8. taper = 0.1;
  9. module outer_box(box) {
  10. minkowski(){
  11. cube([box.x+wall_thickness,box.y+wall_thickness,box.z+wall_thickness], center=true);
  12. sphere(d=wall_thickness);
  13. }
  14. }
  15. module box(size, wall=3, taper=0) {
  16. translate([0,0,-size.z/2])
  17. hull(){
  18. linear_extrude(height=0.1, scale=0)
  19. offset(r=wall/2) square(size=[(size.x+wall-taper),(size.y+wall-taper)],center=true);
  20. translate([0,0,size.z])
  21. rotate([0,180,0])
  22. linear_extrude(height=0.1, scale=0)
  23. offset(r=wall/2) square(size=[size.x+wall+taper,size.y+wall+taper],center=true);
  24. }
  25. }
  26. module bottom_box(box) {
  27. difference(){
  28. //box(size=[box.x,box.y,box.z+2*wall_thickness] ,wall=wall_thickness);
  29. outer_box(box);
  30. translate([0,0,box.z*cutoff+wall_thickness])
  31. cube([box.x+60,box.y+60,box.z],center=true);
  32. //cube(box,center=true);
  33. translate([0,0,box.z*cutoff+overlap-wall_thickness+0.01])
  34. #box([box.x,box.y,overlap],wall=wall_thickness/2,taper=0.5);
  35. translate([box.x/2+wall_thickness,0,0])
  36. rotate([90,0,90])
  37. side_text();
  38. translate([-box.x/2-wall_thickness,0,0])
  39. rotate([90,0,-90])
  40. side_text();
  41. }
  42. }
  43. module custom_text() {
  44. linear_extrude(height=0.4,center=true)
  45. text("Wetstone", valign="center", halign="center");
  46. }
  47. module side_text(){
  48. linear_extrude(height=0.4,center=true)
  49. scale(1.2)
  50. text("Wetstone", valign="center", halign="center");
  51. }
  52. module top_box(box) {
  53. inner_wall_t = wall_thickness - 0.5;
  54. difference(){
  55. union(){
  56. difference(){
  57. outer_box(box);
  58. //box(size=[box.x,box.y,box.z+2*wall_thickness] ,wall=wall_thickness);
  59. translate([0,0,-box.z*(1-cutoff)+wall_thickness])
  60. cube([box.x+60,box.y+60,box.z],center=true);
  61. }
  62. translate([0,0,overlap-wall_thickness+0.1])
  63. box([box.x,box.y,overlap],wall=wall_thickness/2,taper=0.5);
  64. }
  65. translate([0,0,box.z/2+wall_thickness])
  66. linear_extrude(height=0.4,center=true)
  67. scale(3)
  68. text("Wetstone", valign="center", halign="center");
  69. cube(box,center=true);
  70. translate([box.x/2+wall_thickness,0,0])
  71. rotate([90,0,90])
  72. side_text();
  73. translate([-box.x/2-wall_thickness,0,0])
  74. rotate([90,0,-90])
  75. side_text();
  76. }
  77. }
  78. module top_box_flip() {
  79. rotate([0,180,0])
  80. top_box();
  81. }
  82. * rotate([0,90,0]){
  83. bottom_box();
  84. translate([0,0,20])
  85. top_box();
  86. }