|
|
@@ -0,0 +1,105 @@
|
|
|
+include <../config/wall_pot.scad>
|
|
|
+
|
|
|
+module base(inside = true) {
|
|
|
+ out_height = height + thickness;
|
|
|
+ out_top_diameter = top_diameter + thickness * 2;
|
|
|
+ out_bottom_diameter = bottom_diameter + thickness * 2;
|
|
|
+
|
|
|
+ render() difference() {
|
|
|
+ cylinder(
|
|
|
+ d2 = out_top_diameter,
|
|
|
+ d1 = out_bottom_diameter,
|
|
|
+ h = out_height,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+
|
|
|
+ if (inside) translate([0, 0, thickness / 2]) cylinder(
|
|
|
+ d2 = top_diameter,
|
|
|
+ d1 = bottom_diameter,
|
|
|
+ h = height,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module mounting() {
|
|
|
+ width = top_diameter + bottom_diameter + thickness * 2;
|
|
|
+ height = mount_hole + thickness * 4;
|
|
|
+ depth = top_diameter / 2 + thickness;
|
|
|
+ hole_position = width / 2 - thickness;
|
|
|
+
|
|
|
+ size = [
|
|
|
+ width,
|
|
|
+ depth,
|
|
|
+ height
|
|
|
+ ];
|
|
|
+
|
|
|
+ render() difference() {
|
|
|
+ union() {
|
|
|
+ hull() {
|
|
|
+ translate([width / 2, 0, 0]) rotate([270, 0, 0]) cylinder(
|
|
|
+ d = height,
|
|
|
+ h = depth,
|
|
|
+ center = false
|
|
|
+ );
|
|
|
+
|
|
|
+ translate([-width / 2, 0, 0]) rotate([270, 0, 0]) cylinder(
|
|
|
+ d = height,
|
|
|
+ h = depth,
|
|
|
+ center = false
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ rotate([270, 0, 0]) cylinder(
|
|
|
+ d = stabilizer_diameter,
|
|
|
+ h = depth,
|
|
|
+ center = false
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([width / 2, 0, 0]) cylinder(
|
|
|
+ r = depth - thickness,
|
|
|
+ h = height,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+
|
|
|
+ translate([-width / 2, 0, 0]) cylinder(
|
|
|
+ r = depth - thickness,
|
|
|
+ h = height,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+
|
|
|
+ translate([hole_position, depth / 2, 0]) rotate([90, 0, 0]) cylinder(
|
|
|
+ d = mount_hole,
|
|
|
+ h = depth,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+
|
|
|
+ translate([-hole_position, depth / 2, 0]) rotate([90, 0, 0]) cylinder(
|
|
|
+ d = mount_hole,
|
|
|
+ h = depth,
|
|
|
+ center = true
|
|
|
+ );
|
|
|
+
|
|
|
+ base(inside = false);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module wall_pot() {
|
|
|
+ color("#000080") render() {
|
|
|
+ base();
|
|
|
+ mounting();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+if (!$preview) {
|
|
|
+ $fs = 0.5;
|
|
|
+ $fa = 1;
|
|
|
+
|
|
|
+ wall_pot();
|
|
|
+} else {
|
|
|
+ $fs = 2;
|
|
|
+ $fa = 10;
|
|
|
+
|
|
|
+ wall_pot();
|
|
|
+}
|