eps = 0.01; infty = 200; wall = 1.0; tube_d = 8.0 + 0.2; servo_side_l = 5 - 0.5; clip_w = servo_side_l + wall; slot_w = 3; servo_w = 12.5+0.5; servo_zoff = 16 + 2.0-tube_d/2-servo_w/2; // od stredu trubice po osu otaceni servo_xoff = 11 - 4.0 - tube_d/2; servo_slot_z = 2.5 + 0.3; servo_screw_hole = 1.2; module main() { difference() { hull() { // clip cylinder cylinder(r = tube_d/2 + wall, h = clip_w); // under the servo translate([servo_xoff - wall, servo_zoff - wall, 0]) cube([servo_slot_z+2*wall, servo_w + wall, clip_w]); } // fuse tube translate([0, 0, -eps]) cylinder(r = tube_d/2, h = clip_w + 2*eps); // slot translate([-slot_w/2, -tube_d,, -eps]) cube([slot_w, tube_d, clip_w + 2*eps]); // servo slot translate([servo_xoff, servo_zoff, wall]) cube([servo_slot_z, servo_w + eps, servo_side_l + eps]); // servo screw hole translate([-infty/2, servo_zoff + servo_w/2, 0.6*servo_side_l + wall]) rotate([0, 90, 0]) cylinder(r = servo_screw_hole/2, h = infty, $fn = 6); } } for (x = [-1, 1]) scale([x, 1, 1]) translate([tube_d/2 + 2*wall, 0, 0]) main();