// 3d printer specific screw_gap = 0.3; nut_gap = -0.1; dispenser_top_dia = 200; dispenser_top_height = 108; dispenser_mid_dia = 35.5; dispenser_nozzle_top_height = 45; dispenser_nozzle_top_dia = 35.3; dispenser_nozzle_mid_height = 20; dispenser_nozzle_mid_dia = 40; dispenser_nozzle_cap_height = 17; dispenser_nozzle_cap_dia_1 = 5.8; dispenser_nozzle_cap_dia_2 = dispenser_nozzle_mid_dia; dispenser_nozzle_end_length = 10; dispenser_nozzle_end_dia_1 = 3.4; dispenser_nozzle_end_dia_2 = dispenser_nozzle_cap_dia_1; dispenser_wall = 3; dispenser_handle_dia = 21; dispenser_handle_length = 100; dispenser_handle_angle = 38; dispenser_arm_dia = 7.0; dispenser_arm_len = 250; dispenser_arm_height = 75; dispenser_arm_tab_off = 21; dispenser_arm_tab_hole_off = 14; dispenser_arm_handle_overlap = 20; dispenser_arm_handle_width = 20; dispenser_arm_handle_len = 30; dispenser_arm_handle_height = 2; dispenser_arm_handle_y = 10; dispenser_arm_handle_z = 15; rail_wheel_height = 11; rail_wheel_center_height = 5; rail_wheel_outer = 24; rail_wheel_mid = 18; rail_wheel_inner = 5; nema17_len = 40; nema17_size = 42.3; nema17_hole_off = 31.0 / 2; nema17_hole_size = 3.0; nema17_shaft_size = 5.0; nema17_shaft_length = 24.0; nema17_center_size = 22.0; nema17_center_height = 2.0; motor_mount_height = 8; motor_mount_length = 35; motor_mount_l = nema17_size + motor_mount_length; motor_mount_hole_size_nominal = 5; motor_mount_hole_size = motor_mount_hole_size_nominal + screw_gap; motor_mount_hole_off = motor_mount_length - 15; belt_width = 6; belt_pitch = 2; belt_thickness = 1.35; /********************************** ************ Extruder ************ **********************************/ function dia_from_teeth(teeth) = teeth * belt_pitch / 3.14159; pulley_teeth_height = belt_width + 4; pulley_mount_height = 5; pulley_mount_dia = 8; pulley_height = pulley_teeth_height + pulley_mount_height; large_teeth = 60; small_teeth = 20; large_dia = dia_from_teeth(large_teeth); small_dia = dia_from_teeth(small_teeth); perimeter_large_wheel = large_dia * 3.14159; perimeter_small_wheel = small_dia * 3.14159; axis_diameter = 5.0; axis_hole_diameter = axis_diameter + screw_gap; // MR115 2RS bearing_inner = axis_diameter; bearing_outer = 11.0 + 0.1; bearing_height = 4.0; belt_length = 200; belt_length_wheels = perimeter_large_wheel / 2 + perimeter_small_wheel / 2; belt_length_center = belt_length - belt_length_wheels; gears_dist = belt_length_center / 2; gear_stages = 1; gear_stage_height = pulley_height + 2; gear_stages_dist = (bearing_height + 1) * 2; gearbox_wall = gear_stages_dist; //bearing_height + 1; gearbox_gap = 2; gearbox_height = gears_dist + large_dia + (gearbox_wall + gearbox_gap) * 2; gearbox_width = large_dia + (gearbox_wall + gearbox_gap) * 2; gearbox_depth = 2 * gearbox_wall + gear_stages * gear_stage_height + (gear_stages - 1) * gear_stages_dist; extruder_travel = 60; piston_dia = 30; piston_height = 30; piston_gap = 0.1; piston_wall = 3; piston_radius = 3; piston_bottom_gap = piston_wall + 10; cylinder_dia = piston_dia + 2 * (piston_wall + piston_gap); cylinder_height = piston_height + extruder_travel; actuator_length = 100; extruder_lever_width = 10; extruder_lever_depth = 5; extruder_lever_holes = 4.2; // TODO extruder_lever_hole_dist = extruder_travel / 2; extruder_lever_length = extruder_lever_hole_dist + 10; extruder_wall_screw = 3.0; extruder_wall_hole_screw = extruder_wall_screw + screw_gap; extruder_wall_hole_nut = extruder_wall_screw + nut_gap; extruder_wall_hole_depth = 8.0; additional_piston_offset = 8; /*********************************** ************** Table ************** ***********************************/ // size of woking area plate_x = 250; plate_y = 350; plate_z = 5; plate_mount_screws_nominal = 5.0; plate_mount_screws_distance_x = 60; plate_mount_screws_distance_y = 80; plate_mount_screw_hole = plate_mount_screws_nominal + screw_gap; belt_slot_width = belt_width + 4; belt_slot_depth = belt_thickness + 2; belt_mount_width = belt_slot_width + 2; belt_mount_depth = belt_slot_depth + 4; belt_mount_full_width = belt_mount_width * 3; y_carriage_add_material_around_holes = 10; y_carriage_h = 10; y_carriage_rail_dist = 6.5; y_carriage_post_dia = 2 * 13 / sqrt(3); y_carriage_post_screw = 5.0; y_carriage_post_hole_off = 2; y_carriage_post_center = 1; y_carriage_post_screw_hole = y_carriage_post_screw + nut_gap; y_carriage_post_len = y_carriage_rail_dist - rail_wheel_height / 2 + 10; y_carriage_wheel_off_x = 20.4; y_carriage_wheel_off_y = 28; y_carriage_pulley_off = y_carriage_rail_dist - rail_wheel_height / 2 + 10; y_carriage_x = plate_mount_screws_distance_x + 2 * y_carriage_add_material_around_holes; y_carriage_y = plate_mount_screws_distance_y + 2 * y_carriage_add_material_around_holes; y_carriage_wheel_x_dist = y_carriage_x - 2 * y_carriage_wheel_off_x; y_carriage_wheel_y_dist = y_carriage_y - 2 * y_carriage_wheel_off_y; x_carriage_holder_w = y_carriage_x; x_carriage_holder_l = (y_carriage_y - 20) / 2; x_carriage_holder_h = 4; x_carriage_holder_rail_hole_dist = x_carriage_holder_w - 20; x_carriage_holder_hole_off = x_carriage_holder_h + 10; ideal_belt_pulley_dia = 20 - belt_thickness * 2 + y_carriage_rail_dist + belt_thickness / 4; belt_pulley_off = y_carriage_rail_dist / 2 - belt_thickness / 4; teethcount = round((ideal_belt_pulley_dia + belt_thickness) * 3.14159 / belt_pitch); echo("belt pulley teeth count", teethcount); real_belt_pulley_dia = teethcount * belt_pitch / 3.14159; belt_pulley_width = belt_width + 4; belt_pulley_tooth_width = belt_width + 2; belt_pulley_rim = 1; belt_pulley_axis_hole = nema17_shaft_size + screw_gap; belt_pulley_fix_dia = 3.0 + nut_gap; belt_tensioner_screw = 3.0; belt_tensioner_screw_hole = belt_tensioner_screw + screw_gap; belt_tensioner_wall = 5; belt_tensioner_mount_depth = 20; belt_tensioner_travel = 15; belt_tensioner_moving_height = 10; belt_tensioner_moving_len = real_belt_pulley_dia / 2 + 20; belt_tensioner_moving_overlap = 10; belt_tensioner_moving_gap = 0.3; belt_tensioner_diff_len = real_belt_pulley_dia / 2 + belt_tensioner_moving_len - belt_tensioner_moving_overlap + belt_tensioner_travel + 5; belt_tensioner_diff_width = belt_pulley_width + 2 * belt_tensioner_moving_gap + 0.5; belt_tensioner_diff_height = belt_tensioner_moving_height + 0.5; y_axis_travel_len = plate_y + 15; y_axis_rail_len = y_axis_travel_len + y_carriage_y + motor_mount_length + belt_tensioner_mount_depth; x_axis_travel_len = plate_x + 15; x_axis_rail_len = x_axis_travel_len + y_carriage_y + motor_mount_length + belt_tensioner_mount_depth; // TODO! point_that_reaches_everywhere_x = -7.5; point_that_reaches_everywhere_y = -17.5; use_anim = true; x_axis_position = 1.0; y_axis_position = 0.5; anim_pos_x = use_anim ? sin($t * 360) * 0.5 + 0.5 : x_axis_position; anim_pos_y = use_anim ? sin($t * 360 + 90) * 0.5 + 0.5 : y_axis_position; echo("animation position x", anim_pos_x); echo("animation position y", anim_pos_y); x_axis_animation_position = anim_pos_x * x_axis_travel_len; y_axis_animation_position = anim_pos_y * y_axis_travel_len; extruder_axis_position = 1.0; anim_pos_extruder = use_anim ? sin($t * 360) * 0.5 + 0.5 : extruder_axis_position; extruder_axis_anim_position = anim_pos_extruder * extruder_travel; draw_pulleys = false; left_support_len = 200; left_support_off = 50; right_support_len = 200; right_support_off = 50; echo("distance between bottom support rails", x_axis_rail_len - left_support_off - right_support_off - 40, -left_support_off, -right_support_off);