浏览代码

add rest for legs - this may make it easier to assemble the structure (this needs to be optimized somehow), fix code for rendering just one capsule, try a new fit with a longer slot and thicker leg

Fernando Pablo Lopez-Lezcano 11 年之前
父节点
当前提交
929e744186
共有 1 个文件被更改,包括 56 次插入 和 36 次删除
  1. 56 36
      BigSpHEAR_20.scad

+ 56 - 36
BigSpHEAR_20.scad

@@ -36,7 +36,7 @@ mic_radius = 25;
 
 // dimensions of capsule holder connection legs
 leg_width = 4;
-leg_thick = 2.5;
+leg_thick = 3;
 
 // width of the ridge that connects to the mount
 ridge_width = 2;
@@ -57,10 +57,10 @@ mount_height = 4;
 
 // what to render:
 // 0 -> ready to print
-//   set = 0 -> one capsule, set = 1 -> four capsules
+//   set = 0 -> one capsule, set = 1 -> a set of capsules
 // 1 -> the whole microhone with four capsules
-rendermic = 0;
-renderset = 1;
+rendermic = 1;
+renderset = 0;
 
 // what type of connection to use between capsule holders:
 // 0 -> original cylinder beams
@@ -75,7 +75,7 @@ fudge = 0.15;
 
 // adjustment for fit of slots in connection legs and mount
 fit = 0.1;
-slot_extra_depth = 0.75;
+slot_extra_depth = 1.0;
 
 // number of facets for rendering cylinders
 facets = 64;
@@ -168,15 +168,31 @@ module capsule (azimuth, elevation, mounts, twist, ridge) {
                                     leg_length = (mic_radius - capsule_height + leg_thick) * tan(angles[1]) - capsule_radius
                                                     + slot_extra_depth;
                                     slot_depth = leg_thick * cos(90 - 2 * angles[1]) + slot_extra_depth + fit;
+                                    rest_length = leg_length - leg_thick * tan(angles[1]);
 									translate([capsule_radius + leg_length + fudge, - leg_width / 3, 0]) {
 										rotate([0, -90, 0]) {
 											difference() {
-												// thickness, width
-												cube([leg_thick, leg_width, leg_length]);
+                                                union() {
+                                                    // leg
+                                                    cube([leg_thick, leg_width, leg_length]);
+                                                    // rest
+                                                    translate([0, -leg_width / 3 - (fit / 2), 
+                                                               leg_length - rest_length + slot_extra_depth]) {
+                                                        cube([leg_thick, leg_width, rest_length]);
+                                                    }
+                                                }
 												// cut slot in connector
-												translate([0, leg_width / 3 - (fit / 2), 0]) {
-													cube([leg_thick, leg_width / 3 + fit, slot_depth]);
-												}
+                                                translate([0, leg_width / 3 - (fit / 2), 0]) {
+                                                    cube([leg_thick, leg_width / 3 + fit, slot_depth]);
+                                                }
+                                                // make ramp in rest
+                                                translate([-fit, 0, leg_length - rest_length + slot_extra_depth]) {
+                                                    rotate([0, 2 * angles[1], 0]) {
+                                                        translate([0, - leg_width / 3 - fit, 0]) {
+                                                            cube([leg_thick, leg_width / 3 + fit, rest_length]);
+                                                        }
+                                                    }
+                                                }
 											}
 										}
 									}
@@ -296,35 +312,39 @@ if (rendermic == 1) {
         echo(i, vertices[i], " az=", az, " el=", el);
         capsule(az, el, leg_angles, tw, 0);
     }
-}
-																		    
-// print all the parts separately
-part_sep = capsule_radius * 4.2;
-if (rendermic == 0) {
-    if (connect == 1) {
-        twist_all = 0;
-        translate([0, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([0, part_sep, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([part_sep, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([part_sep, part_sep]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([-part_sep, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([-part_sep, part_sep]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([-part_sep / 2, -part_sep * 2 / 3, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        translate([part_sep / 2, -part_sep * 2 / 3, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
-        // ridges to connect all parts
-        translate([-part_sep + wall, part_sep / 2 - wall, 0]) {
-            cube([part_sep * 2, wall, wall / 2]);
-        }
-        for (d = [-part_sep, 0, part_sep]) {
-            translate([wall + d, capsule_radius, 0]) {
-                cube([wall, part_sep - capsule_radius * 2, wall / 2]);
+} else {
+													    
+    // print all the parts separately
+    part_sep = capsule_radius * 4.2;
+    if (renderset == 1) {
+        if (connect == 1) {
+            twist_all = 0;
+            translate([0, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([0, part_sep, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([part_sep, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([part_sep, part_sep]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([-part_sep, 0, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([-part_sep, part_sep]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([-part_sep / 2, -part_sep * 2 / 3, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            translate([part_sep / 2, -part_sep * 2 / 3, 0]) { capsule(0, 90, leg_angles, twist_all, 0); }
+            // ridges to connect all parts
+            translate([-part_sep + wall, part_sep / 2 - wall, 0]) {
+                cube([part_sep * 2, wall, wall / 2]);
             }
-        }
-        for (d = [-part_sep / 2, part_sep / 2]) {
-            translate([wall + d, - part_sep * 2 / 3 + capsule_radius, 0]) {
-                cube([wall, part_sep / 2 + part_sep * 2 / 3 - capsule_radius, wall / 2]);
+            for (d = [-part_sep, 0, part_sep]) {
+                translate([wall + d, capsule_radius, 0]) {
+                    cube([wall, part_sep - capsule_radius * 2, wall / 2]);
+                }
+            }
+            for (d = [-part_sep / 2, part_sep / 2]) {
+                translate([wall + d, - part_sep * 2 / 3 + capsule_radius, 0]) {
+                    cube([wall, part_sep / 2 + part_sep * 2 / 3 - capsule_radius, wall / 2]);
+                }
             }
         }
+    } else {
+        // just a single capsule holder
+        translate([0, 0, 0]) { capsule(0, 90, leg_angles, 0, 0); }
     }
 }