eps = 0.01; infty = 300; /* 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); } // 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); } // 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); } // 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() { // 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() { 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); } // 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() { 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]); } // 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); } */