Ver Fonte

Add splited hanger and start working on headphones.

Cixo Develop há 9 meses atrás
pai
commit
d4ba7e21fa

+ 7 - 0
assets/headphones_holder.scad

@@ -0,0 +1,7 @@
+include <../config/headphones_holder.scad>
+
+module headphones_holder_object() {
+    height = headphones_holder_height;
+    depth = headphones_holder_depth;
+    leg_depth = headphones_holder_leg_depth;
+}

+ 138 - 0
assets/splited.scad

@@ -0,0 +1,138 @@
+include <../config/splited.scad>
+
+module splited_object() {
+    width = splited_width;
+    height = splited_height;
+    depth = splited_depth;
+    thickness = splited_thickness;
+    hole_top_diameter = splited_hole_top_diameter; 
+    hole_bottom_diameter = splited_hole_bottom_diameter; 
+    holes_top_count = splited_holes_top_count;
+    holes_bottom_count = splited_holes_bottom_count;
+
+    module splited_cross_section(full = true) { 
+        module points(top = false) {
+            radius = thickness / 2;
+            move_x = depth / 2 - radius;
+            move_y = height / 2 - radius;
+
+            module point(x = 0, y = 0) {
+                translate([x, y]) {
+                    circle(r = radius);
+                }
+            }
+           
+            hull() {
+                if (top) {
+                    point(move_x, move_y);
+                    point(-move_x, move_y);
+                } else {
+                    point(-move_x, -move_y);
+                    point(-move_x, move_y);
+                } 
+            } 
+        }
+        
+        if (full) {
+            hull() {
+                points(top = true);
+                points(top = false);
+            }
+        } else {
+            points(top = true);
+            points(top = false);
+        }
+    }
+
+    module center_section() {
+        linear_extrude(height = thickness, center = true) {
+            splited_cross_section(full = true);
+        } 
+    }
+
+    module rest_section() {
+        linear_extrude(height = width, center = true) {
+            splited_cross_section(full = false);
+        }   
+    }
+
+    module holes(size, height, count, top = false) {
+        move = size / count;
+
+        for (count = [-size / 2 : move : size / 2 - move / 2]) {
+            translate([count + move / 2, 0]) {
+                linear_extrude(height = height, center = true) {
+                    if (top) {
+                        circle(d = hole_top_diameter);
+                    } else {
+                        circle(d = hole_bottom_diameter);
+                    }
+                }
+            }
+        }
+    }
+
+    module holes_height() {
+        module single() {
+            rotate([90, 0, 90]) {
+                holes(
+                    size = height - thickness * 2, 
+                    height = depth, 
+                    count = holes_bottom_count, 
+                    top = false
+                );
+            }
+        }
+
+        move = (width + thickness) / 4;
+
+        translate([0, 0, move]) {
+            single();
+        }
+
+        translate([0, 0, -move]) {
+            single();
+        }
+    }
+
+    module holes_depth() {
+        module single() {
+            rotate([90, 0, 0]) {
+                holes(
+                    size = depth - thickness * 2, 
+                    height = depth, 
+                    count = holes_top_count, 
+                    top = true
+                );
+            }
+        }
+
+        move = (width + thickness) / 4;
+
+        translate([0, 0, move]) {
+            single();
+        }
+
+        translate([0, 0, -move]) {
+            single();
+        }
+    }
+
+    module final() {
+        render() {
+            difference() {
+                union() {
+                    center_section();
+                    rest_section();
+                }
+
+                holes_height();
+                holes_depth();
+            }
+        }
+    }
+
+    color("#404040") {
+        final();
+    }
+}

+ 1 - 1
config/angler.scad

@@ -1,5 +1,5 @@
 angler_depth = 50;
-angler_height = 50;
+angler_height = 70;
 angler_thickness = 5;
 angler_width = 50;
 angler_hole = 3;

+ 3 - 0
config/headphones_holder.scad

@@ -0,0 +1,3 @@
+headphones_holder_height = 150;
+headphones_holder_depth = 30;
+headphones_holder_leg_depth = 50;

+ 8 - 0
config/splited.scad

@@ -0,0 +1,8 @@
+splited_width = 100;
+splited_height = 70;
+splited_depth = 70;
+splited_thickness = 10;
+splited_hole_top_diameter = 3;
+splited_hole_bottom_diameter = 8;
+splited_holes_top_count = 3;
+splited_holes_bottom_count = 1;

+ 4 - 0
manufacture/splited.3D.scad

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

+ 4 - 0
renders/headphones_holder.scad

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

+ 4 - 0
renders/splited.scad

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