|
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;
}
|
1.7.4