Browse Source

Add wall pot.

Cixo Develop 6 months ago
parent
commit
75b8f9ce12
4 changed files with 138 additions and 0 deletions
  1. 6 0
      config/wall_pot.scad
  2. 1 0
      generators/wall_pot.3D.scad
  3. 105 0
      generators/wall_pot.scad
  4. 26 0
      make/make.3D.sh

+ 6 - 0
config/wall_pot.scad

@@ -0,0 +1,6 @@
+top_diameter = 80;
+bottom_diameter = 40;
+thickness = 3;
+height = 70;
+mount_hole = 3;
+stabilizer_diameter = height / 1.5;

+ 1 - 0
generators/wall_pot.3D.scad

@@ -0,0 +1 @@
+include <wall_pot.scad>

+ 105 - 0
generators/wall_pot.scad

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

+ 26 - 0
make/make.3D.sh

@@ -0,0 +1,26 @@
+#!/bin/bash
+
+cd $(dirname $(dirname $0))
+
+scad_src=generators/*.3D.scad
+output=build.3D/
+
+if [ -d $output ]; then
+    rm $output -rf 
+fi
+
+mkdir $output
+
+for count in $scad_src; do
+    src=$(basename $count)
+    name=$(basename $src .3D.scad)
+    out=$name.stl
+
+    echo "Processing $name..."
+
+    if openscad $count -o $output/$out > /dev/null 2> /dev/null; then
+        echo "Rendered."
+    else
+        echo "Failed, fix it!"
+    fi
+done