wall_pot.scad 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. include <../config/wall_pot.scad>
  2. module base(inside = true) {
  3. out_height = height + thickness;
  4. out_top_diameter = top_diameter + thickness * 2;
  5. out_bottom_diameter = bottom_diameter + thickness * 2;
  6. render() difference() {
  7. cylinder(
  8. d2 = out_top_diameter,
  9. d1 = out_bottom_diameter,
  10. h = out_height,
  11. center = true
  12. );
  13. if (inside) translate([0, 0, thickness / 2]) cylinder(
  14. d2 = top_diameter,
  15. d1 = bottom_diameter,
  16. h = height,
  17. center = true
  18. );
  19. }
  20. }
  21. module mounting() {
  22. width = top_diameter + bottom_diameter + thickness * 2;
  23. height = mount_hole + thickness * 4;
  24. depth = top_diameter / 2 + thickness;
  25. hole_position = width / 2 - thickness;
  26. size = [
  27. width,
  28. depth,
  29. height
  30. ];
  31. render() difference() {
  32. union() {
  33. hull() {
  34. translate([width / 2, 0, 0]) rotate([270, 0, 0]) cylinder(
  35. d = height,
  36. h = depth,
  37. center = false
  38. );
  39. translate([-width / 2, 0, 0]) rotate([270, 0, 0]) cylinder(
  40. d = height,
  41. h = depth,
  42. center = false
  43. );
  44. }
  45. rotate([270, 0, 0]) cylinder(
  46. d = stabilizer_diameter,
  47. h = depth,
  48. center = false
  49. );
  50. }
  51. translate([width / 2, 0, 0]) cylinder(
  52. r = depth - thickness,
  53. h = height,
  54. center = true
  55. );
  56. translate([-width / 2, 0, 0]) cylinder(
  57. r = depth - thickness,
  58. h = height,
  59. center = true
  60. );
  61. translate([hole_position, depth / 2, 0]) rotate([90, 0, 0]) cylinder(
  62. d = mount_hole,
  63. h = depth,
  64. center = true
  65. );
  66. translate([-hole_position, depth / 2, 0]) rotate([90, 0, 0]) cylinder(
  67. d = mount_hole,
  68. h = depth,
  69. center = true
  70. );
  71. base(inside = false);
  72. }
  73. }
  74. module wall_pot() {
  75. color("#000080") render() {
  76. base();
  77. mounting();
  78. }
  79. }
  80. if (!$preview) {
  81. $fs = 0.5;
  82. $fa = 1;
  83. wall_pot();
  84. } else {
  85. $fs = 2;
  86. $fa = 10;
  87. wall_pot();
  88. }