瀏覽代碼

the windscreen support mesh with four double helixes is not really printable in one go, the quality of the beams degrade as the structure gets taller - so split it into two sections (maybe we will need three) and move to six double helixes so that the slope of the beams is less and the print quality is better

Fernando Pablo Lopez-Lezcano 9 年之前
父節點
當前提交
ec80d68919
共有 1 個文件被更改,包括 69 次插入 和 26 次删除
  1. 69 26
      TinySpHEAR_mount_pcb.scad

+ 69 - 26
TinySpHEAR_mount_pcb.scad

@@ -545,56 +545,99 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
 
 // windscreen
 
-module tetra_wind_screen(radius, corner, height, band_height, col_radius) {
-    // mount to body
-    difference() {
-        rounded_block_relative(band_height, radius, radius, corner, col_radius);
-        rounded_block_relative(band_height, radius, radius, corner, -(col_radius + lip_fit));
-        // indentation to trap nylon screen
-    }
+module tetra_wind_screen_quad(radius, corner, height, band_height, helix_radius, twist) {
     // quad helix windscreen support
-    translate([0, 0, band_height]) {
+    translate([0, 0, 0]) {
         for (r = [0, 90, -90, 180]) for (t = [1, -1]) rotate([0, 0, r]) {
-            linear_extrude(height = height, center = false, convexity = 0, twist = (360 + 45/2) * t, $fn = facets) {
-                translate([radius, 0, 0]) {
-                    circle(r = col_radius, $fn = facets);
+            linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
+                translate([radius + helix_radius, 0, 0]) {
+                    circle(r = helix_radius, $fn = facets);
+                }
+            }
+        }
+    }
+    // connectors to top
+    translate([0, 0, height]) {
+        for (r = [0, 90, -90, 180]) rotate([0, 0, r + twist]) {
+            translate([radius + helix_radius, 0, 0]) {
+                cylinder(r = helix_radius * 2/3, h = 2.0, $fn = facets);
+            }
+        }
+    }
+}
+
+module tetra_wind_screen(radius, corner, height, band_height, beam_radius, twist) {
+    // quad helix windscreen support
+    translate([0, 0, 0]) {
+        for (r = [0, 60, 120, 180, 240, 300]) for (t = [1, -1]) rotate([0, 0, r]) {
+            linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
+                translate([radius + beam_radius, 0, 0]) {
+                    circle(r = beam_radius, $fn = facets);
                 }
             }
         }
     }
     // connectors to top
-    translate([0, 0, height + band_height]) {
-        for (r = [0, 90, -90, 180]) for (t = [22.5, -22.5]) rotate([0, 0, r + t]) {
-            translate([radius, 0, 0]) {
-                cylinder(r = col_radius * 2/3, h = 2.0, $fn = facets);
+    translate([0, 0, height]) {
+        for (r = [0, 60, 120, 180, 240, 300]) rotate([0, 0, r + twist]) {
+            translate([radius + beam_radius, 0, 0]) {
+                cylinder(r = beam_radius * 2/3, h = 2.0, $fn = facets);
             }
         }
     }
 }
 
-module tetra_wind_screen_top(radius, col_rad) {
+module tetra_wind_screen_top(radius, beam_rad) {
     // main ring
     difference() {
-        cylinder(r = radius + 2 * col_rad, h = col_rad * 1.5, $fn = facets);
-        cylinder(r = radius, h = col_rad * 1.5, $fn = facets);
+        cylinder(r = radius + beam_rad * 1.5, h = beam_rad * 1.5, $fn = facets);
+        cylinder(r = radius + beam_rad * 0.5, h = beam_rad * 1.5, $fn = facets);
     }
     // cross
-    for (r = [-45, 45, 135, -135]) rotate([0, 0, r]) {
-        translate([0, -col_rad/2, 0]) {
-            cube([radius, col_rad, col_rad * 1.5]);
+    for (r = [0, 90, 180, 270]) rotate([0, 0, r]) {
+        translate([0, -beam_rad/2, 0]) {
+            cube([radius + beam_rad, beam_rad, beam_rad * 1.5]);
         }
     }
-    // connectors for quad helix
-    for (r = [0, 90, -90, 180]) for (t = [22.5, -22.5]) rotate([0, 0, r + t]) {
-        translate([radius + col_rad, 0, 0]) {
+}
+
+module tetra_wind_screen_mount(radius, helix_radius, corner, beam_rad) {
+    difference() {
+        rounded_block_relative(band_height, radius, radius, corner, 2 * beam_rad);
+        rounded_block_relative(band_height, radius, radius, corner, 1.2); // (lip_fit + 0.5));
+        // indentation to trap nylon screen
+    }
+    // supports for double helix
+    for (r = [0, 60, 120, 180, 240, 300]) rotate([0, 0, r]) {
+        translate([0, helix_radius + beam_rad, 0]) {
             difference() {
-                cylinder(r = col_rad * 2/3 + wall/2, h = col_rad * 1.5 + 2.0, $fn = facets);
-                cylinder(r = col_rad * 2/3 - fit, h = col_rad * 1.5 + 2.0, $fn = facets);
+                union() {
+                    cylinder(r = beam_rad, h = band_height, $fn = facets);
+                    // attach beam to sides (2)
+                    translate([-beam_rad/2, -beam_rad * 2, 0]) {
+                        cube([beam_rad, beam_rad * 2, band_height]);
+                    }
+                }
+                // cut bottom of attachment beams
+                translate([-3, -1.1, 0]) {
+                    rotate([-15, 0, 0]) {
+                        cube([10, 10, 10]);
+                    }
+                }
             }
         }
     }
 }
 
+// small tube to connect both helical windscreen mounts
+
+module tetra_wind_screen_connector(beam_rad) {
+    difference() {
+        cylinder(r = beam_rad * 1.2, h = 4, $fn = facets);
+        cylinder(r = beam_rad * 2/3 + fit, h = 5, $fn = facets);
+    }
+}
+
 
 ////
 //// render all the different parts