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