]> www.fi.muni.cz Git - things.git/commitdiff
rc landing gear - first version
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 2 Feb 2017 16:12:43 +0000 (17:12 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 2 Feb 2017 16:12:43 +0000 (17:12 +0100)
rc-landing-gear.scad [new file with mode: 0644]

diff --git a/rc-landing-gear.scad b/rc-landing-gear.scad
new file mode 100644 (file)
index 0000000..e6bf3a5
--- /dev/null
@@ -0,0 +1,126 @@
+eps = 0.01;
+infty = 300;
+
+base_d = 70;
+base_y_scale = 0.7;
+base_wall = 1.25;
+
+base_l = 80;
+base_w = 30;
+
+rear_angle = 75;
+
+wheel_base = 70;
+wheel_h = 50;
+wheel_axle_cube = 5;
+
+axle_hole = 2;
+
+beam_w = 1.5;
+beam_h = 5;
+top_beam_h = 12;
+
+spring_clip_l = 3.5;
+spring_clip_w = base_w - 5;
+spring_dist = 10;
+
+module rear_cyl() {
+       translate([0, 0, -beam_w*sin(rear_angle)/2])
+       rotate([rear_angle-90, 0, 0])
+               cylinder(r = beam_w/2, h = beam_h/sin(rear_angle), $fn = 32);
+}
+
+module front_cyl() {
+       rotate([rear_angle-90, 0, 0])
+               cylinder(r = beam_w/2, h = beam_h, $fn = 32);
+}
+
+module top_cyl() {
+       rotate([rear_angle-90, 0, 0])
+               cylinder(r = beam_w/2, h = top_beam_h, $fn = 32);
+}
+
+module body() {
+       rotate([rear_angle-90, 0, 0])
+       translate([0, -sqrt(pow(base_d*base_y_scale/2,2) - pow(base_w*base_y_scale/2,2)), 0])
+       difference() {
+               // outer cylinder
+               scale([1, base_y_scale, 1])
+                       cylinder(r = base_d/2, h = base_l);
+               // cut the sides
+               for (i = [-1, 1]) scale ([i, 1, 1])
+                       translate([base_w/2, -infty/2, -infty/2])
+                               cube(infty);
+               // cut the rear
+               translate([-infty/2, -infty, -infty/2]) cube(infty);
+       }
+
+       // wheel axle cubes
+       for (i = [-1, 1]) scale([i, 1, 1])
+               translate([wheel_base/2 - wheel_axle_cube, wheel_h - wheel_axle_cube/2, 0])
+                       cube(wheel_axle_cube);
+
+       // rear beams
+       for (i = [-1, 1]) scale([i,1,1])
+               hull() {
+                       translate([-(base_w/2-beam_w/2), spring_dist, 0])
+                               rear_cyl();
+                       translate([wheel_base/2-beam_w/2, wheel_h, 0])
+                               rear_cyl();
+               }
+
+       // spring top
+       hull() {
+               for (j = [-1, 1])
+                       translate([j*(base_w/2-beam_w/2), spring_dist, 0])
+                               rear_cyl();
+       }
+
+       // spring sides
+       for (i = [-1, 1]) scale([i,1,1])
+               hull() {
+                       translate([(base_w/2+beam_w), 0, 0])
+                               rear_cyl();
+                       translate([(base_w/2-beam_w/2), spring_dist, 0])
+                               rear_cyl();
+               }
+
+       // front beams
+       for (i = [-1, 1]) scale([i,1,1])
+               for (j = [-1, 1]) hull() {
+                       translate([j*(base_w/2-beam_w/2), (base_l-top_beam_h)*cos(rear_angle), (base_l-top_beam_h)*sin(rear_angle)])
+                               top_cyl();
+                       translate([wheel_base/2-beam_w/2, wheel_h, 0])
+                               front_cyl();
+               }
+
+       // spring rear clip
+       translate([-spring_clip_w/2, 0, 0])
+               cube([spring_clip_w, spring_clip_l, base_wall]);
+
+       // spring clip sides
+       for (i = [-1, 1]) scale([i,1,1])
+               hull() {
+                       translate([(base_w/2-beam_w/2), 0, 0])
+                               rear_cyl();
+                       translate([(base_w/2-beam_w/2), spring_clip_l - 1.5*beam_w, 0])
+                               rear_cyl();
+               }
+}
+
+difference() {
+       body();
+
+       // inner cylinder hole
+       rotate([+rear_angle-90, 0, 0])
+       translate([0, -sqrt(pow(base_d*base_y_scale/2,2) - pow(base_w*base_y_scale/2,2)), -infty/2])
+               scale([1, 1*base_y_scale, 1])
+                       cylinder(r = base_d/2 - base_wall, h = infty);
+       // cut the bottom
+       translate([-infty/2, -infty/2, -infty]) cube(infty);
+       // wheel axle hole
+       translate([-infty/2, wheel_h, wheel_axle_cube/2])
+               rotate([0, 90, 0])
+                       cylinder(r = axle_hole/2, h = infty);
+}
+