]> www.fi.muni.cz Git - things.git/blobdiff - paul-trap-holder.scad
paul trap
[things.git] / paul-trap-holder.scad
index d951208c1ba9f937fa0334574fbda1e0c8614ce0..5d513cb113b541b75fbc3d32e700d377f74b0a38 100644 (file)
@@ -1,36 +1,52 @@
 include <yenyalib.scad>
 
-base_wall = 3;
-rod_d = 5 + 0.5;
-d_max = 40;
-d_min = 15;
+base_wall = 4;
+wall = 1.5;
+rod_d = 5 + 1;
+d_max = 45;
+d_min = 20;
 steps = 3;
 
-difference() {
-       cylinder(r = d_max/2+base_wall + rod_d/2, h = base_wall, $fn = 6);
-       for (i = [0:1:steps]) {
-               Rz((steps-i)*85/steps)
-               for (angle = [0:60:360]) Rz(angle) Tx(d_min/2+i*(d_max-d_min)/(2*(steps))) Tz(-eps)
-                       cylinder(r = rod_d/2, h = base_wall + 2*eps, $fn = 6);
-       }
-}
-
-// strut
 strut_w = 15;
 strut_l = 80;
+strut_side_inner_l = 8;
+
+center_hole_d = d_min-wall-rod_d;
+
+module base() {
+       difference() {
+               cylinder(r = d_max/2+2*wall + rod_d/2, h = base_wall, $fn = 6);
+               Tz(wall) cylinder(r = d_max/2 + rod_d/2+wall, h = base_wall, $fn = 6);
+       }
+}
 
-Ty((d_max/2+base_wall+rod_d/2)*cos(30)) {
+module strut() {
+Ty((d_max/2+wall+rod_d/2)*cos(30)) {
        Tx(-strut_w/2) {
-               cube([strut_w, strut_l, base_wall]);
-               Ty(strut_l-base_wall) difference() {
-                       cube([strut_w, base_wall, strut_w]);
-                       Tx(strut_w/2) Tz(strut_w/2) Rx(-90) Tz(-eps) cylinder(r = 2.5, h = base_wall+2*eps, $fn = 6);
+               cube([strut_w, strut_l, wall]);
+               Ty(strut_l-wall) difference() {
+                       cube([strut_w, wall, strut_w]);
+                       Tx(strut_w/2) Tz(strut_w/2) Rx(-90) Tz(-eps) cylinder(r = 2.5, h = wall+2*eps, $fn = 6);
                }
        }
        Mx() hull() {
-               Tx(strut_w/2-base_wall) {
-                       Ty(-base_wall) cube([base_wall, eps, base_wall]);
-                       Ty(strut_l-base_wall) cube([base_wall, base_wall, strut_w]);
+               Tx(strut_w/2-wall) {
+                       Ty(-strut_side_inner_l) cube([wall, eps, base_wall]);
+                       Ty(strut_l-wall) cube([wall, wall, strut_w]);
                }
        }
 }
+}
+difference() {
+       union() {
+               base();
+               strut();
+       }
+       for (i = [0:1:steps]) {
+               Rz((steps-i)*85/steps)
+               for (angle = [0:60:360]) Rz(angle) Tx(d_min/2+i*(d_max-d_min)/(2*(steps))) Tz(-eps)
+                       cylinder(r = rod_d/2, h = wall + 2*eps, $fn = 6);
+       }
+       Tz(-eps) cylinder(r = center_hole_d/2, h = infty);
+}
+