eps = 0.01; infty = 200; wall = 1.5; 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 = 14.5 + 2.0-tube_d/2-servo_w/2; // od stredu trubice po osu otaceni servo_slot_z = 2.5 + 0.1; servo_xoff = -servo_slot_z/2; servo_screw_hole = 1.6; servo_screw_hole_2 = 2.5; 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 1 translate([0, 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); translate([0, servo_zoff + servo_w/2, 0.6*servo_side_l + wall]) rotate([0, -90, 0]) cylinder(r = servo_screw_hole_2/2, h = infty, $fn = 6); } } for (x = [-1, 1]) scale([x, 1, 1]) translate([tube_d/2 + 2*wall, 0, 0]) main();