]> www.fi.muni.cz Git - things.git/commitdiff
paul trap
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 14 Mar 2024 22:53:34 +0000 (23:53 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 14 Mar 2024 22:53:34 +0000 (23:53 +0100)
paul-trap-holder.scad
paul-trap-laser-holder.scad [new file with mode: 0644]

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);
+}
+
diff --git a/paul-trap-laser-holder.scad b/paul-trap-laser-holder.scad
new file mode 100644 (file)
index 0000000..7fcd4c6
--- /dev/null
@@ -0,0 +1,26 @@
+include <yenyalib.scad>
+
+wall = 1.5;
+strut_w = 15;
+laser_h = 103;
+laser_d = 12;
+clip_cut_w = 4;
+
+       Tx(-strut_w/2) {
+               Ty(laser_h/2)
+                       cube([strut_w, laser_h/2, wall]);
+               Ty(laser_h-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() Tx(strut_w/2-wall)
+               cube([wall, laser_h, strut_w]);
+       difference() {
+               cylinder(r = laser_d/2+1.41*wall, h = strut_w, $fn = 4);
+               Tz(-eps) cylinder(r = laser_d/2, h = strut_w+2*eps, $fn = 4);
+               translate([-clip_cut_w/2, -laser_d, -eps])
+                       cube([clip_cut_w, 2*laser_d, strut_w+2*eps]);
+       }
+
+