REPY-2.0 1.0
Mechanical module for modular robotics
|
Generates the lower part of the module. { //-- Create the base: //--======================================================================================================= //-- Base: //------------------------------------------------------------------------------------------------------ Component base = RoundedTablet( side, side, lower_base_thickness, board_safe); //-- Drills of the base: //------------------------------------------------------------------------------------------------------ Component base_drill = Cylinder( pcb->get_drill_diam()/2.0, lower_base_thickness + 0.2, 6, true); Component base_drill01 = base_drill.translatedCopy( pcb->get_drill_x()/2.0, pcb->get_drill_y()/2.0, 0); Component base_drill02 = base_drill.translatedCopy( -pcb->get_drill_x()/2.0, pcb->get_drill_y()/2.0, 0); Component base_drill03 = base_drill.translatedCopy( pcb->get_drill_x()/2.0, -pcb->get_drill_y()/2.0, 0); Component base_drill04 = base_drill.translatedCopy( -pcb->get_drill_x()/2.0, -pcb->get_drill_y()/2.0, 0); //-- Aperture on the lower base for wiring, etc //------------------------------------------------------------------------------------------------------- //-- Wiring_hole_x_thickness: 'y' component of the hole under the servo body along the x axis double wiring_hole_x_thickness = (-central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() - lower_front_ear_thickness) + ( pcb->get_drill_y()/2.0 - pcb->get_drill_diam()/2.0 - lower_screw_safe); //-- Wiring_hole_y_thickness: 'y' component of the hole under the servo body along the y axis double wiring_hole_y_thickness = (-central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() - lower_front_ear_thickness) + ( central_part/2.0 - lower_back_ear_thickness - ear_clearance_tol - upper_back_ear_thickness); //-- Wiring_hole_leg_thickness: 'y' component of the hole under the servo leg double wiring_hole_leg_thickness = ( side/2.0 - lower_border_safe ) - ( -central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() + servo->get_leg_z() ); //-- Hole under the servo body, part along X axis Component wiring_hole = RoundedTablet( side - 2*lower_border_safe, wiring_hole_x_thickness, lower_base_thickness+0.1, lower_border_safe / 2.5) .translate(0, -wiring_hole_x_thickness/2.0 -central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() - lower_front_ear_thickness, 0) //-- Hole under the servo body, part along y axis + RoundedTablet( pcb->get_drill_x() - pcb->get_drill_diam() - 2*lower_screw_safe, wiring_hole_y_thickness, lower_base_thickness+0.1, lower_border_safe/2.5 ) .translate(0, -wiring_hole_y_thickness/2.0 -central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() - lower_front_ear_thickness, 0) //-- Hole under the servo leg + RoundedTablet( pcb->get_drill_x() - pcb->get_drill_diam() - lower_screw_safe*2, wiring_hole_leg_thickness, lower_base_thickness + 0.1, lower_border_safe/3.0) .translate(0, wiring_hole_leg_thickness/2.0 + ( -central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() + servo->get_leg_z() ), 0); //-- Make base: //----------------------------------------------------------------------------------------------------------- base = base - base_drill01 - base_drill02 - base_drill03 - base_drill04 - wiring_hole; base.translate(0, 0, lower_base_thickness/2.0); //-- Make ears: //--========================================================================================================= //-- Front ear: //----------------------------------------------------------------------------------------------------------- Component front_ear = make_ear( side, servo->get_axis_y()+servo->get_leg_y(), lower_front_ear_thickness, lower_ear_shift, lower_ear_radius); front_ear.rotate( 90, 0, 0).translate( 0, 0, lower_base_thickness); front_ear.translate(0, -lower_front_ear_thickness/2.0 , 0); front_ear.translate(0, -central_part/2.0 + lower_back_ear_thickness + ear_clearance_tol + upper_back_ear_thickness + servo->get_leg_h() , 0); //-- Back ear: //----------------------------------------------------------------------------------------------------------- Component back_ear = make_ear( side, servo->get_axis_y() + servo->get_leg_y(),lower_back_ear_thickness, lower_ear_shift, lower_ear_radius); back_ear.rotate(90, 0, 0).translate( 0, 0, lower_base_thickness); back_ear.translate(0, -central_part/2.0 + upper_back_ear_thickness + ear_clearance_tol + lower_back_ear_thickness/2.0 , 0); //-- Make front ear drills: //------------------------------------------------------------------------------------------------------------ Component ear_drills[servo->getLinks().size()-2]; for (int i = 1; i < servo->getLinks().size()-1 ; i++) ear_drills[i-1] = Cylinder( servo->get_hole_r(), servo->get_leg_z() + lower_front_ear_thickness + 0.2 , 100, false) .moveToLink(*servo, i).relTranslate(0, 0, -servo->get_leg_z()/2.0 - lower_front_ear_thickness - 0.1); if ( servo->getLinks().size()-2 == 4) { front_ear = front_ear - (ear_drills[0] & ear_drills[1]) - ear_drills[2] - ear_drills[3]; } else { for (int i = 0; i < servo->getLinks().size()-2; i++) front_ear = front_ear - ear_drills[i]; } //-- Result: //--=========================================================================================================== lower = front_ear + back_ear + base - *servo - fake_axis_with_tol; if (show_servo) lower = lower + *servo; //-- Add links to the holes of the base: //------------------------------------------------------------------------------------------------------------- lower.addLink( RefSys( pcb->get_drill_x()/2.0, pcb->get_drill_y()/2.0, 0)); lower.addLink( RefSys( -pcb->get_drill_x()/2.0, pcb->get_drill_y()/2.0, 0)); lower.addLink( RefSys( pcb->get_drill_x()/2.0, -pcb->get_drill_y()/2.0, 0)); lower.addLink( RefSys( -pcb->get_drill_x()/2.0, -pcb->get_drill_y()/2.0, 0)); return lower; } |