Ver Fonte

Add more items to design.

cixo há 10 meses atrás
pai
commit
47c30b9560

+ 68 - 0
assets/material_holder.scad

@@ -0,0 +1,68 @@
+include <../config/material_holder.scad>
+
+module material_holder_object() {
+    diameter = material_holder_diameter;
+    screw_diameter = material_holder_screw_diameter;
+    screw_cutoff_diameter = material_holder_screw_cutoff_diameter;
+    thickness = material_holder_thickness;
+    top_thickness = thickness / 2;
+    cog_thickness = thickness - top_thickness;
+    cog_diameter = material_holder_cog_diameter;
+    cog_count = material_holder_cog_count;
+
+    module top_object() {
+        difference() {
+            cylinder(
+                d = diameter, 
+                h = top_thickness, 
+                center = true
+            );
+
+            cylinder(
+                d1 = screw_diameter, 
+                d2 = screw_cutoff_diameter, 
+                h = top_thickness, 
+                center = true
+            );
+        }
+    }
+
+    module cogs_object() {
+        module cog() {
+            move_y 
+            = diameter / 3
+            + screw_diameter / 4;
+
+            translate([0, move_y]) {
+                cylinder(
+                    d2 = cog_diameter, 
+                    d1 = 0, 
+                    h = cog_thickness, 
+                    center = true
+                );
+            }
+        }
+
+        for (count = [0 : (360 / cog_count) : 360]) {
+            rotate(count) {
+                cog();
+            }
+        }   
+    }
+
+    module final_object() {
+        translate([0, 0, top_thickness / 2]) {
+            top_object();
+        }
+
+        translate([0, 0, -cog_thickness / 2]) {
+            cogs_object();
+        }
+    }
+
+    color("#607080") {
+        render() {
+            final_object();
+        }
+    }
+}

+ 137 - 0
assets/strong_angler.scad

@@ -0,0 +1,137 @@
+include <../config/strong_angler.scad>
+
+function strong_angler_size() = [
+    (
+        strong_angler_target_screws_margin
+        * strong_angler_target_screws_count.x
+        + strong_angler_target_screws_margin
+    ),
+    (
+        strong_angler_target_screws_margin
+        * strong_angler_target_screws_count.y
+        + strong_angler_target_screws_margin
+    ),
+    strong_angler_height
+];
+
+module strong_angler_target_cutoff(oversized = false) {
+    diameter = strong_angler_target_screw_diameter;
+    padding = strong_angler_target_screw_padding;
+    margin = strong_angler_target_screws_margin;
+    width = strong_angler_size().x;
+    height = strong_angler_size().y;
+    move_x = width / 2 - margin;
+    move_y = height / 2 - margin;
+
+    module hole(vector_x = 0, vector_y = 0) {
+        translate([vector_x, vector_y]) {
+            if (oversized) {
+                circle(d = diameter + padding * 2);
+            } else {
+                circle(d = diameter);
+            }
+        }
+    }
+
+    for (count_x = [-move_x : margin : move_x]) {
+        for (count_y = [-move_y : margin : move_y]) {
+            hole(count_x, count_y);
+        }
+    }
+}
+
+module strong_angler_wall_cutoff(oversized = false) {
+    diameter = strong_angler_wall_screw_diameter;
+    padding = strong_angler_wall_screw_padding;
+    
+    if (oversized) {
+        circle(d = diameter + padding * 2);
+    } else {
+        circle(d = diameter);
+    }
+}
+
+module strong_angler_object() {
+    width = strong_angler_size().x;
+    depth = strong_angler_size().y;
+    height = strong_angler_size().z;
+    rounding = strong_angler_rounding;
+    thickness = strong_angler_thickness;
+    
+    module corner(vector = [0, 0, 0]) {
+        translate(vector) {
+            sphere(r = rounding);
+        }
+    }   
+
+    module base_object() {
+        move_x = width / 2 - rounding;
+        move_y = depth / 2 - rounding;
+        move_z = height / 2 - rounding;
+
+        hull() {
+            corner([move_x, move_y, move_z]);
+            corner([-move_x, move_y, move_z]);
+            corner([move_x, -move_y, move_z]);
+            corner([-move_x, -move_y, move_z]);
+            corner([move_x, move_y, -move_z]);
+            corner([-move_x, move_y, -move_z]);
+        }
+    }
+
+    module target_cutoff() {
+        move_z = height / 2;
+        move_top = move_z - thickness / 2;
+        thickness_bottom = height - thickness;
+        move_bottom = move_top - thickness / 2 - thickness_bottom / 2; 
+
+        translate([0, 0, move_top]) {
+            linear_extrude(height = thickness, center = true) {
+                strong_angler_target_cutoff(oversized = false);
+            }
+        }
+
+        translate([0, 0, move_bottom]) {
+            linear_extrude(height = thickness_bottom, center = true) {
+                strong_angler_target_cutoff(oversized = true);
+            }   
+        }
+    }
+
+    module wall_cutoff() {
+        move_y = depth / 2;
+        move_top = move_y - thickness / 2;
+        bottom_thickness = depth - thickness;
+        move_bottom = move_top - bottom_thickness / 2 - thickness / 2;
+
+        module hole(size = 0, oversized = false) {
+            rotate([90, 0, 0]) {
+                linear_extrude(height = size, center = true) {
+                    strong_angler_wall_cutoff(oversized);
+                }
+            }
+        }
+
+        translate([0, move_top, 0]) {
+            hole(thickness, false);
+        }
+
+        translate([0, move_bottom, 0]) {
+            hole(bottom_thickness, true);
+        }
+    }
+
+    module final_object() {
+        difference() {
+            base_object();
+            target_cutoff();
+            wall_cutoff();
+        }
+    }
+
+    color("#404080") {
+        render() {
+            final_object();        
+        }
+    }
+}

+ 6 - 0
config/material_holder.scad

@@ -0,0 +1,6 @@
+material_holder_diameter = 15;
+material_holder_screw_diameter = 2;
+material_holder_screw_cutoff_diameter = 5;
+material_holder_thickness = 4;
+material_holder_cog_diameter = 2;
+material_holder_cog_count = 8;

+ 9 - 0
config/strong_angler.scad

@@ -0,0 +1,9 @@
+strong_angler_wall_screw_diameter = 10;
+strong_angler_wall_screw_padding = 5;
+strong_angler_target_screw_diameter = 3;
+strong_angler_target_screw_padding = 3;
+strong_angler_target_screws_count = [3, 3];
+strong_angler_target_screws_margin = 30;
+strong_angler_height = 60;
+strong_angler_rounding = 5;
+strong_angler_thickness = 5;

+ 4 - 0
renders/material_holder.scad

@@ -0,0 +1,4 @@
+include <../assets/material_holder.scad>
+
+$fn = 100;
+material_holder_object();

+ 4 - 0
renders/strong_angler.scad

@@ -0,0 +1,4 @@
+include <../assets/strong_angler.scad>
+
+$fn = 20;
+strong_angler_object();