Guest User

UL canister stand

a guest
Apr 30th, 2022
982
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. //--------------------------------------------------------------------------
  2. // UL canister stand
  3. //--------------------------------------------------------------------------
  4. $fa =3;
  5. $fs = 0.5;
  6. // BOSL library is used
  7. include <BOSL/constants.scad>
  8. use <BOSL/shapes.scad>
  9. use <BOSL/transforms.scad>
  10.  
  11. //--------------------------------------------------------------------------
  12. // PRINTING INSTRUCTIONS
  13. // To be printed with 0.4 mm nozzle out of tough and resilient material.
  14. // I used PCTG, it is stiff without being brittle. ABS should also be fine.
  15. // Setting seam position to random prevents having a weak spot on the ring
  16. // holding the canister.
  17. //--------------------------------------------------------------------------
  18.  
  19. //--------------------------------------------------------------------------
  20. // CUSTOMIZABLE VARIABLES
  21. // Canister diameter - should be equal to the actual diameter of the can,
  22. // so it fits tightly
  23. d_can=34.8;
  24. // Base diameter
  25. d_base = 90;
  26. // No. of ribs / holes
  27. n_leg = 4;
  28. //--------------------------------------------------------------------------
  29.  
  30. // Other variables
  31. // Height of the cup holding the canister
  32. h = 10;
  33. // Cup wall thickness - 2 perimeters with 0.4 mm nozzle
  34. wall = 0.42*2;
  35. // Ribs and reinforced edge - 3 perimeters
  36. rib = 0.42*3;
  37. // Base thickness
  38. h_base = 1;
  39. // Edge thickness
  40. h_edge = 2;
  41. // Edge width;
  42. w_edge = 5;
  43.  
  44. difference(){
  45. union(){
  46. // Cup holding the can
  47. cyl(d=d_can+wall*2, h=h, align=V_UP);
  48. // Base with reinforced edge
  49. difference(){
  50. cyl(d=d_base, h=h_edge, align=V_UP, chamfer=0.4);
  51. translate([0,0,h_base]) cyl(r=d_base/2-rib, h=100, align=V_UP);
  52. }
  53. // Ribs
  54. for(a=[0:n_leg]) rotate([0,0,a*360/n_leg]) {
  55. hull(){
  56. translate([d_can/2+wall,0,0]) cyl(d=rib, h=h, align=V_UP);
  57. translate([d_base/2-rib,0,h_base]) cyl(d=rib, h=h_edge-h_base, align=V_UP);
  58. }
  59. }
  60. }
  61. // Cup inner and central hole in the base
  62. translate([0,0,h_base]) cyl(d=d_can, h=100, align=V_UP, chamfer=0.8);
  63. cyl(d=d_can-6, h=100);
  64.  
  65. // Holes in the base
  66. d_hole = d_base / 2 - d_can/2 - wall - rib - w_edge;
  67. hole_center = d_can / 2 + wall + d_hole / 2 + 0.5;
  68. hole_angle = asin((d_hole/2 + w_edge - rib) / hole_center);
  69. for(a=[0:n_leg]) {
  70. da1 = hole_angle;
  71. da2 = 360/n_leg - hole_angle;
  72. for(a2=[da1:2:da2]) rotate([0,0,a*360/n_leg + a2]) {
  73. translate([hole_center, 0,0]) cyl(d=d_hole, h=100);
  74. }
  75.  
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment