瀏覽代碼

lots of changes trying to optimize the shapes, the printout is not precise enough for the connecting rods

Fernando Pablo Lopez-Lezcano 11 年之前
父節點
當前提交
c9a251527b
共有 1 個文件被更改,包括 45 次插入 和 29 次删除
  1. 45 29
      first_order.scad

+ 45 - 29
first_order.scad

@@ -9,9 +9,19 @@
 // 3d models under Creative Commons Non-Commercial Share-alike, CC-NC-SA 3.0
 // http://creativecommons.org/licenses/by-nc-sa/3.0/
 
+// 0 -> capsule holder
+// 1 -> whole microhone
 
-// microphone capsule holder
+rendermic = 0;
+
+// number of facets for cylinders
+facets = 64;
 
+// adjustment for the size of the capsule
+//   (measured inside diameter was around 7.5 to 8.2 instead of 10, capsule diameter was 9.99)
+fudge = 0.1;
+
+// microphone capsule holder
 
 // azimuth: orientation of the capsule
 // elevation: orientation of the capsure
@@ -22,40 +32,40 @@
 // twist: adjust the angle of the mounts so they match
 // mounts: number of mounts to create (2 or 3)
 
-
-module capsule (azimuth, elevation, separation, radius, height, wall, twist, mounts) {
+module capsule (azimuth, elevation, ambradius, radius, height, wall, twist, mounts) {
 	rotate([0, 0, azimuth]) {
 		rotate([0, (90 - elevation), 0]) {
-  			translate([0, 0, separation]) {
+  			translate([0, 0, ambradius - height]) {
 				// the capsule holder
 				difference () {
 					union () {
 						// main capsule holder
-						cylinder(r = radius + wall, h = height, $fn = 128);	
+						cylinder(r = radius + wall, h = height, $fn = facets);	
 						// ridge to stop capsule when inserted
-						translate(v = [0, 0, - (wall / 2)]) {
-							difference() {
-								cylinder(r = radius + wall, h = wall / 2, $fn = 128);
-								cylinder(r = radius - 0.4, h = wall / 2, $fn = 128);
-							}
-						}
+//						translate(v = [0, 0, - (wall / 2)]) {
+//							difference() {
+//								cylinder(r = radius + wall, h = wall / 2, $fn = facets);
+//								cylinder(r = radius - 0.4, h = wall / 2, $fn = facets);
+//							}
+//						}
 						// the attachment point to the other capsules
 						for (rot = [-120 : 120 : mounts == 2 ? 0 : 120]) {
 							rotate(a = rot + twist, v = [0, 0, 1]) {
-								translate(v = [radius + wall, 0, wall * 2]) {
+								translate([radius - wall, 0, height - wall]) {
 									rotate(a = 145, v = [0, 1, 0]) {
-										cube([wall * 2.5, wall * 2, 6], center=true);
-//								  		cylinder(d=wall * 3, h = seaparation, center=true);
+								  		cylinder(d = wall * 4, h = 6, center = false, $fn = facets);
 									}
 								}
 							}
 						}
 					}
-					// the inside of the capsule holder
-					cylinder(r = radius, h = height, $fn = 128);
-					// remove the upper part of the attachment points
-					translate(v = [0, 0, height]) {
-						cylinder(r = radius + wall, h = wall);
+					// make the hole for the capsule
+					translate ([0, 0, -2]) {
+						cylinder(r = radius + fudge, h = height + 2, $fn = facets);
+					}
+					// remove any extra connecting beam material from the face of the holder
+					translate ([0, 0, height]) {
+						cylinder(r = radius + wall * 2, h = 2, $fn = facets);
 					}
 				}
 			}
@@ -119,17 +129,23 @@ mic_radius = 5;
 mic_height = 4.5;
 
 // separation between capsules
-cap_sep = 6;
-
-// connect the four instances together
-capsule(az1, el1, cap_sep, mic_radius, mic_height, 1, 60, 3);
-capsule(az2, el2, cap_sep, mic_radius, mic_height, 1, 240, 2);
-capsule(az3, el3, cap_sep, mic_radius, mic_height, 1, 60, 3);
-capsule(az4, el4, cap_sep, mic_radius, mic_height, 1, 240, 2);
+cap_sep = 7;
 
-// the mount
-stalk(mic_radius * 1.25, mic_radius * 2/3, 8, 1, 12);
+// distance between face of capsule and center of array
+amb_radius = 11.5;
 
+// connect the four instances together
+if (rendermic == 1) {
+	capsule(az1, el1, amb_radius, mic_radius, mic_height, 1, 60, 3);
+	capsule(az2, el2, amb_radius, mic_radius, mic_height, 1, 240, 2);
+	capsule(az3, el3, amb_radius, mic_radius, mic_height, 1, 60, 3);
+	capsule(az4, el4, amb_radius, mic_radius, mic_height, 1, 240, 2);
+	// the mount
+	//stalk(mic_radius * 1.25, mic_radius * 2/3, 8, 1, 12);
+}
 
 // just one to test
-//capsule(0, -90, -mic_height, mic_radius, mic_height, 1, 0);
+if (rendermic == 0) {
+	capsule(0, 270, 0, mic_radius, mic_height, 1, 0);
+}
+