From: Jan "Yenya" Kasprzak Date: Mon, 6 Feb 2017 09:35:22 +0000 (+0100) Subject: rc landing gear: another approach X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=4b9544fdc7fb01ea6c3e58e203f9a68fd717e697;p=things.git rc landing gear: another approach --- diff --git a/rc-landing-gear.scad b/rc-landing-gear.scad index e6bf3a5..71d67f7 100644 --- a/rc-landing-gear.scad +++ b/rc-landing-gear.scad @@ -1,126 +1,122 @@ 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); } +*/