|  | @@ -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();
 | 
	
		
			
				|  |  | +}
 |