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