]> www.fi.muni.cz Git - things.git/commitdiff
rc landing gear: another approach
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 6 Feb 2017 09:35:22 +0000 (10:35 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 6 Feb 2017 09:35:22 +0000 (10:35 +0100)
rc-landing-gear.scad

index e6bf3a502a04b3c357ed018a02f497708fbc9411..71d67f750e20d25f17e696190de06726563a78e1 100644 (file)
 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;
+/*
+sirka trupu u nabezne hrany 80mm
+max sirka trupu 90 mm
+sirka trupu 50mm pred nabeznou hranou 84mm
+rozchod klidne 150mm
+vyska osy se spodni hranou trupu az cca 30mm pod trupem
+kolma cast asi vpredu
+*/
+
+base_d = 80;
+base_w = base_d;
+base_wall = 2;
+base_l = 50;
+
+wheel_h = 40 + base_d/2; // under the base_d/2
+wheel_base = 160;
+
+axle_cube = 10;
+axle_hole = 3;
+
+leg_wall = 2;
+top_l = axle_cube;
+
+       // bottom arc
+       difference() {
+               $fn = 128;
+               cylinder(r = base_d/2, h = base_l);
+               translate([0, 0, -eps])
+                       cylinder(r = base_d/2 - base_wall, h = base_l + 2*eps);
+               // cut the top half
+               translate([-infty/2, 0, -infty/2]) cube(infty);
+               // angled cut to top_l
+               translate([0, 0, top_l])
+               rotate([atan((base_d/2-base_wall)/(base_l - top_l)), 0, 0])
+               translate([-infty/2, 0, -infty/2]) cube(infty);
+       }
 
-spring_clip_l = 3.5;
-spring_clip_w = base_w - 5;
-spring_dist = 10;
+       // wheel cubes
+       difference() {
+               for (x = [-1, 1]) scale([x, 1, 1])
+                       translate([wheel_base/2-axle_cube, 
+                               -wheel_h-axle_cube/2, 0])
+                               cube(axle_cube);
+               translate([-infty/2, -wheel_h, axle_cube/2])
+                       rotate([0, 90, 0])
+                       cylinder(r = axle_hole/2, h = infty);
+       }
 
-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);
-}
+       // bottom struts
+       for (x = [-1, 1]) scale([x, 1, 1]) hull() {
+               // center
+               translate([0, -base_d/2 + base_wall/2, 0])
+                       cylinder(r = leg_wall/2, h = base_l, $fn = 16);
+               // side
+               translate([wheel_base/2-axle_cube+leg_wall/2,
+                       -wheel_h+axle_cube/2-leg_wall/2 , 0])
+                       cylinder(r = leg_wall/2, h = axle_cube, $fn = 16);
+       }
 
-module front_cyl() {
-       rotate([rear_angle-90, 0, 0])
-               cylinder(r = beam_w/2, h = beam_h, $fn = 32);
-}
+       // top struts
+       for (x = [-1, 1]) scale([x, 1, 1]) hull() {
+               // top
+               translate([base_d/2 - base_wall/2, -leg_wall/2, 0])
+                       cylinder(r = leg_wall/2, h = top_l+1, $fn = 16);
+               // bottom
+               translate([wheel_base/2-leg_wall/2,
+                       -wheel_h+axle_cube/2-leg_wall/2 , 0])
+                       cylinder(r = leg_wall/2, h = axle_cube, $fn = 16);
+       }
 
-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])
+       // bottom arc
+       difference() {
+               cylinder(r = base_d/2, h = base_l);
+               translate([0, 0, -eps])
+                       cylinder(r = base_d/2 - base_wall, h = base_l + 2*eps);
+               translate([-infty/2, 0, -infty/2]) cube(infty);
+       }
+
+       // side top arcs
+       for (x = [-1, 1]) scale([x, 1, 1])
+       translate([base_d/2+side_d/2-base_wall, 0, 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
+               cylinder(r = side_d/2, h = base_l);
+               translate([0, 0, -eps])
+                       cylinder(r = side_d/2 - base_wall, h = base_l + 2*eps);
                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
+       // side beams
+       for (x = [-1, 1]) scale([x, 1, 1])
+       translate([base_d/2 + side_d-2*base_wall, -base_d/2-wheel_h, 0])
+               cube([base_wall, base_d/2+wheel_h, base_l]);
+
+       // bottom springs
+       for (x = [-1, 1]) scale([x, 1, 1])
        hull() {
-               for (j = [-1, 1])
-                       translate([j*(base_w/2-beam_w/2), spring_dist, 0])
-                               rear_cyl();
+               translate([0, -base_d/2, 0]) cube([base_wall, base_wall, base_l]);
+               translate([base_d/2+side_d-2*base_wall, -base_d/2-wheel_h, 0]) cube([base_wall, base_wall, base_l]);
        }
-
-       // 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();
-               }
+       // wheel cubes
+       for (x = [-1, 1]) scale([x, 1, 1])
+               translate([base_d/2+side_d-2*base_wall, -base_d/2-wheel_h-axle_cube/2, 0])
+                       cube(axle_cube);
 }
 
 difference() {
        body();
+       for (x = [-1, 1]) scale([x, 1, 1])
+       translate([base_d/2+wheel_h, -base_d/2-wheel_h, axle_cube])
+       translate([-infty/2, -base_d/2-wheel_h, axle_cube/2])
+       % rotate([0, 90, 0])
+               cylinder(r = axle_hole/2, h = infty);
 
-       // 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);
 }
 
+*/