|
|
@@ -289,7 +289,7 @@ module octa_mount_body(height, radius, lower_lip, upper_lip, clear) {
|
|
|
|
|
|
// flare from the body to the microphone stalk
|
|
|
|
|
|
-module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_height, dot) {
|
|
|
+module octa_mount_flare_no_ws(height, lip, transition, radius, top_radius, stalk_height, dot) {
|
|
|
// bottom box
|
|
|
difference() {
|
|
|
union() {
|
|
|
@@ -386,6 +386,128 @@ module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_heigh
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_height, dot) {
|
|
|
+ // bottom box
|
|
|
+ difference() {
|
|
|
+ union() {
|
|
|
+ rounded_octagon_wall(height, radius, 2 * wall);
|
|
|
+ if (render_screw_holes) {
|
|
|
+ // small pedestals for the screws that attach the flare to the body
|
|
|
+ // (number 0 size, 1/4" long = thread diameter: 1.6mm, head diameter: 2.75)
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
+ translate([radius - wall - 1.75, 0, lip/2]) {
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
+ cylinder(r = 1.5, h = 2 * wall, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // flange to mount on body
|
|
|
+ rounded_octagon_wall(lip + 1.00, radius - wall, wall);
|
|
|
+ // and make a smooth transition to avoid overhangs
|
|
|
+ translate([0, 0, lip + 1.00]) {
|
|
|
+ hull() {
|
|
|
+ rounded_octagon_wall(thin_mint, radius - wall, wall);
|
|
|
+ translate([0, 0, 1.0]) {
|
|
|
+ rounded_octagon_wall(thin_mint, radius - 2 * wall, wall);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (render_screw_holes) {
|
|
|
+ // holes for screws that attach the flare to the body
|
|
|
+ // Number 0 Size, 1/4" Long = thread diameter: 1.6mm, head diameter: 2.75
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
+ translate([radius/2, 0, lip/2]) {
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
+ cylinder(r = (1.6 + 0.1)/2, h = radius, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // flare to windscreen threads
|
|
|
+ transition_to_threads = 5.0;
|
|
|
+ translate([0, 0, height]) {
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ rounded_octagon(thin_mint, radius);
|
|
|
+ translate([0, 0, transition_to_threads]) {
|
|
|
+ cylinder(r = windscreen_thread_radius + 0.5, h = thin_mint, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ hull() {
|
|
|
+ rounded_octagon(thin_mint, radius - 2 * wall);
|
|
|
+ translate([0, 0, transition_to_threads]) {
|
|
|
+ cylinder(r = windscreen_thread_radius - windscreen_thread_depth - wall, h = thin_mint, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // windscreen mounting threads
|
|
|
+ translate([0, 0, height + transition_to_threads]) difference() {
|
|
|
+ metric_thread(diameter = windscreen_thread_radius * 2, pitch = windscreen_thread_pitch,
|
|
|
+ length = windscreen_thread_height, angle = windscreen_thread_angle, internal = false);
|
|
|
+ cylinder(r = windscreen_thread_radius - wall - windscreen_thread_depth, h = windscreen_thread_height + thin_mint, $fn = facets);
|
|
|
+ }
|
|
|
+
|
|
|
+ // flare to stalk
|
|
|
+ translate([0, 0, height + transition_to_threads + windscreen_thread_height]) {
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ cylinder(r = windscreen_thread_radius - windscreen_thread_depth, h = thin_mint, $fn = facets);
|
|
|
+ translate([0, 0, transition - transition_to_threads - windscreen_thread_height]) {
|
|
|
+ cylinder(r = top_radius, h = thin_mint, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ hull() {
|
|
|
+ cylinder(r = windscreen_thread_radius - windscreen_thread_depth - wall, h = thin_mint, $fn = facets);
|
|
|
+ translate([0, 0, transition - transition_to_threads - windscreen_thread_height]) {
|
|
|
+ cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // cylindrical stalk
|
|
|
+ translate([0, 0, height + transition]) {
|
|
|
+ difference() {
|
|
|
+ cylinder(r = top_radius, h = stalk_height, $fn = facets);
|
|
|
+ cylinder(r = top_radius - wall, h = stalk_height, $fn = facets);
|
|
|
+ }
|
|
|
+ // add marker for "back of microphone" orientation
|
|
|
+ if (dot == 1) {
|
|
|
+ rotate([0, 0, 90]) {
|
|
|
+ translate([0, top_radius - wall * 2 / 3, stalk_height - top_radius]) {
|
|
|
+ difference() {
|
|
|
+ sphere(r = top_radius / 3, $fn = 32);
|
|
|
+ translate([0, -top_radius + top_radius / 2, 0]) {
|
|
|
+ cube([top_radius, top_radius, top_radius], center = true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // close stalk and add holes for cables
|
|
|
+ translate([0, 0, stalk_height - top_radius - wall]) {
|
|
|
+ difference() {
|
|
|
+ cylinder(r = top_radius - wall, h = top_radius + wall, $fn = facets);
|
|
|
+ translate([0, 0, 0]) {
|
|
|
+ sphere(r = top_radius - wall, $fn = facets);
|
|
|
+ }
|
|
|
+ wire_diam = mic_wire_diam + mic_wire_fit;
|
|
|
+ for (r = [0, 90, 180, 270]) rotate([0, 0, r]) {
|
|
|
+ for (t = [0, 1]) {
|
|
|
+ rotate([0, 0, 45 * t]) translate([top_radius - wire_diam - t * wire_diam * 2/3, 0, wall]) {
|
|
|
+ cylinder(r = wire_diam / 2, h = top_radius * 2, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ translate([0, 0, wall]) cylinder(r = wire_diam, h = top_radius * 2, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// flares from the body to a dual cable housing
|
|
|
|
|
|
module octa_mount_flare_dual(height, lip, transition, xradius, yradius, corner, top_radius, stalk_height) {
|
|
|
@@ -613,7 +735,7 @@ module render_octa_pcb_mount(z_offset, showint) {
|
|
|
octa_mount_body(octa_pcb_mount_height, octa_pcb_radius, mount_lip, mount_lip, 0);
|
|
|
// add ccrma logo
|
|
|
rotate([0, 0, -90 + 22.5]) {
|
|
|
- translate([0, -(octa_pcb_radius - 3.5), octa_pcb_mount_height / 2]) {
|
|
|
+ translate([0, -(octa_pcb_radius - 3.75), octa_pcb_mount_height / 2]) {
|
|
|
rotate([90, 270, 0]) {
|
|
|
logo_scale = 1 / 2.4;
|
|
|
scale([logo_scale, logo_scale, 1.0]) {
|