|
@@ -43,8 +43,8 @@ leg_width = 5;
|
|
|
leg_thick = 2.5;
|
|
leg_thick = 2.5;
|
|
|
|
|
|
|
|
// width of the ridge that connects to the mount
|
|
// width of the ridge that connects to the mount
|
|
|
-ridge_width = 2;
|
|
|
|
|
-ridge_slot_width = 4.5;
|
|
|
|
|
|
|
+ridge_width = 1.5;
|
|
|
|
|
+ridge_slot_width = 2;
|
|
|
ridge_length = 2.5;
|
|
ridge_length = 2.5;
|
|
|
|
|
|
|
|
// wall thickness of capsule holder
|
|
// wall thickness of capsule holder
|
|
@@ -54,7 +54,7 @@ wall = 1;
|
|
|
mount_radius = 3.5;
|
|
mount_radius = 3.5;
|
|
|
|
|
|
|
|
// height of mount
|
|
// height of mount
|
|
|
-mount_height = 20;
|
|
|
|
|
|
|
+mount_height = 8;
|
|
|
|
|
|
|
|
//// end of model parameters
|
|
//// end of model parameters
|
|
|
////
|
|
////
|
|
@@ -214,7 +214,62 @@ module capsule (azimuth, elevation, mounts, twist, ridge) {
|
|
|
// wall: thickness of cylinder wall
|
|
// wall: thickness of cylinder wall
|
|
|
// separation: height of mount with respect of the microphone assembly
|
|
// separation: height of mount with respect of the microphone assembly
|
|
|
|
|
|
|
|
|
|
+box_height = 4.0;
|
|
|
|
|
+
|
|
|
module mount (angles, wall, separation) {
|
|
module mount (angles, wall, separation) {
|
|
|
|
|
+ translate([0, 0, -separation]) {
|
|
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ int_width = leg_width * 4 / 3;
|
|
|
|
|
+ translate([-(int_width) / 2, -(capsule_sep_max - 2.1), - box_height]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ translate([-wall, -wall, 0]) {
|
|
|
|
|
+ cube([int_width + 2 * wall, (capsule_sep_max - 2.1) * 2 + 2 * wall, box_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ cube([int_width, (capsule_sep_max - 2.1) * 2, box_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+mount_top_depth = 2.0;
|
|
|
|
|
+mount_stalk_radius = 1.5;
|
|
|
|
|
+mount_stalk_length = 8;
|
|
|
|
|
+
|
|
|
|
|
+module mount_cube (angles, wall, separation) {
|
|
|
|
|
+ translate([0, 0, -separation]) {
|
|
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ translate([-(ridge_slot_width + 2 * ridge_width) / 2, -capsule_sep_max, - mount_top_depth]) {
|
|
|
|
|
+ cube([ridge_slot_width + 2 * ridge_width, capsule_sep_max * 2, mount_top_depth]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // cut a slot for the ridges in the mount
|
|
|
|
|
+ for (rot = angles) {
|
|
|
|
|
+ rotate([0, -elev_angle, -45 + rot]) {
|
|
|
|
|
+ translate([-capsule_sep_max * 2, 0.5 * ridge_slot_width - fit / 2, mount_slot_depth - 0.6 * wall]) {
|
|
|
|
|
+ cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([-capsule_sep_max * 2, - 1.5 * ridge_slot_width - fit / 2, mount_slot_depth - 0.6 * wall]) {
|
|
|
|
|
+ cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // top of the ridge
|
|
|
|
|
+ translate([-capsule_sep_max * 2, -ridge_slot_width, mount_slot_depth + wall]) {
|
|
|
|
|
+ cube([capsule_sep_max * 2, 2 * ridge_slot_width + fit, mount_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // cut a hole for the mounting stalk
|
|
|
|
|
+ translate([0, 0, -mount_top_depth]) {
|
|
|
|
|
+ cylinder(r = mount_stalk_radius, h = mount_top_depth, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module mount_cylinder (angles, wall, separation) {
|
|
|
translate([0, 0, -(separation + 0.0)]) {
|
|
translate([0, 0, -(separation + 0.0)]) {
|
|
|
difference() {
|
|
difference() {
|
|
|
union() {
|
|
union() {
|
|
@@ -272,8 +327,8 @@ module mount (angles, wall, separation) {
|
|
|
if (rendermic == 1) {
|
|
if (rendermic == 1) {
|
|
|
capsule(45, elev_angle, leg_angles_top, 60, 0);
|
|
capsule(45, elev_angle, leg_angles_top, 60, 0);
|
|
|
capsule(-135, elev_angle, leg_angles_top, 60, 0);
|
|
capsule(-135, elev_angle, leg_angles_top, 60, 0);
|
|
|
- capsule(-45, -elev_angle, leg_angles_bot, 0, 1);
|
|
|
|
|
- capsule(135, -elev_angle, leg_angles_bot, 0, 1);
|
|
|
|
|
|
|
+ capsule(-45, -elev_angle, leg_angles_top, 0, 0);
|
|
|
|
|
+ capsule(135, -elev_angle, leg_angles_top, 0, 0);
|
|
|
// the mount
|
|
// the mount
|
|
|
mount([-45, 135], 1, capsule_bottom);
|
|
mount([-45, 135], 1, capsule_bottom);
|
|
|
}
|
|
}
|
|
@@ -295,7 +350,7 @@ if (rendermic == 0) {
|
|
|
// #1
|
|
// #1
|
|
|
translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
|
|
translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
|
|
|
// mount
|
|
// mount
|
|
|
- translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
|
|
|
|
|
|
|
+ translate([0, 0, box_height]) { mount([-45, 135], 1, 0); }
|
|
|
// add connecting ridges to make it all one part
|
|
// add connecting ridges to make it all one part
|
|
|
difference() {
|
|
difference() {
|
|
|
for (rot_a = [-45, 45]) {
|
|
for (rot_a = [-45, 45]) {
|
|
@@ -325,7 +380,6 @@ if (rendermic == 0) {
|
|
|
translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
|
|
translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
|
|
|
// mount
|
|
// mount
|
|
|
translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
|
|
translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
|
|
|
-
|
|
|
|
|
// add connecting ridges to make it all one part
|
|
// add connecting ridges to make it all one part
|
|
|
difference() {
|
|
difference() {
|
|
|
for (rot_a = [-45, 45]) {
|
|
for (rot_a = [-45, 45]) {
|