]> www.fi.muni.cz Git - things.git/commitdiff
radiacni stit - prvni tisknuta verzze
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Tue, 27 Feb 2024 15:07:32 +0000 (16:07 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 6 Mar 2024 20:58:30 +0000 (21:58 +0100)
radiacni-stit.scad [new file with mode: 0644]

diff --git a/radiacni-stit.scad b/radiacni-stit.scad
new file mode 100644 (file)
index 0000000..9e20d74
--- /dev/null
@@ -0,0 +1,91 @@
+include <yenyalib.scad>
+
+$fn = 128;
+infty = 500;
+inner_d = 80;
+outer_d = 95;
+cone_h = 20;
+wall = 1.5;
+base_wall = 3;
+cone_angle = atan((outer_d-inner_d)/(2*cone_h));
+shield_h = 80;
+shield_twist = 30;
+blade_wall = 2.5;
+blades = 12;
+blade_w = 4*inner_d/blades;
+blade1_w = 4;
+blade_rot = 16;
+shield_r1 = inner_d/2 - blade_w/2*sin(blade_rot) - 1.5*wall;
+shield_r2 = 1.1*shield_r1;
+
+beam_w = 10;
+beam_h = 15;
+beam_l = inner_d/2 + 60;
+beam_end_l = 20;
+beam_end_h = 0.35*beam_h;
+
+for (angle = [0:30:360]) Rz(angle) {
+       // main blades
+       linear_extrude(height = shield_h, twist = shield_twist,
+               center=false, scale=shield_r2/shield_r1) {
+                       Ty(shield_r1) Rz(blade_rot) {
+                               Sx(blade_w/blade_wall) circle(r=blade_wall/2);
+                               Tx(-blade_w/3) Ty(blade_wall/2) Sx(0.5) circle(r=blade_wall/2);
+                       }
+               }
+       // counter-direction struts
+       linear_extrude(height = shield_h, twist = -shield_twist,
+               center=false, scale=shield_r2/shield_r1)
+               Ty(shield_r1)
+                       Sx(blade1_w/blade_wall) circle(r=blade_wall/2);
+}
+
+// top cone
+difference() {
+       union() {
+               cylinder(r1 = inner_d/2, r2 = outer_d/2, h = cone_h);
+               // beam
+               Tz(beam_w/3) Ry(90) Sx(3*beam_h/(2*beam_w))
+                        cylinder(r = beam_w/2, h = beam_l);
+               // beam_end
+               
+       }
+       Tz(-eps) cylinder(r1 = inner_d/2 - wall/cos(cone_angle),
+               r2 = outer_d/2 - wall/cos(cone_angle),
+               h = cone_h + 2*eps);
+       // z negative
+       translate([-infty/2, -infty/2, -infty]) cube(infty);
+       // beam end
+       translate([beam_l-beam_end_l, -beam_w/2, beam_end_h])
+               cube([beam_end_l+eps, beam_w, beam_h]);
+       // beam screw hole
+       Tx(beam_l-beam_w/2) Tz(-eps) cylinder(r=2.5, h = beam_end_h + 2*eps);
+       
+}
+
+// base plate
+cylinder(r = inner_d/2, h = base_wall);
+
+clip_d = 50+0.25;
+// clips
+clip_r1 = 1.5;
+clip_r2 = 8*clip_r1;
+clip_end_r = 5;
+clip_h = 3.25;
+Tz(base_wall)
+for (angle = [0:120:360]) Rz(angle) difference() {
+       hull() {
+               Tx(clip_d/2) Sy(clip_r2/clip_r1)
+                       cylinder(r = clip_r1, h = clip_h + wall);
+               Tx(clip_d/2) Ty(clip_r2-clip_end_r) difference() {
+                       cylinder(r = clip_end_r, h = clip_h + wall);
+                       translate([0, -2*clip_end_r, -eps])
+                               cube([4*clip_end_r, 4*clip_end_r, clip_h + wall +2*eps]);
+               } 
+       }
+       Tz(-eps) difference() {
+               cylinder(r = clip_d/2, h = clip_h+eps);
+               Ty(clip_r2-clip_end_r) Tz(-eps)
+                       cube([clip_d, clip_d, clip_h+3*eps]);
+       }
+}