use use use use //module arm(holes, width, thinkness, bore){ arm1 = 70; arm2 = 55; x = 55; //[15:85] y = 70; //[35:85] length = sqrt(pow(x,2) + pow(y,2)); arm1_sq = pow(arm1,2); arm2_sq = pow(arm2,2); length_sq = pow(length,2); b = acos((arm1_sq + length_sq - arm2_sq)/(2 * arm1 * length)); c = acos((arm1_sq - length_sq + arm2_sq)/(2 * arm1 * arm2)); angle1 = b + atan2(y,x) - 90; angle2 = angle1 - 90 + c; stepper_spaceing = 45; stepper_offset = 55; arm_thickness = 3; arm_width = 10; arm_offset = 15; %translate([stepper_offset,0,0]) { // stepper on joint C rotate([0,90,0]) stepper_103H5205(); // stepper on joint A translate([0,stepper_spaceing,0]) rotate([0,90,0]) stepper_103H5205(); translate([arm_offset,0,0]){ translate([0,stepper_spaceing,0]) rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25],arm_width,arm_thickness,5); //arm1 rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25,arm1],arm_width,arm_thickness,5); //arm2 translate([3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5); translate([-3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5); //arm3 rotate([angle2,0,0]){ translate([3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5); translate([-3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5); translate([0,-25,0]) rotate([angle1-angle2,0,0]) { // arm4 rotate([0,-90,0]) arm([0,arm1],arm_width,arm_thickness,5); translate([0,0,arm1]) rotate([angle2-angle1,0,0]) { translate([3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5); translate([-3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5); translate([-stepper_offset-arm_offset,arm2+25]) rotate([0,90,0]) marker(0); } } } } } // electronics translate([20,80,-10]) rotate([-0,-90,0]){ color("olive") translate([-12,-2,5]) cube([40,61,1]); stepper_controller(); translate([0,25.4,0]) stepper_controller(); } //carriage translate([stepper_offset,0,0]) rotate([0,90,0]) { stepper_103H5205_mount(); translate([0,stepper_spaceing,0]) stepper_103H5205_mount(); }