}
}
+module x_end_motor_pulley () {
+ // todo: y alignment uses magic expression "x_base_outside() + 44/2 + motor_y_offset" copies from motor mount translate
+ // todo: x alignment uses magic expression "(x_box_width-10)/2"
+ // to move past back wall of x-end, will need to be
+ // adjusted if slot width is made to dynamically adjust or
+ // is changed in size
+ translate ([x_base_back() + motor_pulley[1]/2 + (x_box_width-10)/2, x_base_outside() + 44/2 + motor_y_offset, x_motor_shaft_z ()]) {
+ rotate ([0, 90, 0]) {
+ difference () {
+ cylinder (d=motor_pulley[0], h=motor_pulley[1], center=true);
+ translate ([0, 0, -0.01]) cylinder (d=motor_pulley[2], h=motor_pulley[1]+0.03, center=true);
+ }
+ }
+ }
+}
+
// Final part
module x_end_motor(){
difference(){
}
// strain relief (zip tie point) below the motor
x_end_motor_sr();
+ %x_end_motor_pulley();
}
//rotate([0,0,180])