From: Jan "Yenya" Kasprzak Date: Thu, 2 Feb 2017 16:12:43 +0000 (+0100) Subject: rc landing gear - first version X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=6b3bdb2d47095ea4db9e40d6bd50fa85aeac3f52;p=things.git rc landing gear - first version --- diff --git a/rc-landing-gear.scad b/rc-landing-gear.scad new file mode 100644 index 0000000..e6bf3a5 --- /dev/null +++ b/rc-landing-gear.scad @@ -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); +} +