X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=rc-landing-gear.scad;h=877164c99c44ca73f38164cc4f8f4843f7c2ea2c;hb=7bc880d3a8aeafb76ce736bdeafed74853be5a9c;hp=e6bf3a502a04b3c357ed018a02f497708fbc9411;hpb=6b3bdb2d47095ea4db9e40d6bd50fa85aeac3f52;p=things.git diff --git a/rc-landing-gear.scad b/rc-landing-gear.scad index e6bf3a5..877164c 100644 --- a/rc-landing-gear.scad +++ b/rc-landing-gear.scad @@ -1,126 +1,127 @@ eps = 0.01; infty = 300; -base_d = 70; -base_y_scale = 0.7; -base_wall = 1.25; +/* +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_l = 80; -base_w = 30; +base_d = 83; +base_w = base_d; +base_wall = 0.8; +base_l = 35; -rear_angle = 75; +axle_cube = 7; +axle_hole = 3; -wheel_base = 70; -wheel_h = 50; -wheel_axle_cube = 5; +leg_wall = 1; +top_l = axle_cube; -axle_hole = 2; +wheel_h = axle_cube/2+base_d/2 - leg_wall; // under the base_d/2 +wheel_base = 110; -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); -} + // 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 + for (i = [-1, 1]) scale([i, 1, 1]) + translate([0, 0, base_l]) + // rotate([atan((base_d/2-base_wall)/(base_l - top_l)), 0, 0]) + rotate([0, 57, 0]) + translate([-infty, -infty/2, -infty/2]) cube(infty); + } -module front_cyl() { - rotate([rear_angle-90, 0, 0]) - cylinder(r = beam_w/2, h = beam_h, $fn = 32); -} + // 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 top_cyl() { - rotate([rear_angle-90, 0, 0]) - cylinder(r = beam_w/2, h = top_beam_h, $fn = 32); -} + // bottom struts + for (x = [-1, 1]) scale([x, 1, 1]) hull() { + // center + rotate([0, 0, 30]) + translate([0, -base_d/2 + base_wall/2, 0]) + cylinder(r = leg_wall/2, h = (base_l-axle_cube)*(90-30)/90, $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); + } + // 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 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() { - // 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 = 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() { + 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); } +*/