|  | @@ -1,11 +1,12 @@
 | 
	
		
			
				|  |  |  include <../config/pot.scad>
 | 
	
		
			
				|  |  |  include <../config/thread.scad>
 | 
	
		
			
				|  |  | +include <./thread.scad>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  module pot_object() {
 | 
	
		
			
				|  |  | -    module base_object(outsize) {
 | 
	
		
			
				|  |  | -        move_z = pot_height / 2 - pot_size / 2;
 | 
	
		
			
				|  |  | +    module base_object(outside) {
 | 
	
		
			
				|  |  |          move_x = thread_diameter / 2 + pot_thickness / 2;
 | 
	
		
			
				|  |  | -        size = outsize / 2;
 | 
	
		
			
				|  |  | +        move_z = pot_height / 2 - pot_size / 2;
 | 
	
		
			
				|  |  | +        size = outside / 2;
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          hull() {
 | 
	
		
			
				|  |  |              translate([move_x, 0, -move_z]) {
 | 
	
	
		
			
				|  | @@ -26,15 +27,108 @@ module pot_object() {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    render() {
 | 
	
		
			
				|  |  | -        difference() {
 | 
	
		
			
				|  |  | -            thickness = thread_height + pot_thickness * 2;
 | 
	
		
			
				|  |  | +    module watering_object() {
 | 
	
		
			
				|  |  | +        inside_radius = pot_watering_size / 2;
 | 
	
		
			
				|  |  | +        radius = inside_radius + pot_thickness;
 | 
	
		
			
				|  |  | +        connector_size = pot_watering_connector_size / 2;
 | 
	
		
			
				|  |  | +        connector_outside_size = connector_size + pot_thickness;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        module input_object() {
 | 
	
		
			
				|  |  | +            module base() {
 | 
	
		
			
				|  |  | +                hull() {
 | 
	
		
			
				|  |  | +                    sphere(r = radius);
 | 
	
		
			
				|  |  | +                    
 | 
	
		
			
				|  |  | +                    cylinder(
 | 
	
		
			
				|  |  | +                        r = connector_outside_size, 
 | 
	
		
			
				|  |  | +                        h = radius * 2, 
 | 
	
		
			
				|  |  | +                        center = true
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            difference() {
 | 
	
		
			
				|  |  | +                base();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                sphere(r = inside_radius);
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +                cylinder(
 | 
	
		
			
				|  |  | +                    r = connector_size,
 | 
	
		
			
				|  |  | +                    h = radius * 2,
 | 
	
		
			
				|  |  | +                    center = true
 | 
	
		
			
				|  |  | +                );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                translate([0, 0, radius / 2]) {
 | 
	
		
			
				|  |  | +                    size = [
 | 
	
		
			
				|  |  | +                        radius * 2,
 | 
	
		
			
				|  |  | +                        radius * 2,
 | 
	
		
			
				|  |  | +                        radius
 | 
	
		
			
				|  |  | +                    ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    cube(size, center = true); 
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        render() {
 | 
	
		
			
				|  |  | +            input_object();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        module connector_object() {
 | 
	
		
			
				|  |  | +            width = radius + pot_thickness * 2;
 | 
	
		
			
				|  |  | +            size = connector_size;
 | 
	
		
			
				|  |  | +            outside_size = connector_outside_size;
 | 
	
		
			
				|  |  | +            move = width + size;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            base_object(pot_size + thickness);
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -            translate([0, thread_height / 2, thickness / 2]) {
 | 
	
		
			
				|  |  | -                base_object(pot_size);
 | 
	
		
			
				|  |  | +            translate([-move, 0, -radius]) {
 | 
	
		
			
				|  |  | +                rotate([90, 90, 0]) {
 | 
	
		
			
				|  |  | +                    rotate_extrude(angle = 90) {
 | 
	
		
			
				|  |  | +                        translate([move, 0, 0]) {
 | 
	
		
			
				|  |  | +                            difference() {
 | 
	
		
			
				|  |  | +                                circle(r = outside_size);
 | 
	
		
			
				|  |  | +                                circle(r = size);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        render() {
 | 
	
		
			
				|  |  | +            connector_object();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    module base_pot_object() {
 | 
	
		
			
				|  |  | +        render() {
 | 
	
		
			
				|  |  | +            difference() {
 | 
	
		
			
				|  |  | +                thickness = thread_height + pot_thickness * 2;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                base_object(pot_size + thickness);
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +                translate([0, thread_height / 2, thickness / 2]) {
 | 
	
		
			
				|  |  | +                    base_object(pot_size);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    base_pot_object();
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    watering_move_y 
 | 
	
		
			
				|  |  | +    = pot_size / 2 
 | 
	
		
			
				|  |  | +    + pot_thickness 
 | 
	
		
			
				|  |  | +    + thread_height / 2
 | 
	
		
			
				|  |  | +    + pot_watering_size / 2
 | 
	
		
			
				|  |  | +    + pot_thickness * 2
 | 
	
		
			
				|  |  | +    + pot_watering_connector_size;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    watering_move_z 
 | 
	
		
			
				|  |  | +    = pot_height / 2
 | 
	
		
			
				|  |  | +    + pot_thickness;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    translate([0, watering_move_y, watering_move_z]) {
 | 
	
		
			
				|  |  | +        rotate([0, 0, 90]) {
 | 
	
		
			
				|  |  | +            watering_object();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |