From 0b2199ec4998ea7e44cb0905d0e6814302c8dc1b Mon Sep 17 00:00:00 2001 From: lhye200 Date: Fri, 1 May 2026 02:01:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E3=80=81=E6=B7=BB=E5=8A=A0=E4=BA=86=E8=B4=A6?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot --- .gitignore | 3 +- all_keys.txt | 432 ++++++++++++++++++ app.log | 11 + app/assets/i18n/de.json | 3 +- app/assets/i18n/en.json | 3 +- app/assets/i18n/zh-cn.json | 3 +- app/routes/auth_routes.py | 80 +++- app/templates/auth/login.html | 16 +- app/templates/slice/plater.html | 2 +- fix_ini_files.py | 54 +++ llm_semantic_fix.py | 93 ++++ llm_semantic_fix2.py | 246 ++++++++++ ...ity Ender-3 V3 SE_buildplate_model-aio.stl | Bin 316484 -> 0 bytes .../prusa_slicer/materials/CR-PETG.ini | 112 ++--- .../prusa_slicer/materials/CR-PLA.ini | 116 ++--- .../prusa_slicer/materials/Generic_PETG.ini | 116 ++--- .../prusa_slicer/materials/Generic_TPU.ini | 116 ++--- .../prusa_slicer/materials/Hyper_L-W_PLA.ini | 118 ++--- .../materials/Hyper_Marble_PLA.ini | 120 ++--- .../prusa_slicer/materials/Hyper_PETG.ini | 116 ++--- .../prusa_slicer/materials/Hyper_PLA.ini | 116 ++--- .../materials/Hyper_Stardust_PLA.ini | 120 ++--- .../materials/Soleyin_Ultra_PLA.ini | 120 ++--- .../prusa_slicer/printers/Ender3_V3_SE.ini | 8 +- .../quality/0.08mm_Extra_Fine.ini | 316 ++++++------- .../prusa_slicer/quality/0.12mm_Fine.ini | 284 ++++++------ .../prusa_slicer/quality/0.16mm_Optimal.ini | 284 ++++++------ .../prusa_slicer/quality/0.20mm_Standard.ini | 330 ++++++------- .../prusa_slicer/supports/grid_support.ini | 28 +- .../prusa_slicer/supports/no_support.ini | 80 ++-- .../prusa_slicer/supports/snug_support.ini | 28 +- .../prusa_slicer/supports/tree_support.ini | 30 +- valid_keys.txt | 417 +++++++++++++++++ 33 files changed, 2631 insertions(+), 1290 deletions(-) create mode 100644 all_keys.txt create mode 100644 app.log create mode 100644 fix_ini_files.py create mode 100644 llm_semantic_fix.py create mode 100644 llm_semantic_fix2.py delete mode 100644 print_config/Creality Ender-3 V3 SE_buildplate_model-aio.stl create mode 100644 valid_keys.txt diff --git a/.gitignore b/.gitignore index b838eea..f1a167c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ tmp/* venv instance huey_queue.* -prusaslicer/* \ No newline at end of file +prusaslicer/* +frpc/* \ No newline at end of file diff --git a/all_keys.txt b/all_keys.txt new file mode 100644 index 0000000..57830ba --- /dev/null +++ b/all_keys.txt @@ -0,0 +1,432 @@ +acceleration_limit_mess +acceleration_limit_mess_enable +accel_to_decel_enable +accel_to_decel_factor +activate_air_filtration +activate_chamber_temp_control +adaptive_layer_height +additional_cooling_fan_speed +after_layer_gcode +ai_infill +alternate_extra_wall +bed_shape +bed_type +before_layer_gcode +bottom_shell_layers +bottom_shell_thickness +bottom_solid_infill_flow_ratio +bottom_surface_pattern +bridge_acceleration +bridge_angle +bridge_density +bridge_flow +bridge_no_support +bridge_speed +brim_ears_detection_length +brim_ears_max_angle +brim_object_gap +brim_type +brim_width +chamber_temperature +close_fan_the_first_x_layers +compatible_printers_condition +complete_print_exhaust_fan_speed +cool_cds_fan_start_at_height +cooling_tube_length +cooling_tube_retraction +cool_plate_temp +cool_plate_temp_initial_layer +cool_special_cds_fan_speed +counterbore_hole_bridging +customized_plate_temp +customized_plate_temp_initial_layer +default_acceleration +default_filament_colour +default_jerk +deretract_speed +detect_narrow_internal_solid_infill +detect_overhang_wall +detect_thin_wall +dont_filter_internal_bridges +draft_shield +during_print_exhaust_fan_speed +elefant_foot_compensation +elefant_foot_compensation_layers +enable_arc_fitting +enable_overhang_bridge_fan +enable_overhang_speed +enable_pressure_advance +enable_prime_tower +enable_special_area_additional_cooling_fan +end_gcode +enforce_support_layers +eng_plate_temp +eng_plate_temp_initial_layer +ensure_vertical_shell_thickness +epoxy_resin_plate_temp +epoxy_resin_plate_temp_initial_layer +exclude_object +extra_loading_move +extra_perimeters_on_overhangs +extruder_clearance_height_to_lid +extruder_clearance_height_to_rod +extruder_clearance_radius +extruder_colour +extruder_offset +family +fan_cooling_layer_time +fan_max_speed +fan_min_speed +filament_cooling_final_speed +filament_cooling_initial_speed +filament_cooling_moves +filament_cost +filament_density +filament_deretraction_speed +filament_diameter +filament_end_gcode +filament_flow_ratio +filament_is_support +filament_loading_speed +filament_loading_speed_start +filament_load_time +filament_max_volumetric_speed +filament_minimal_purge_on_wipe_tower +filament_multitool_ramming +filament_multitool_ramming_flow +filament_multitool_ramming_volume +filament_notes +filament_ramming_parameters +filament_retract_before_wipe +filament_retraction_length +filament_retraction_minimum_travel +filament_retraction_speed +filament_retract_lift_above +filament_retract_lift_below +filament_retract_lift_enforce +filament_retract_restart_extra +filament_retract_when_changing_layer +filament_settings_id +filament_shrink +filament_shrinkage_compensation_z +filament_soluble +filament_start_gcode +filament_toolchange_delay +filament_type +filament_unloading_speed +filament_unloading_speed_start +filament_unload_time +filament_vendor +filament_wipe +filament_wipe_distance +filament_z_hop +filament_z_hop_types +filter_out_gap_fill +first_layer_bed_temperature +flush_into_infill +flush_into_objects +flush_into_support +full_fan_speed_layer +fuzzy_skin +fuzzy_skin_first_layer +fuzzy_skin_point_distance +fuzzy_skin_thickness +gap_fill_target +gap_infill_speed +gcode_add_line_number +gcode_comments +gcode_flavor +gcode_label_objects +high_current_on_filament_swap +hole_to_polyhole +hole_to_polyhole_threshold +hole_to_polyhole_twisted +hot_plate_temp +hot_plate_temp_initial_layer +idle_temperature +independent_support_layer_height +infill_anchor +infill_anchor_max +infill_combination +infill_direction +infill_jerk +infill_wall_overlap +initial_layer_acceleration +initial_layer_infill_speed +initial_layer_jerk +initial_layer_line_width +initial_layer_min_bead_width +initial_layer_print_height +initial_layer_speed +initial_layer_travel_speed +inner_wall_acceleration +inner_wall_jerk +inner_wall_line_width +inner_wall_speed +interface_shells +internal_bridge_flow +internal_bridge_speed +internal_solid_infill_acceleration +internal_solid_infill_line_width +internal_solid_infill_pattern +internal_solid_infill_speed +ironing_angle +ironing_flow +ironing_pattern +ironing_spacing +ironing_speed +ironing_support_layer +ironing_type +is_infill_first +layer_height +line_width +machine_limits_usage +machine_max_acceleration_e +machine_max_acceleration_extruding +machine_max_acceleration_retracting +machine_max_acceleration_travel +machine_max_acceleration_x +machine_max_acceleration_y +machine_max_acceleration_z +machine_max_jerk_e +machine_max_jerk_x +machine_max_jerk_y +machine_max_jerk_z +machine_max_speed_e +machine_max_speed_x +machine_max_speed_y +machine_max_speed_z +machine_min_extruding_rate +machine_min_travel_rate +make_overhang_printable +make_overhang_printable_angle +make_overhang_printable_hole_size +material_flow_dependent_temperature +material_flow_temp_graph +material_type +max_bridge_length +max_layer_height +max_print_height +max_travel_detour_distance +max_volumetric_extrusion_rate_slope +max_volumetric_extrusion_rate_slope_segment_length +min_bead_width +min_feature_size +minimum_sparse_infill_area +minimum_support_area +min_layer_height +min_length_factor +min_width_top_surface +mmu_segmented_region_interlocking_depth +mmu_segmented_region_max_width +nozzle_diameter +nozzle_temperature +nozzle_temperature_initial_layer +nozzle_temperature_range_high +nozzle_temperature_range_low +only_one_wall_first_layer +only_one_wall_top +ooze_prevention +outer_wall_acceleration +outer_wall_jerk +outer_wall_line_width +outer_wall_speed +overhang_1_4_speed +overhang_2_4_speed +overhang_3_4_speed +overhang_4_4_speed +overhang_fan_speed +overhang_fan_threshold +overhang_reverse +overhang_reverse_internal_only +overhang_reverse_threshold +overhang_speed_classic +parking_pos_retraction +pause_print_gcode +precise_outer_wall +pressure_advance +prime_tower_brim_width +prime_tower_enhance_type +prime_tower_width +prime_volume +printer_model +printer_technology +printer_variant +print_flow_ratio +print_order +print_sequence +print_settings_id +raft_contact_distance +raft_expansion +raft_first_layer_density +raft_first_layer_expansion +raft_layers +reduce_crossing_wall +reduce_fan_stop_start_freq +reduce_infill_retraction +required_nozzle_HRC +resolution +retract_before_travel +retract_before_wipe +retract_layer_change +retract_length +retract_length_toolchange +retract_lift_above +retract_lift_below +retract_restart_extra +retract_restart_extra_toolchange +retract_speed +role_based_wipe_speed +scarf_angle_threshold +scarf_joint_flow_ratio +scarf_joint_speed +scarf_overhang_threshold +seam_gap +seam_position +seam_slope_conditional +seam_slope_entire_loop +seam_slope_inner_walls +seam_slope_min_length +seam_slope_start_height +seam_slope_steps +seam_slope_type +show_name +silent_mode +single_extruder_multi_material +single_extruder_multi_material_priming +skirt_distance +skirt_height +skirt_loops +skirt_speed +slice_closing_radius +slicing_mode +slowdown_for_curled_perimeters +slow_down_for_layer_cooling +slow_down_layers +slow_down_layer_time +slow_down_min_speed +small_area_infill_flow_compensation +small_area_infill_flow_compensation_model +small_perimeter_speed +small_perimeter_threshold +solid_infill_filament +sparse_infill_acceleration +sparse_infill_density +sparse_infill_filament +sparse_infill_line_width +sparse_infill_pattern +sparse_infill_speed +speed_limit_to_height +speed_limit_to_height_enable +spiral_mode +spiral_mode_max_xy_smoothing +spiral_mode_smooth +staggered_inner_seams +standby_temperature_delta +start_filament_gcode +start_gcode +support_angle +support_base_pattern +support_base_pattern_spacing +support_bottom_interface_spacing +support_bottom_z_distance +support_critical_regions_only +support_expansion +support_interface_bottom_layers +support_interface_filament +support_interface_loop_pattern +support_interface_not_for_body +support_interface_pattern +support_interface_spacing +support_interface_speed +support_interface_top_layers +support_line_width +support_material +support_material_angle +support_material_auto +support_material_bottom_interface_layers +support_material_extrusion_width +support_material_interface_extruder +support_material_interface_fan_speed +support_material_pattern +support_material_spacing +support_material_speed +support_material_style +support_material_threshold +support_material_xy_spacing +support_object_xy_distance +support_on_build_plate_only +support_remove_small_overhang +support_speed +support_threshold_angle +support_top_z_distance +support_tree_angle +support_tree_angle_slow +support_tree_branch_diameter +support_tree_branch_diameter_angle +support_tree_branch_diameter_double_wall +support_tree_branch_distance +support_tree_tip_diameter +support_tree_top_rate +support_type +support_xy_overrides_z +temperature_vitrification +textured_plate_temp +textured_plate_temp_initial_layer +thick_bridges +thick_internal_bridges +timelapse_type +top_shell_layers +top_shell_thickness +top_solid_infill_flow_ratio +top_surface_acceleration +top_surface_jerk +top_surface_line_width +top_surface_pattern +top_surface_speed +travel_acceleration +travel_jerk +travel_speed +travel_speed_z +tree_support_adaptive_layer_height +tree_support_angle_slow +tree_support_auto_brim +tree_support_branch_angle +tree_support_branch_angle_organic +tree_support_branch_diameter +tree_support_branch_diameter_angle +tree_support_branch_diameter_double_wall +tree_support_branch_diameter_organic +tree_support_branch_distance +tree_support_branch_distance_organic +tree_support_brim_width +tree_support_tip_diameter +tree_support_top_rate +tree_support_wall_count +use_firmware_retraction +use_relative_e_distances +wall_direction +wall_distribution_count +wall_filament +wall_generator +wall_infill_order +wall_loops +wall_sequence +wall_transition_angle +wall_transition_filter_deviation +wall_transition_length +wipe +wipe_before_external_loop +wipe_on_loops +wipe_speed +wipe_tower_bridging +wipe_tower_cone_angle +wipe_tower_extra_spacing +wipe_tower_no_sparse_layers +wipe_tower_rotation_angle +wiping_volumes_extruders +xy_contour_compensation +xy_hole_compensation +z_hop +z_hop_types +z_offset diff --git a/app.log b/app.log new file mode 100644 index 0000000..5d40469 --- /dev/null +++ b/app.log @@ -0,0 +1,11 @@ +Admin already exists. + * Serving Flask app 'app' + * Debug mode: on +WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on all addresses (0.0.0.0) + * Running on http://127.0.0.1:5001 + * Running on http://192.168.1.115:5001 +Press CTRL+C to quit + * Restarting with stat + * Debugger is active! + * Debugger PIN: 837-836-472 diff --git a/app/assets/i18n/de.json b/app/assets/i18n/de.json index d3d971a..6ddd61d 100644 --- a/app/assets/i18n/de.json +++ b/app/assets/i18n/de.json @@ -236,5 +236,6 @@ "Internal infill": "Interne Füllung", "Bridge infill": "Brückefüllung", "Top solid infill": "Oberste solide Füllung", - "Others": "Andere" + "Others": "Andere", + "Are you sure you want to clear the board?": "Sind Sie sicher, dass Sie das Brett leeren möchten?" } \ No newline at end of file diff --git a/app/assets/i18n/en.json b/app/assets/i18n/en.json index 031970a..54eba44 100644 --- a/app/assets/i18n/en.json +++ b/app/assets/i18n/en.json @@ -236,5 +236,6 @@ "Internal infill": "Internal infill", "Bridge infill": "Bridge infill", "Top solid infill": "Top solid infill", - "Others": "Others" + "Others": "Others", + "Are you sure you want to clear the board?": "Are you sure you want to clear the board?" } \ No newline at end of file diff --git a/app/assets/i18n/zh-cn.json b/app/assets/i18n/zh-cn.json index 25c9e25..2fa8fdc 100644 --- a/app/assets/i18n/zh-cn.json +++ b/app/assets/i18n/zh-cn.json @@ -236,5 +236,6 @@ "Internal infill": "内部填充", "Bridge infill": "桥接填充", "Top solid infill": "顶部实体填充", - "Others": "其他" + "Others": "其他", + "Are you sure you want to clear the board?": "您确定要清空构建板吗?" } \ No newline at end of file diff --git a/app/routes/auth_routes.py b/app/routes/auth_routes.py index 7974ff5..7d413a5 100644 --- a/app/routes/auth_routes.py +++ b/app/routes/auth_routes.py @@ -28,9 +28,85 @@ def login(): username = request.form.get('username') password = request.form.get('password') user = User.query.filter_by(username=username, is_guest=False).first() + + remember = bool(request.form.get('remember')) + merge_data = bool(request.form.get('merge_data')) + if user and check_password_hash(user.password_hash, password): - login_user(user) - return redirect(url_for('main.index')) + login_user(user, remember=remember) + + if merge_data: + guest_id = request.cookies.get('guest_id') + if guest_id: + guest_user = User.query.filter_by(guest_cookie_id=guest_id, is_guest=True).first() + if guest_user: + from app.routes.main_routes import get_quota_info + guest_files = PrintFile.query.filter_by(user_id=guest_user.id).all() + + stl_quota, stl_used = get_quota_info(user, 'stl') + gcode_quota, gcode_used = get_quota_info(user, 'gcode') + + stl_quota_bytes = stl_quota * 1024 * 1024 if stl_quota > 0 else float('inf') + gcode_quota_bytes = gcode_quota * 1024 * 1024 if gcode_quota > 0 else float('inf') + + from app.routes.admin_routes import get_gcode_dir + upload_dir = current_app.config.get('UPLOAD_FOLDER', 'uploads') + gcode_dir = get_gcode_dir() + + for pf in guest_files: + file_size = 0 + file_type = 'stl' + is_external_gcode = pf.original_filename.lower().endswith(('.gcode', '.gco', '.g')) + if is_external_gcode or pf.status == 'sliced': + file_type = 'gcode' + g_filename = pf.filename.rsplit('.', 1)[0] + '.gcode' + path = os.path.join(gcode_dir, g_filename) + if os.path.exists(path): + file_size = os.path.getsize(path) + else: + p2 = os.path.join(upload_dir, g_filename) + if os.path.exists(p2): file_size = os.path.getsize(p2) + else: + path = os.path.join(upload_dir, pf.filename) + if os.path.exists(path): + file_size = os.path.getsize(path) + + # Check quota + can_merge = True + if not user.is_admin: + if file_type == 'stl' and (stl_used + file_size > stl_quota_bytes): + can_merge = False + elif file_type == 'gcode' and (gcode_used + file_size > gcode_quota_bytes): + can_merge = False + + if can_merge: + pf.user_id = user.id + if file_type == 'stl': stl_used += file_size + else: gcode_used += file_size + else: + # delete from disk to prevent orphans + stl_path = os.path.join(upload_dir, pf.filename) + proxy_path = stl_path + '.proxy.stl' + gcode_filename = pf.filename.rsplit('.', 1)[0] + '.gcode' + gp = os.path.join(gcode_dir, gcode_filename) + fp = os.path.join(upload_dir, gcode_filename) + if os.path.exists(stl_path): os.remove(stl_path) + if os.path.exists(proxy_path): os.remove(proxy_path) + if os.path.exists(gp): os.remove(gp) + if os.path.exists(fp): os.remove(fp) + db.session.delete(pf) + + # Save changes to files first so SQLAlchemy doesn't try to nullify related keys + db.session.commit() + + # Delete guest user after merge + db.session.delete(guest_user) + db.session.commit() + + response = make_response(redirect(url_for('main.index'))) + if merge_data: + response.delete_cookie('guest_id') + return response flash('Invalid username or password', 'danger') return render_template('auth/login.html') diff --git a/app/templates/auth/login.html b/app/templates/auth/login.html index 74f956b..861b81d 100644 --- a/app/templates/auth/login.html +++ b/app/templates/auth/login.html @@ -5,19 +5,27 @@
-

Login

+

{{ _('Login') }}

- +
- +
- +
+ + +
+
+ + +
+
diff --git a/app/templates/slice/plater.html b/app/templates/slice/plater.html index b9778e0..1dc9cfd 100644 --- a/app/templates/slice/plater.html +++ b/app/templates/slice/plater.html @@ -131,7 +131,7 @@
- +
diff --git a/fix_ini_files.py b/fix_ini_files.py new file mode 100644 index 0000000..d2dd8d1 --- /dev/null +++ b/fix_ini_files.py @@ -0,0 +1,54 @@ +import os +import glob +import difflib + +# Read valid keys +valid_keys = set() +with open('valid_keys.txt', 'r') as f: + for line in f: + valid_keys.add(line.strip()) + +def process_file(filepath): + with open(filepath, 'r') as f: + lines = f.readlines() + + new_lines = [] + changed = False + + for line in lines: + stripped = line.strip() + # Skip empty lines, metadata sections, or already commented lines with ; + if not stripped or stripped.startswith('[') or stripped.startswith(';'): + new_lines.append(line) + continue + + if '=' in line: + parts = line.split('=', 1) + key = parts[0].strip() + val = parts[1] + + if key in valid_keys: + new_lines.append(line) + else: + matches = difflib.get_close_matches(key, valid_keys, n=1, cutoff=0.8) + if matches: + new_key = matches[0] + new_lines.append(line.replace(key + ' ', new_key + ' ', 1) if key + ' ' in line else line.replace(key + '=', new_key + '=', 1)) + print(f"{filepath}: Reacted {key} to {new_key}") + changed = True + else: + new_lines.append(';;;' + line) + print(f"{filepath}: Commented {key}") + changed = True + else: + new_lines.append(line) + + if changed: + with open(filepath, 'w') as f: + f.writelines(new_lines) + +for root, dirs, files in os.walk('print_config/prusa_slicer'): + for file in files: + if file.endswith('.ini'): + process_file(os.path.join(root, file)) + diff --git a/llm_semantic_fix.py b/llm_semantic_fix.py new file mode 100644 index 0000000..80691e1 --- /dev/null +++ b/llm_semantic_fix.py @@ -0,0 +1,93 @@ +import os + +# 大模型语义映射表 (Creality/Bambu -> PrusaSlicer) +SEMANTIC_MAP = { + "outer_wall_line_width": "external_perimeter_extrusion_width", + "outer_wall_speed": "external_perimeter_speed", + "line_width": "extrusion_width", + "infill_direction": "fill_angle", + "sparse_infill_density": "fill_density", + "sparse_infill_pattern": "fill_pattern", + "initial_layer_line_width": "first_layer_extrusion_width", + "initial_layer_print_height": "first_layer_height", + "initial_layer_speed": "first_layer_speed", + "gap_infill_speed": "gap_fill_speed", + "infill_wall_overlap": "infill_overlap", + "sparse_infill_speed": "infill_speed", + "initial_layer_acceleration": "first_layer_acceleration", + "travel_speed": "travel_speed", + "bottom_shell_layers": "bottom_solid_layers", + "top_shell_layers": "top_solid_layers", + "top_surface_speed": "top_solid_infill_speed", + "layer_height": "layer_height", + "wall_loops": "perimeters", + "inner_wall_speed": "perimeter_speed", + "raft_layers": "raft_layers", + "brim_width": "brim_width", + "print_sequence": "complete_objects", + "elefant_foot_compensation": "elefant_foot_compensation", + "nozzle_temperature": "temperature", + "first_layer_bed_temperature": "first_layer_bed_temperature", + "bed_temperature": "bed_temperature", + "filament_diameter": "filament_diameter", + "support_material": "support_material", + "support_material_style": "support_material_style", + "retract_length": "retract_length", + "retract_speed": "retract_speed", + "z_hop": "retract_lift" +} + +# 从 prusa_new_cli.txt (或 Prusa 官方默认配置) 中允许通过的原生参数白名单 +NATIVE_ALLOWED = { + "bridge_speed", "bridge_flow", "default_acceleration", "brim_object_gap", + "ironing_type", "filament_cost", "filament_density", "filament_type", + "gcode_flavor", "nozzle_diameter", "start_gcode", "end_gcode", + "before_layer_gcode", "printer_model", "z_offset" +} + +def process_file(filepath): + with open(filepath, 'r') as f: + lines = f.readlines() + + new_lines = [] + changed = False + + for line in lines: + stripped = line.strip() + if not stripped or stripped.startswith('[') or stripped.startswith(';'): + new_lines.append(line) + continue + + if '=' in line: + parts = line.split('=', 1) + key = parts[0].strip() + val = parts[1].strip() + + # 处理特殊语义转换值 + if key == "print_sequence" and val == "by layer": + val = "0" + elif key == "print_sequence" and val == "by object": + val = "1" + + if key in SEMANTIC_MAP: + new_key = SEMANTIC_MAP[key] + new_lines.append(f"{new_key} = {val}\n") + changed = True + elif key in NATIVE_ALLOWED: + new_lines.append(f"{key} = {val}\n") + else: + new_lines.append(f";;;{line}") + changed = True + else: + new_lines.append(line) + + if changed: + with open(filepath, 'w') as f: + f.writelines(new_lines) + print(f"Applied semantic map to {filepath}") + +for root, dirs, files in os.walk('print_config/prusa_slicer'): + for file in files: + if file.endswith('.ini'): + process_file(os.path.join(root, file)) + diff --git a/llm_semantic_fix2.py b/llm_semantic_fix2.py new file mode 100644 index 0000000..0c2f0c8 --- /dev/null +++ b/llm_semantic_fix2.py @@ -0,0 +1,246 @@ +import os + +def load_valid_keys(): + valid = set() + if os.path.exists('valid_keys.txt'): + with open('valid_keys.txt', 'r') as f: + for line in f: + if line.strip(): + valid.add(line.strip()) + # 补充一些在 PrusaSlicer ini常见但可能在cli中缺失的原生合法字段 + valid.update([ + "start_gcode", "end_gcode", "before_layer_gcode", "temperature", + "first_layer_temperature", "bed_temperature", "first_layer_bed_temperature", + "printer_model", "family", "z_offset", "printer_technology", + "gcode_flavor", "silent_mode", "printer_variant", "max_print_height", + "nozzle_diameter", "extruder_colour", "extruder_offset", "use_relative_e_distances", + "use_firmware_retraction", "retract_layer_change", "retract_length", + "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", + "deretract_speed", "retract_before_travel", "retract_before_wipe", "wipe", + "machine_limits_usage", "machine_max_acceleration_x", "machine_max_acceleration_y", + "machine_max_acceleration_z", "machine_max_acceleration_e", + "machine_max_speed_x", "machine_max_speed_y", "machine_max_speed_z", + "machine_max_speed_e", "machine_max_jerk_x", "machine_max_jerk_y", + "machine_max_jerk_z", "machine_max_jerk_e", "machine_min_travel_rate", + "default_filament_colour", "filament_type", "filament_diameter", + "filament_density", "filament_cost", "fan_always_on", "cooling", + "support_material", "support_material_auto", "support_material_style" + ]) + return valid + +VALID_KEYS = load_valid_keys() + +# 基于全量 all_keys.txt 逐一梳理的语义映射字典 +SEMANTIC_MAP = { + # 打印层高相关 + "adaptive_layer_height": "variable_layer_height", + "initial_layer_print_height": "first_layer_height", + "layer_height": "layer_height", + "min_layer_height": "min_layer_height", + "max_layer_height": "max_layer_height", + "print_sequence": "complete_objects", + + # 线宽相关 + "line_width": "extrusion_width", + "initial_layer_line_width": "first_layer_extrusion_width", + "outer_wall_line_width": "external_perimeter_extrusion_width", + "inner_wall_line_width": "perimeter_extrusion_width", + "top_surface_line_width": "top_infill_extrusion_width", + "sparse_infill_line_width": "infill_extrusion_width", + "internal_solid_infill_line_width": "solid_infill_extrusion_width", + + # 墙/外壳相关 + "wall_loops": "perimeters", + "top_shell_layers": "top_solid_layers", + "bottom_shell_layers": "bottom_solid_layers", + "top_shell_thickness": "top_solid_min_thickness", + "bottom_shell_thickness": "bottom_solid_min_thickness", + "only_one_wall_top": "top_one_perimeter_type", + "detect_thin_wall": "thin_walls", + # "detect_narrow_internal_solid_infill": "thin_walls", + "reduce_crossing_wall": "avoid_crossing_perimeters", + + # 填充相关 + "sparse_infill_density": "fill_density", + "sparse_infill_pattern": "fill_pattern", + "infill_direction": "fill_angle", + "infill_wall_overlap": "infill_overlap", + "infill_combination": "solid_infill_every_layers", + "bottom_surface_pattern": "bottom_fill_pattern", + "top_surface_pattern": "top_fill_pattern", + "gap_fill_target": "gap_fill_enabled", + + # 速度相关 + "initial_layer_speed": "first_layer_speed", + "initial_layer_infill_speed": "first_layer_infill_speed", + "outer_wall_speed": "external_perimeter_speed", + "inner_wall_speed": "perimeter_speed", + "top_surface_speed": "top_solid_infill_speed", + "sparse_infill_speed": "infill_speed", + "internal_solid_infill_speed": "solid_infill_speed", + "gap_infill_speed": "gap_fill_speed", + "bridge_speed": "bridge_speed", + "travel_speed": "travel_speed", + "travel_speed_z": "travel_speed_z", + "small_perimeter_speed": "small_perimeter_speed", + "support_speed": "support_material_speed", + "support_interface_speed": "support_material_interface_speed", + + # 加速度相关 + "default_acceleration": "default_acceleration", + "initial_layer_acceleration": "first_layer_acceleration", + "outer_wall_acceleration": "external_perimeter_acceleration", + "inner_wall_acceleration": "perimeter_acceleration", + "top_surface_acceleration": "top_solid_infill_acceleration", + "travel_acceleration": "travel_acceleration", + "bridge_acceleration": "bridge_acceleration", + + # 支撑相关 + "support_angle": "support_material_angle", + "support_top_z_distance": "support_material_contact_distance", + "support_bottom_z_distance": "support_material_bottom_contact_distance", + "support_interface_top_layers": "support_material_interface_layers", + "support_interface_bottom_layers": "support_material_bottom_interface_layers", + "support_interface_spacing": "support_material_interface_spacing", + # "support_remove_small_overhang": "support_material_threshold", + "support_interface_pattern": "support_material_interface_pattern", + + # 底座/附着相关 + "brim_width": "brim_width", + "raft_layers": "raft_layers", + "raft_contact_distance": "raft_contact_distance", + "raft_expansion": "raft_expansion", + "raft_first_layer_density": "raft_first_layer_density", + "raft_first_layer_expansion": "raft_first_layer_expansion", + "skirt_distance": "skirt_distance", + "skirt_height": "skirt_height", + "skirt_loops": "skirts", + "elefant_foot_compensation": "elefant_foot_compensation", + + # 回抽与耗材相关 + "z_hop": "retract_lift", + "retract_length": "retract_length", + "retract_speed": "retract_speed", + "retract_before_wipe": "retract_before_wipe", + "retract_before_travel": "retract_before_travel", + "retract_layer_change": "retract_layer_change", + "retract_lift_above": "retract_lift_above", + "retract_lift_below": "retract_lift_below", + "filament_deretraction_speed": "filament_deretract_speed", + "filament_retraction_length": "filament_retract_length", + "filament_retraction_speed": "filament_retract_speed", + "material_type": "filament_type", + "nozzle_temperature": "temperature", + "nozzle_temperature_initial_layer": "first_layer_temperature", + "filament_flow_ratio": "extrusion_multiplier", + + # 其他属性 + "bridge_flow": "bridge_flow_ratio", + # "idle_temperature": "standby_temperature_delta", + "enable_arc_fitting": "arc_fitting", + "slowdown_for_curled_perimeters": "avoid_crossing_curled_overhangs", + "slow_down_layer_time": "slowdown_below_layer_time", + "fan_max_speed": "max_fan_speed", + "fan_min_speed": "min_fan_speed", + "spiral_mode": "spiral_vase", + "prime_tower_brim_width": "wipe_tower_brim_width", + "prime_tower_width": "wipe_tower_width", + + "bridge_no_support": "dont_support_bridges", + "minimum_sparse_infill_area": "solid_infill_below_area", + "xy_hole_compensation": "xy_size_compensation", + "enable_prime_tower": "wipe_tower", + "ironing_flow": "ironing_flowrate", + "overhang_1_4_speed": "overhang_speed_0", + "overhang_2_4_speed": "overhang_speed_1", + "overhang_3_4_speed": "overhang_speed_2", + "overhang_4_4_speed": "overhang_speed_3", + "enable_overhang_speed": "enable_dynamic_overhang_speeds", + "enforce_support_layers": "support_material_enforce_layers", + "fuzzy_skin_point_distance": "fuzzy_skin_point_dist", + # "initial_layer_min_bead_width": "min_bead_width", + # "internal_bridge_flow": "bridge_flow_ratio", + # "internal_bridge_speed": "bridge_speed", + "internal_solid_infill_acceleration": "solid_infill_acceleration", + "internal_solid_infill_pattern": "solid_fill_pattern", + "is_infill_first": "infill_first", + "seam_gap": "seam_gap_distance", + "seam_slope_entire_loop": "scarf_seam_entire_loop", + "seam_slope_inner_walls": "scarf_seam_on_inner_perimeters", + "seam_slope_min_length": "scarf_seam_length", + "seam_slope_start_height": "scarf_seam_start_height", + "sparse_infill_acceleration": "infill_acceleration", + "internal_solid_infill_acceleration": "solid_infill_acceleration", + "wall_generator": "perimeter_generator", + # "wipe_tower_rotation_angle": "wipe_tower_cone_angle" +} + +def process_file(filepath): + with open(filepath, 'r') as f: + lines = f.readlines() + + new_lines = [] + changed = False + + for line in lines: + stripped = line.strip() + # 忽略空行、段名和已经是原生的配置行 + if not stripped or stripped.startswith('[') or stripped.startswith(';') or stripped.startswith('show_name'): + new_lines.append(line) + continue + + if '=' in line: + parts = line.split('=', 1) + raw_key = parts[0].strip() + # 兼容前面可能被加了;;;的key重新解开的情况(以防跑多次) + key = raw_key.lstrip(';') + val = parts[1].strip() + + # 处理一些特有的布尔值或字符串转义差异 + if key == "print_sequence" and val == "by layer": + val = "0" + elif key == "print_sequence" and val == "by object": + val = "1" + if key == "spiral_mode": + val = "1" if val != "0" else "0" + if key == "support_type" and "auto" in val: + val = "1" + + if val == "zig-zag": + val = "zigzag" + + if key == "enable_arc_fitting": + if str(val) == "1": + val = "emit_center" + else: + val = "disabled" + + if key == "only_one_wall_top": + if str(val) == "1": + val = "top" + else: + val = "none" + + if key in SEMANTIC_MAP: + new_key = SEMANTIC_MAP[key] + new_lines.append(f"{new_key} = {val}\n") + changed = True + elif key in VALID_KEYS: + # 已经是PrusaSlicer的原生可用属性 + new_lines.append(f"{key} = {val}\n") + else: + # 在 all_keys.txt 中但找不到任何对应 PrusaSlicer 语义的属性 + new_lines.append(f";;;{raw_key} = {val}\n") + changed = True + else: + new_lines.append(line) + + if changed: + with open(filepath, 'w') as f: + f.writelines(new_lines) + +for root, dirs, files in os.walk('print_config/prusa_slicer'): + for file in files: + if file.endswith('.ini'): + process_file(os.path.join(root, file)) +print("All keys mapped exhaustively.") diff --git a/print_config/Creality Ender-3 V3 SE_buildplate_model-aio.stl b/print_config/Creality Ender-3 V3 SE_buildplate_model-aio.stl deleted file mode 100644 index fbe086ba475096723cf475ce83c1cf6dd83c5a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316484 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

-x|;Gg7{*mtgYsh1T;m=VUy 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 Cebq4l diff --git a/print_config/prusa_slicer/materials/CR-PETG.ini b/print_config/prusa_slicer/materials/CR-PETG.ini index 1d6b7c4..6521e4c 100644 --- a/print_config/prusa_slicer/materials/CR-PETG.ini +++ b/print_config/prusa_slicer/materials/CR-PETG.ini @@ -1,73 +1,73 @@ [metadata] show_name = CR-PETG -material_type = petg +filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 first_layer_bed_temperature = 70 -cool_plate_temp = 70 -eng_plate_temp = 0 -hot_plate_temp = 70 -textured_plate_temp = 70 -cool_plate_temp_initial_layer = 70 -eng_plate_temp_initial_layer = 0 -hot_plate_temp_initial_layer = 70 -textured_plate_temp_initial_layer = 70 -overhang_fan_threshold = 25% -overhang_fan_speed = 90 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 3 -filament_end_gcode = ; filament end gcode \n -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 30 +;;;cool_plate_temp = 70 +;;;eng_plate_temp = 0 +;;;hot_plate_temp = 70 +;;;textured_plate_temp = 70 +;;;cool_plate_temp_initial_layer = 70 +;;;eng_plate_temp_initial_layer = 0 +;;;hot_plate_temp_initial_layer = 70 +;;;textured_plate_temp_initial_layer = 70 +;;;overhang_fan_threshold = 25% +;;;overhang_fan_speed = 90 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 3 +;;;filament_end_gcode = ; filament end gcode \n +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 30 filament_cost = 14 filament_density = 1.23 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 9 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = nil -filament_z_hop = nil -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = nil +;;;filament_z_hop = nil +;;;filament_z_hop_types = nil filament_retract_restart_extra = 0 -filament_retraction_speed = nil -filament_settings_id = +filament_retract_speed = nil +;;;filament_settings_id = filament_soluble = 0 filament_type = PETG -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 230 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 230 full_fan_speed_layer = 0 -fan_max_speed = 40 -fan_min_speed = 30 -slow_down_min_speed = 10 -slow_down_layer_time = 8 -filament_start_gcode = ; filament start gcode\n -nozzle_temperature = 230 -temperature_vitrification = 80 -additional_cooling_fan_speed = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +max_fan_speed = 40 +min_fan_speed = 30 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 8 +;;;filament_start_gcode = ; filament start gcode\n +temperature = 230 +;;;temperature_vitrification = 80 +;;;additional_cooling_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 70 -epoxy_resin_plate_temp_initial_layer = 70 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 70 +;;;epoxy_resin_plate_temp_initial_layer = 70 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -78,16 +78,16 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[3.0,210], [10.0,220], [12.0,230]] -nozzle_temperature_range_high = 270 -nozzle_temperature_range_low = 220 -pressure_advance = 0.08 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[3.0,210], [10.0,220], [12.0,230]] +;;;nozzle_temperature_range_high = 270 +;;;nozzle_temperature_range_low = 220 +;;;pressure_advance = 0.08 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/CR-PLA.ini b/print_config/prusa_slicer/materials/CR-PLA.ini index ed4651a..60346c4 100644 --- a/print_config/prusa_slicer/materials/CR-PLA.ini +++ b/print_config/prusa_slicer/materials/CR-PLA.ini @@ -1,78 +1,78 @@ [metadata] show_name = CR-PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 50 -textured_plate_temp = 50 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 50 -textured_plate_temp_initial_layer = 50 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 50 +;;;textured_plate_temp = 50 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 50 +;;;textured_plate_temp_initial_layer = 50 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 25 filament_density = 1.25 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 12 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 1 -filament_z_hop = 0.2 -filament_z_hop_types = Slope Lift +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 1 +;;;filament_z_hop = 0.2 +;;;filament_z_hop_types = Slope Lift filament_retract_restart_extra = 0 -filament_retraction_speed = 40 -filament_settings_id = +filament_retract_speed = 40 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 190 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 190 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 20 -slow_down_layer_time = 6 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 190 -temperature_vitrification = 100 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 20 +slowdown_below_layer_time = 6 +;;;filament_start_gcode = ;filament start gcode +temperature = 190 +;;;temperature_vitrification = 100 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 190 -nozzle_temperature_range_high = 240 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 190 +;;;nozzle_temperature_range_high = 240 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 0 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 0 -epoxy_resin_plate_temp_initial_layer = 0 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 0 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 0 +;;;epoxy_resin_plate_temp_initial_layer = 0 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -83,14 +83,14 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[2.0,185],[4.0,190],[7.0,200]] -pressure_advance = 0.02 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[2.0,185],[4.0,190],[7.0,200]] +;;;pressure_advance = 0.02 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Generic_PETG.ini b/print_config/prusa_slicer/materials/Generic_PETG.ini index 2c669a3..ff15f55 100644 --- a/print_config/prusa_slicer/materials/Generic_PETG.ini +++ b/print_config/prusa_slicer/materials/Generic_PETG.ini @@ -1,76 +1,76 @@ [metadata] show_name = Generic PETG -material_type = petg +filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 first_layer_bed_temperature = 70 -cool_plate_temp = 60 -eng_plate_temp = 0 -hot_plate_temp = 70 -textured_plate_temp = 70 -cool_plate_temp_initial_layer = 60 -eng_plate_temp_initial_layer = 0 -hot_plate_temp_initial_layer = 70 -textured_plate_temp_initial_layer = 70 -overhang_fan_threshold = 25% -overhang_fan_speed = 90 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 3 -filament_end_gcode = ;filament end gcode \n -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 30 +;;;cool_plate_temp = 60 +;;;eng_plate_temp = 0 +;;;hot_plate_temp = 70 +;;;textured_plate_temp = 70 +;;;cool_plate_temp_initial_layer = 60 +;;;eng_plate_temp_initial_layer = 0 +;;;hot_plate_temp_initial_layer = 70 +;;;textured_plate_temp_initial_layer = 70 +;;;overhang_fan_threshold = 25% +;;;overhang_fan_speed = 90 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 3 +;;;filament_end_gcode = ;filament end gcode \n +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 30 filament_cost = 30 filament_density = 1.27 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 10 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 1.2 -filament_z_hop = 0.2 -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 1.2 +;;;filament_z_hop = 0.2 +;;;filament_z_hop_types = nil filament_retract_restart_extra = 0 -filament_retraction_speed = nil -filament_settings_id = +filament_retract_speed = nil +;;;filament_settings_id = filament_soluble = 0 filament_type = PETG -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 220 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 220 full_fan_speed_layer = 0 -fan_max_speed = 80 -fan_min_speed = 40 -slow_down_min_speed = 10 -slow_down_layer_time = 8 -filament_start_gcode = ;filament start gcode\n -nozzle_temperature = 220 -temperature_vitrification = 80 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 -additional_cooling_fan_speed = 0 +max_fan_speed = 80 +min_fan_speed = 40 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 8 +;;;filament_start_gcode = ;filament start gcode\n +temperature = 220 +;;;temperature_vitrification = 80 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 +;;;additional_cooling_fan_speed = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 0 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 0 -epoxy_resin_plate_temp_initial_layer = 0 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 0 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 0 +;;;epoxy_resin_plate_temp_initial_layer = 0 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -81,16 +81,16 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[3.5,200],[7.0,240]] -nozzle_temperature_range_high = 270 -nozzle_temperature_range_low = 220 -pressure_advance = 0.02 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[3.5,200],[7.0,240]] +;;;nozzle_temperature_range_high = 270 +;;;nozzle_temperature_range_low = 220 +;;;pressure_advance = 0.02 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Generic_TPU.ini b/print_config/prusa_slicer/materials/Generic_TPU.ini index 732fefc..9e67518 100644 --- a/print_config/prusa_slicer/materials/Generic_TPU.ini +++ b/print_config/prusa_slicer/materials/Generic_TPU.ini @@ -1,78 +1,78 @@ [metadata] show_name = Generic TPU -material_type = tpu +filament_type = tpu [settings] idle_temperature = 130 first_layer_bed_temperature = 55 -cool_plate_temp = 30 -eng_plate_temp = 30 -hot_plate_temp = 30 -textured_plate_temp = 30 -cool_plate_temp_initial_layer = 30 -eng_plate_temp_initial_layer = 30 -hot_plate_temp_initial_layer = 30 -textured_plate_temp_initial_layer = 30 -overhang_fan_threshold = 95% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode \n -filament_flow_ratio = 1 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 30 +;;;eng_plate_temp = 30 +;;;hot_plate_temp = 30 +;;;textured_plate_temp = 30 +;;;cool_plate_temp_initial_layer = 30 +;;;eng_plate_temp_initial_layer = 30 +;;;hot_plate_temp_initial_layer = 30 +;;;textured_plate_temp_initial_layer = 30 +;;;overhang_fan_threshold = 95% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode \n +extrusion_multiplier = 1 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 20 filament_density = 1.24 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 3 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 2 -filament_z_hop = 0.2 -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 2 +;;;filament_z_hop = 0.2 +;;;filament_z_hop_types = nil filament_retract_restart_extra = 0 -filament_retraction_speed = nil -filament_settings_id = +filament_retract_speed = nil +;;;filament_settings_id = filament_soluble = 0 filament_type = TPU -filament_vendor = Generic +;;;filament_vendor = Generic filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 200 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 200 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 10 -slow_down_layer_time = 12 -filament_start_gcode = ;filament start gcode\n -nozzle_temperature = 200 -temperature_vitrification = 60 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 12 +;;;filament_start_gcode = ;filament start gcode\n +temperature = 200 +;;;temperature_vitrification = 60 ; filament_adhesiveness_category = 600 -additional_cooling_fan_speed = 0 -nozzle_temperature_range_low = 200 -nozzle_temperature_range_high = 250 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;additional_cooling_fan_speed = 0 +;;;nozzle_temperature_range_low = 200 +;;;nozzle_temperature_range_high = 250 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 0 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 0 -epoxy_resin_plate_temp_initial_layer = 0 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 0 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 0 +;;;epoxy_resin_plate_temp_initial_layer = 0 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -83,14 +83,14 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[3.5,200],[7.0,240]] -pressure_advance = 0.02 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[3.5,200],[7.0,240]] +;;;pressure_advance = 0.02 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini b/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini index a75d53c..0765bd6 100644 --- a/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini @@ -1,80 +1,80 @@ [metadata] show_name = Hyper L-W PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 60 -textured_plate_temp = 60 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 60 -textured_plate_temp_initial_layer = 60 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.75 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 60 +;;;textured_plate_temp = 60 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 60 +;;;textured_plate_temp_initial_layer = 60 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.75 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 48.9 filament_density = 1.21 -filament_deretraction_speed = 15 +filament_deretract_speed = 15 filament_diameter = 1.75 filament_max_volumetric_speed = 4 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = 3 +;;;filament_retraction_minimum_travel = 3 filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 0.6 -filament_z_hop = nil -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 0.6 +;;;filament_z_hop = nil +;;;filament_z_hop_types = nil filament_retract_restart_extra = nil -filament_retraction_speed = 15 -filament_settings_id = +filament_retract_speed = 15 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 220 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 220 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 60 -slow_down_min_speed = 10 -slow_down_layer_time = 10 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 220 -temperature_vitrification = 60 +max_fan_speed = 100 +min_fan_speed = 60 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 10 +;;;filament_start_gcode = ;filament start gcode +temperature = 220 +;;;temperature_vitrification = 60 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 200 -nozzle_temperature_range_high = 270 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 200 +;;;nozzle_temperature_range_high = 270 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0.5 -cool_special_cds_fan_speed = 0 -customized_plate_temp = 60 -customized_plate_temp_initial_layer = 60 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0.5 +;;;cool_special_cds_fan_speed = 0 +;;;customized_plate_temp = 60 +;;;customized_plate_temp_initial_layer = 60 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 60 -epoxy_resin_plate_temp_initial_layer = 60 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 60 +;;;epoxy_resin_plate_temp_initial_layer = 60 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -85,14 +85,14 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = nil filament_retract_lift_below = nil -filament_retract_lift_enforce = nil -filament_shrink = 100% +;;;filament_retract_lift_enforce = nil +;;;filament_shrink = 100% filament_shrinkage_compensation_z = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -pressure_advance = 0.1 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;pressure_advance = 0.1 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini b/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini index 62c8087..12513d4 100644 --- a/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini @@ -1,80 +1,80 @@ [metadata] show_name = Hyper Marble PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 50 -textured_plate_temp = 50 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 50 -textured_plate_temp_initial_layer = 50 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 50 +;;;textured_plate_temp = 50 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 50 +;;;textured_plate_temp_initial_layer = 50 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 23.9 filament_density = 1.25 -filament_deretraction_speed = 15 +filament_deretract_speed = 15 filament_diameter = 1.75 filament_max_volumetric_speed = 18 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = 2 +;;;filament_retraction_minimum_travel = 2 filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 1.5 -filament_z_hop = nil -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 1.5 +;;;filament_z_hop = nil +;;;filament_z_hop_types = nil filament_retract_restart_extra = nil -filament_retraction_speed = 15 -filament_settings_id = +filament_retract_speed = 15 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = 3 -bed_type = Cool Plate -nozzle_temperature_initial_layer = 220 +;;;filament_wipe_distance = 3 +;;;bed_type = Cool Plate +first_layer_temperature = 220 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 20 -slow_down_layer_time = 14 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 220 -temperature_vitrification = 60 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 20 +slowdown_below_layer_time = 14 +;;;filament_start_gcode = ;filament start gcode +temperature = 220 +;;;temperature_vitrification = 60 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 190 -nozzle_temperature_range_high = 240 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 190 +;;;nozzle_temperature_range_high = 240 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 -customized_plate_temp = 50 -customized_plate_temp_initial_layer = 50 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 +;;;customized_plate_temp = 50 +;;;customized_plate_temp_initial_layer = 50 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 50 -epoxy_resin_plate_temp_initial_layer = 50 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 50 +;;;epoxy_resin_plate_temp_initial_layer = 50 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -85,15 +85,15 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = nil filament_retract_lift_below = nil -filament_retract_lift_enforce = nil -filament_shrink = 100% +;;;filament_retract_lift_enforce = nil +;;;filament_shrink = 100% filament_shrinkage_compensation_z = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[0.8,200],[1.0,200],[1.2,220]] -pressure_advance = 0.04 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[0.8,200],[1.0,200],[1.2,220]] +;;;pressure_advance = 0.04 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Hyper_PETG.ini b/print_config/prusa_slicer/materials/Hyper_PETG.ini index c1373f4..ddc3020 100644 --- a/print_config/prusa_slicer/materials/Hyper_PETG.ini +++ b/print_config/prusa_slicer/materials/Hyper_PETG.ini @@ -1,75 +1,75 @@ [metadata] show_name = Hyper PETG -material_type = petg +filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 -cool_plate_temp = 60 -eng_plate_temp = 0 -hot_plate_temp = 70 -textured_plate_temp = 70 -cool_plate_temp_initial_layer = 60 -eng_plate_temp_initial_layer = 0 -hot_plate_temp_initial_layer = 70 -textured_plate_temp_initial_layer = 70 -overhang_fan_threshold = 25% -overhang_fan_speed = 90 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 3 -filament_end_gcode = ;filament end gcode \n -filament_flow_ratio = 1.0 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 30 +;;;cool_plate_temp = 60 +;;;eng_plate_temp = 0 +;;;hot_plate_temp = 70 +;;;textured_plate_temp = 70 +;;;cool_plate_temp_initial_layer = 60 +;;;eng_plate_temp_initial_layer = 0 +;;;hot_plate_temp_initial_layer = 70 +;;;textured_plate_temp_initial_layer = 70 +;;;overhang_fan_threshold = 25% +;;;overhang_fan_speed = 90 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 3 +;;;filament_end_gcode = ;filament end gcode \n +extrusion_multiplier = 1.0 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 30 filament_cost = 69 filament_density = 1.27 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 10 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 1.2 -filament_z_hop = 0.2 -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 1.2 +;;;filament_z_hop = 0.2 +;;;filament_z_hop_types = nil filament_retract_restart_extra = 0 -filament_retraction_speed = nil -filament_settings_id = +filament_retract_speed = nil +;;;filament_settings_id = filament_soluble = 0 filament_type = PETG -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = 2 -bed_type = Cool Plate -nozzle_temperature_initial_layer = 235 +;;;filament_wipe_distance = 2 +;;;bed_type = Cool Plate +first_layer_temperature = 235 full_fan_speed_layer = 0 -fan_max_speed = 80 -fan_min_speed = 40 -slow_down_min_speed = 10 -slow_down_layer_time = 8 -filament_start_gcode = ;filament start gcode\n -nozzle_temperature = 240 -temperature_vitrification = 80 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 -additional_cooling_fan_speed = 0 +max_fan_speed = 80 +min_fan_speed = 40 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 8 +;;;filament_start_gcode = ;filament start gcode\n +temperature = 240 +;;;temperature_vitrification = 80 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 +;;;additional_cooling_fan_speed = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 0 -epoxy_resin_plate_temp_initial_layer = 0 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 0 +;;;epoxy_resin_plate_temp_initial_layer = 0 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -80,16 +80,16 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 1 -material_flow_temp_graph = [[3.0,230],[10.0,240],[20.0,250]] -nozzle_temperature_range_high = 270 -nozzle_temperature_range_low = 220 -pressure_advance = 0.07 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 1 +;;;material_flow_temp_graph = [[3.0,230],[10.0,240],[20.0,250]] +;;;nozzle_temperature_range_high = 270 +;;;nozzle_temperature_range_low = 220 +;;;pressure_advance = 0.07 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Hyper_PLA.ini b/print_config/prusa_slicer/materials/Hyper_PLA.ini index f65bbfa..9e8dfa0 100644 --- a/print_config/prusa_slicer/materials/Hyper_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_PLA.ini @@ -1,78 +1,78 @@ [metadata] show_name = Hyper PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 50 -textured_plate_temp = 50 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 50 -textured_plate_temp_initial_layer = 50 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 50 +;;;textured_plate_temp = 50 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 50 +;;;textured_plate_temp_initial_layer = 50 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 30 filament_density = 1.24 -filament_deretraction_speed = nil +filament_deretract_speed = nil filament_diameter = 1.75 filament_max_volumetric_speed = 23 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 1.2 -filament_z_hop = 0.2 -filament_z_hop_types = Slope Lift +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 1.2 +;;;filament_z_hop = 0.2 +;;;filament_z_hop_types = Slope Lift filament_retract_restart_extra = 0 -filament_retraction_speed = 40 -filament_settings_id = +filament_retract_speed = 40 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 190 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 190 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 20 -slow_down_layer_time = 6 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 190 -temperature_vitrification = 100 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 20 +slowdown_below_layer_time = 6 +;;;filament_start_gcode = ;filament start gcode +temperature = 190 +;;;temperature_vitrification = 100 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 190 -nozzle_temperature_range_high = 240 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 190 +;;;nozzle_temperature_range_high = 240 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 0 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 0 -epoxy_resin_plate_temp_initial_layer = 0 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 0 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 0 +;;;epoxy_resin_plate_temp_initial_layer = 0 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -83,14 +83,14 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = 0 filament_retract_lift_below = 0 -filament_retract_lift_enforce = All Surfaces -filament_shrink = 100% +;;;filament_retract_lift_enforce = All Surfaces +;;;filament_shrink = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[3.5,200],[7.0,240]] -pressure_advance = 0.02 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[3.5,200],[7.0,240]] +;;;pressure_advance = 0.02 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini b/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini index eceb926..abb1e50 100644 --- a/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini @@ -1,80 +1,80 @@ [metadata] show_name = Hyper Stardust PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 50 -textured_plate_temp = 50 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 50 -textured_plate_temp_initial_layer = 50 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.95 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 50 +;;;textured_plate_temp = 50 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 50 +;;;textured_plate_temp_initial_layer = 50 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.95 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 26.9 filament_density = 1.24 -filament_deretraction_speed = 15 +filament_deretract_speed = 15 filament_diameter = 1.75 filament_max_volumetric_speed = 18 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = 2 +;;;filament_retraction_minimum_travel = 2 filament_retract_before_wipe = nil -filament_retract_when_changing_layer = nil -filament_retraction_length = 2 -filament_z_hop = nil -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = 2 +;;;filament_z_hop = nil +;;;filament_z_hop_types = nil filament_retract_restart_extra = nil -filament_retraction_speed = 15 -filament_settings_id = +filament_retract_speed = 15 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = 3 -bed_type = Cool Plate -nozzle_temperature_initial_layer = 220 +;;;filament_wipe_distance = 3 +;;;bed_type = Cool Plate +first_layer_temperature = 220 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 10 -slow_down_layer_time = 14 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 220 -temperature_vitrification = 60 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 10 +slowdown_below_layer_time = 14 +;;;filament_start_gcode = ;filament start gcode +temperature = 220 +;;;temperature_vitrification = 60 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 190 -nozzle_temperature_range_high = 240 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 190 +;;;nozzle_temperature_range_high = 240 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0.5 -cool_special_cds_fan_speed = 0 -customized_plate_temp = 50 -customized_plate_temp_initial_layer = 50 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0.5 +;;;cool_special_cds_fan_speed = 0 +;;;customized_plate_temp = 50 +;;;customized_plate_temp_initial_layer = 50 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 50 -epoxy_resin_plate_temp_initial_layer = 50 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 50 +;;;epoxy_resin_plate_temp_initial_layer = 50 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -85,15 +85,15 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = nil filament_retract_lift_below = nil -filament_retract_lift_enforce = nil -filament_shrink = 100% +;;;filament_retract_lift_enforce = nil +;;;filament_shrink = 100% filament_shrinkage_compensation_z = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[0.8,200],[1.0,200],[1.2,220]] -pressure_advance = 0.04 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[0.8,200],[1.0,200],[1.2,220]] +;;;pressure_advance = 0.04 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini b/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini index 1b4774b..f01c298 100644 --- a/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini +++ b/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini @@ -1,80 +1,80 @@ [metadata] show_name = Soleyin Ultra PLA -material_type = pla +filament_type = pla [settings] idle_temperature = 150 first_layer_bed_temperature = 60 -cool_plate_temp = 50 -eng_plate_temp = 45 -hot_plate_temp = 50 -textured_plate_temp = 50 -cool_plate_temp_initial_layer = 50 -eng_plate_temp_initial_layer = 45 -hot_plate_temp_initial_layer = 50 -textured_plate_temp_initial_layer = 50 -overhang_fan_threshold = 50% -overhang_fan_speed = 100 -slow_down_for_layer_cooling = 1 -close_fan_the_first_x_layers = 1 -filament_end_gcode = ;filament end gcode -filament_flow_ratio = 0.96 -reduce_fan_stop_start_freq = 1 -fan_cooling_layer_time = 100 +;;;cool_plate_temp = 50 +;;;eng_plate_temp = 45 +;;;hot_plate_temp = 50 +;;;textured_plate_temp = 50 +;;;cool_plate_temp_initial_layer = 50 +;;;eng_plate_temp_initial_layer = 45 +;;;hot_plate_temp_initial_layer = 50 +;;;textured_plate_temp_initial_layer = 50 +;;;overhang_fan_threshold = 50% +;;;overhang_fan_speed = 100 +;;;slow_down_for_layer_cooling = 1 +;;;close_fan_the_first_x_layers = 1 +;;;filament_end_gcode = ;filament end gcode +extrusion_multiplier = 0.96 +;;;reduce_fan_stop_start_freq = 1 +;;;fan_cooling_layer_time = 100 filament_cost = 6 filament_density = 1.25 -filament_deretraction_speed = 15 +filament_deretract_speed = 15 filament_diameter = 1.75 filament_max_volumetric_speed = 16 filament_minimal_purge_on_wipe_tower = 15 -filament_retraction_minimum_travel = nil +;;;filament_retraction_minimum_travel = nil filament_retract_before_wipe = 90% -filament_retract_when_changing_layer = nil -filament_retraction_length = nil -filament_z_hop = nil -filament_z_hop_types = nil +;;;filament_retract_when_changing_layer = nil +filament_retract_length = nil +;;;filament_z_hop = nil +;;;filament_z_hop_types = nil filament_retract_restart_extra = nil -filament_retraction_speed = 15 -filament_settings_id = +filament_retract_speed = 15 +;;;filament_settings_id = filament_soluble = 0 filament_type = PLA -filament_vendor = Creality +;;;filament_vendor = Creality filament_wipe = nil -filament_wipe_distance = nil -bed_type = Cool Plate -nozzle_temperature_initial_layer = 220 +;;;filament_wipe_distance = nil +;;;bed_type = Cool Plate +first_layer_temperature = 220 full_fan_speed_layer = 0 -fan_max_speed = 100 -fan_min_speed = 100 -slow_down_min_speed = 20 -slow_down_layer_time = 12 -filament_start_gcode = ;filament start gcode -nozzle_temperature = 220 -temperature_vitrification = 60 +max_fan_speed = 100 +min_fan_speed = 100 +;;;slow_down_min_speed = 20 +slowdown_below_layer_time = 12 +;;;filament_start_gcode = ;filament start gcode +temperature = 220 +;;;temperature_vitrification = 60 ; filament_adhesiveness_category = 100 -nozzle_temperature_range_low = 190 -nozzle_temperature_range_high = 240 -additional_cooling_fan_speed = 0 -activate_air_filtration = 0 -activate_chamber_temp_control = 0 +;;;nozzle_temperature_range_low = 190 +;;;nozzle_temperature_range_high = 240 +;;;additional_cooling_fan_speed = 0 +;;;activate_air_filtration = 0 +;;;activate_chamber_temp_control = 0 chamber_temperature = 0 -complete_print_exhaust_fan_speed = 80 -cool_cds_fan_start_at_height = 0 -cool_special_cds_fan_speed = 0 -customized_plate_temp = 60 -customized_plate_temp_initial_layer = 60 +;;;complete_print_exhaust_fan_speed = 80 +;;;cool_cds_fan_start_at_height = 0 +;;;cool_special_cds_fan_speed = 0 +;;;customized_plate_temp = 60 +;;;customized_plate_temp_initial_layer = 60 default_filament_colour = "" -during_print_exhaust_fan_speed = 60 -enable_overhang_bridge_fan = 1 -enable_pressure_advance = 1 -enable_special_area_additional_cooling_fan = 0 -epoxy_resin_plate_temp = 60 -epoxy_resin_plate_temp_initial_layer = 60 +;;;during_print_exhaust_fan_speed = 60 +;;;enable_overhang_bridge_fan = 1 +;;;enable_pressure_advance = 1 +;;;enable_special_area_additional_cooling_fan = 0 +;;;epoxy_resin_plate_temp = 60 +;;;epoxy_resin_plate_temp_initial_layer = 60 filament_cooling_final_speed = 3.4 filament_cooling_initial_speed = 2.2 filament_cooling_moves = 4 -filament_is_support = 0 +;;;filament_is_support = 0 filament_load_time = 0 filament_loading_speed = 28 filament_loading_speed_start = 3 @@ -85,15 +85,15 @@ filament_notes = "" filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" filament_retract_lift_above = nil filament_retract_lift_below = nil -filament_retract_lift_enforce = nil -filament_shrink = 100% +;;;filament_retract_lift_enforce = nil +;;;filament_shrink = 100% filament_shrinkage_compensation_z = 100% filament_toolchange_delay = 0 filament_unload_time = 0 filament_unloading_speed = 90 filament_unloading_speed_start = 100 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[1.0,200],[1.1,200],[1.2,220]] -pressure_advance = 0.05 -required_nozzle_HRC = 0 -support_material_interface_fan_speed = -1 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[1.0,200],[1.1,200],[1.2,220]] +;;;pressure_advance = 0.05 +;;;required_nozzle_HRC = 0 +;;;support_material_interface_fan_speed = -1 diff --git a/print_config/prusa_slicer/printers/Ender3_V3_SE.ini b/print_config/prusa_slicer/printers/Ender3_V3_SE.ini index 51d154d..6a43896 100644 --- a/print_config/prusa_slicer/printers/Ender3_V3_SE.ini +++ b/print_config/prusa_slicer/printers/Ender3_V3_SE.ini @@ -30,8 +30,8 @@ max_layer_height = 0.36 min_layer_height = 0.08 max_print_height = 250 extruder_clearance_radius = 90 -extruder_clearance_height_to_rod = 47 -extruder_clearance_height_to_lid = 34 +;;;extruder_clearance_height_to_rod = 47 +;;;extruder_clearance_height_to_lid = 34 nozzle_diameter = 0.4 printer_variant = 0.4 retract_before_travel = 1 @@ -39,8 +39,8 @@ retract_before_wipe = 100 retract_layer_change = 1 retract_length = 0.8 retract_length_toolchange = 1 -z_hop = 0.4 -z_hop_types = Slope Lift +retract_lift = 0.4 +;;;z_hop_types = Slope Lift retract_restart_extra = 0 retract_restart_extra_toolchange = 0 retract_speed = 30 diff --git a/print_config/prusa_slicer/quality/0.08mm_Extra_Fine.ini b/print_config/prusa_slicer/quality/0.08mm_Extra_Fine.ini index 0613dc3..2ad7c91 100644 --- a/print_config/prusa_slicer/quality/0.08mm_Extra_Fine.ini +++ b/print_config/prusa_slicer/quality/0.08mm_Extra_Fine.ini @@ -3,214 +3,214 @@ show_name = 0.08mm Extra Fine Quality [settings] -adaptive_layer_height = 0 -reduce_crossing_wall = 0 -bridge_flow = 0.8 +variable_layer_height = 0 +avoid_crossing_perimeters = 0 +bridge_flow_ratio = 0.8 bridge_speed = 25 brim_width = 5 -print_sequence = by layer +complete_objects = 0 default_acceleration = 2500 -bridge_no_support = 0 +dont_support_bridges = 0 elefant_foot_compensation = 0.15 -outer_wall_line_width = 0.42 -outer_wall_speed = 60 -line_width = 0.46 -infill_direction = 45 -sparse_infill_density = 10% -sparse_infill_pattern = zig-zag -initial_layer_line_width = 0.46 -initial_layer_print_height = 0.2 -initial_layer_speed = 60 -gap_infill_speed = 50 -infill_combination = 0 -sparse_infill_line_width = 0.45 -infill_wall_overlap = 15% -sparse_infill_speed = 180 +external_perimeter_extrusion_width = 0.42 +external_perimeter_speed = 60 +extrusion_width = 0.46 +fill_angle = 45 +fill_density = 10% +fill_pattern = zigzag +first_layer_extrusion_width = 0.46 +first_layer_height = 0.2 +first_layer_speed = 60 +gap_fill_speed = 50 +solid_infill_every_layers = 0 +infill_extrusion_width = 0.45 +infill_overlap = 15% +infill_speed = 180 interface_shells = 0 -detect_overhang_wall = 1 -reduce_infill_retraction = 1 -wall_loops = 2 -inner_wall_line_width = 0.45 -inner_wall_speed = 90 -print_settings_id = +;;;detect_overhang_wall = 1 +;;;reduce_infill_retraction = 1 +perimeters = 2 +perimeter_extrusion_width = 0.45 +perimeter_speed = 90 +;;;print_settings_id = raft_layers = 0 seam_position = aligned skirt_distance = 2 skirt_height = 2 -minimum_sparse_infill_area = 10 -internal_solid_infill_line_width = 0.42 -internal_solid_infill_speed = 180 -spiral_mode = 0 +solid_infill_below_area = 10 +solid_infill_extrusion_width = 0.42 +solid_infill_speed = 180 +spiral_vase = 0 standby_temperature_delta = -5 -detect_thin_wall = 1 -top_surface_line_width = 0.42 -top_surface_speed = 50 +thin_walls = 1 +top_infill_extrusion_width = 0.42 +top_solid_infill_speed = 50 travel_speed = 150 -enable_prime_tower = 0 -prime_tower_width = 60 -xy_hole_compensation = 0 -xy_contour_compensation = 0 -max_travel_detour_distance = 0 -bottom_surface_pattern = monotonic -bottom_shell_layers = 7 -bottom_shell_thickness = 0 -brim_object_gap = 0.1 -compatible_printers_condition = -top_surface_acceleration = 2500 +wipe_tower = 0 +wipe_tower_width = 60 +xy_size_compensation = 0 +;;;xy_contour_compensation = 0 +;;;max_travel_detour_distance = 0 +bottom_fill_pattern = monotonic +bottom_solid_layers = 7 +bottom_solid_min_thickness = 0 +;;;brim_object_gap = 0.1 +;;;compatible_printers_condition = +top_solid_infill_acceleration = 2500 draft_shield = disabled -enable_arc_fitting = 0 -wall_infill_order = inner wall/outer wall/infill -initial_layer_acceleration = 500 +arc_fitting = disabled +;;;wall_infill_order = inner wall/outer wall/infill +first_layer_acceleration = 500 travel_acceleration = 2500 -inner_wall_acceleration = 2000 -ironing_flow = 15% +perimeter_acceleration = 2000 +ironing_flowrate = 15% ironing_spacing = 0.1 ironing_speed = 20 ironing_type = top layer_height = 0.08 -overhang_1_4_speed = 0 -overhang_2_4_speed = 20 -overhang_3_4_speed = 15 -overhang_4_4_speed = 10 -skirt_loops = 0 +overhang_speed_0 = 0 +overhang_speed_1 = 20 +overhang_speed_2 = 15 +overhang_speed_3 = 10 +skirts = 2 resolution = 0.012 -top_surface_pattern = monotonicline -top_shell_layers = 9 -top_shell_thickness = 0.8 -initial_layer_infill_speed = 80 +top_fill_pattern = monotonicline +top_solid_layers = 9 +top_solid_min_thickness = 0.8 +first_layer_infill_speed = 80 wipe_tower_no_sparse_layers = 0 -accel_to_decel_enable = 1 -accel_to_decel_factor = 50% -acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] -acceleration_limit_mess_enable = 0 -alternate_extra_wall = 0 -bottom_solid_infill_flow_ratio = 1 +;;;accel_to_decel_enable = 1 +;;;accel_to_decel_factor = 50% +;;;acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] +;;;acceleration_limit_mess_enable = 0 +;;;alternate_extra_wall = 0 +;;;bottom_solid_infill_flow_ratio = 1 bridge_acceleration = 50% bridge_angle = 0 -bridge_density = 100% -brim_ears_detection_length = 1 -brim_ears_max_angle = 125 +;;;bridge_density = 100% +;;;brim_ears_detection_length = 1 +;;;brim_ears_max_angle = 125 brim_type = no_brim -default_jerk = 8 -detect_narrow_internal_solid_infill = 1 -elefant_foot_compensation_layers = 1 -enable_overhang_speed = 1 -enforce_support_layers = 0 +;;;default_jerk = 8 +;;;detect_narrow_internal_solid_infill = 1 +;;;elefant_foot_compensation_layers = 1 +enable_dynamic_overhang_speeds = 1 +support_material_enforce_layers = 0 ensure_vertical_shell_thickness = ensure_all -exclude_object = 0 +;;;exclude_object = 0 extra_perimeters_on_overhangs = 0 -filter_out_gap_fill = 0 -flush_into_infill = 0 -flush_into_objects = 0 -flush_into_support = 1 +;;;filter_out_gap_fill = 0 +;;;flush_into_infill = 0 +;;;flush_into_objects = 0 +;;;flush_into_support = 1 fuzzy_skin = none -fuzzy_skin_first_layer = 0 -fuzzy_skin_point_distance = 0.8 +;;;fuzzy_skin_first_layer = 0 +fuzzy_skin_point_dist = 0.8 fuzzy_skin_thickness = 0.3 -gcode_add_line_number = 0 +;;;gcode_add_line_number = 0 gcode_comments = 0 gcode_label_objects = 1 -hole_to_polyhole = 0 -hole_to_polyhole_threshold = 0.01 -hole_to_polyhole_twisted = 1 -independent_support_layer_height = 1 +;;;hole_to_polyhole = 0 +;;;hole_to_polyhole_threshold = 0.01 +;;;hole_to_polyhole_twisted = 1 +;;;independent_support_layer_height = 1 infill_anchor = 400% infill_anchor_max = 20 -infill_jerk = 20 -initial_layer_jerk = 8 -initial_layer_min_bead_width = 85% -initial_layer_travel_speed = 100% -inner_wall_jerk = 20 -internal_bridge_flow = 1 -internal_bridge_speed = 150% -internal_solid_infill_acceleration = 100% -internal_solid_infill_pattern = monotonic -ironing_angle = -1 -ironing_pattern = zig-zag -ironing_support_layer = 0 -is_infill_first = 0 -make_overhang_printable = 0 -make_overhang_printable_angle = 55 -make_overhang_printable_hole_size = 0 -max_bridge_length = 10 -max_volumetric_extrusion_rate_slope = 0 -max_volumetric_extrusion_rate_slope_segment_length = 3 +;;;infill_jerk = 20 +;;;initial_layer_jerk = 8 +;;;initial_layer_min_bead_width = 85% +;;;initial_layer_travel_speed = 100% +;;;inner_wall_jerk = 20 +;;;internal_bridge_flow = 1 +;;;internal_bridge_speed = 150% +solid_infill_acceleration = 100% +solid_fill_pattern = monotonic +;;;ironing_angle = -1 +;;;ironing_pattern = zigzag +;;;ironing_support_layer = 0 +infill_first = 0 +;;;make_overhang_printable = 0 +;;;make_overhang_printable_angle = 55 +;;;make_overhang_printable_hole_size = 0 +;;;max_bridge_length = 10 +;;;max_volumetric_extrusion_rate_slope = 0 +;;;max_volumetric_extrusion_rate_slope_segment_length = 3 min_bead_width = 85% min_feature_size = 25% -min_width_top_surface = 300% -minimum_support_area = 5 +;;;min_width_top_surface = 300% +;;;minimum_support_area = 5 mmu_segmented_region_interlocking_depth = 0 mmu_segmented_region_max_width = 0 -only_one_wall_first_layer = 0 -only_one_wall_top = 0 +;;;only_one_wall_first_layer = 0 +top_one_perimeter_type = none ooze_prevention = 0 -outer_wall_acceleration = 1000 -outer_wall_jerk = 20 -overhang_reverse = 0 -overhang_reverse_internal_only = 0 -overhang_reverse_threshold = 50% -overhang_speed_classic = 0 -precise_outer_wall = 0 -prime_tower_brim_width = 3 -prime_tower_enhance_type = chamfer -prime_volume = 45 -print_flow_ratio = 1 -print_order = default +external_perimeter_acceleration = 1000 +;;;outer_wall_jerk = 20 +;;;overhang_reverse = 0 +;;;overhang_reverse_internal_only = 0 +;;;overhang_reverse_threshold = 50% +;;;overhang_speed_classic = 0 +;;;precise_outer_wall = 0 +wipe_tower_brim_width = 3 +;;;prime_tower_enhance_type = chamfer +;;;prime_volume = 45 +;;;print_flow_ratio = 1 +;;;print_order = default raft_contact_distance = 0.1 raft_expansion = 1.5 raft_first_layer_density = 90% raft_first_layer_expansion = 2 -role_based_wipe_speed = 1 -scarf_angle_threshold = 155 -scarf_joint_flow_ratio = 1 -scarf_joint_speed = 100% -scarf_overhang_threshold = 40% -seam_gap = 10% -seam_slope_conditional = 0 -seam_slope_entire_loop = 0 -seam_slope_inner_walls = 0 -seam_slope_min_length = 20 -seam_slope_start_height = 0 -seam_slope_steps = 10 -seam_slope_type = none +;;;role_based_wipe_speed = 1 +;;;scarf_angle_threshold = 155 +;;;scarf_joint_flow_ratio = 1 +;;;scarf_joint_speed = 100% +;;;scarf_overhang_threshold = 40% +seam_gap_distance = 10% +;;;seam_slope_conditional = 0 +scarf_seam_entire_loop = 0 +scarf_seam_on_inner_perimeters = 0 +scarf_seam_length = 20 +scarf_seam_start_height = 0 +;;;seam_slope_steps = 10 +;;;seam_slope_type = none single_extruder_multi_material_priming = 0 -skirt_speed = 50 +;;;skirt_speed = 50 slice_closing_radius = 0.049 slicing_mode = regular -slow_down_layers = 0 -slowdown_for_curled_perimeters = 0 -small_area_infill_flow_compensation = 0 -small_area_infill_flow_compensation_model = 0,0;\n0.2,0.4444;\n0.4,0.6145;\n0.6,0.7059;\n0.8,0.7619;\n1.5,0.8571;\n2,0.8889;\n3,0.9231;\n5,0.9520;\n10,1 +;;;slow_down_layers = 0 +avoid_crossing_curled_overhangs = 0 +;;;small_area_infill_flow_compensation = 0 +;;;small_area_infill_flow_compensation_model = 0,0;\n0.2,0.4444;\n0.4,0.6145;\n0.6,0.7059;\n0.8,0.7619;\n1.5,0.8571;\n2,0.8889;\n3,0.9231;\n5,0.9520;\n10,1 small_perimeter_speed = 50% -small_perimeter_threshold = 0 -solid_infill_filament = 1 -sparse_infill_acceleration = 100% -sparse_infill_filament = 1 -speed_limit_to_height = [[100,150,200,6000],[150,200,200,4000],[200,250,200,2000]] -speed_limit_to_height_enable = 0 -spiral_mode_max_xy_smoothing = 200% -spiral_mode_smooth = 0 +;;;small_perimeter_threshold = 0 +;;;solid_infill_filament = 1 +infill_acceleration = 100% +;;;sparse_infill_filament = 1 +;;;speed_limit_to_height = [[100,150,200,6000],[150,200,200,4000],[200,250,200,2000]] +;;;speed_limit_to_height_enable = 0 +;;;spiral_mode_max_xy_smoothing = 200% +;;;spiral_mode_smooth = 0 staggered_inner_seams = 1 thick_bridges = 0 -thick_internal_bridges = 1 -timelapse_type = 0 -top_solid_infill_flow_ratio = 1 -top_surface_jerk = 9 -travel_jerk = 12 +;;;thick_internal_bridges = 1 +;;;timelapse_type = 0 +;;;top_solid_infill_flow_ratio = 1 +;;;top_surface_jerk = 9 +;;;travel_jerk = 12 travel_speed_z = 0 -wall_direction = auto +;;;wall_direction = auto wall_distribution_count = 1 -wall_filament = 1 -wall_generator = arachne -wall_sequence = inner wall/outer wall +;;;wall_filament = 1 +perimeter_generator = arachne +;;;wall_sequence = inner wall/outer wall wall_transition_angle = 10 wall_transition_filter_deviation = 25% wall_transition_length = 100% -wipe_before_external_loop = 0 -wipe_on_loops = 0 -wipe_speed = 80% +;;;wipe_before_external_loop = 0 +;;;wipe_on_loops = 0 +;;;wipe_speed = 80% wipe_tower_bridging = 10 wipe_tower_cone_angle = 0 wipe_tower_extra_spacing = 100% -wipe_tower_rotation_angle = 0 -wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 +;;;wipe_tower_rotation_angle = 0 +;;;wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 diff --git a/print_config/prusa_slicer/quality/0.12mm_Fine.ini b/print_config/prusa_slicer/quality/0.12mm_Fine.ini index d0b8f71..dd17be9 100644 --- a/print_config/prusa_slicer/quality/0.12mm_Fine.ini +++ b/print_config/prusa_slicer/quality/0.12mm_Fine.ini @@ -3,198 +3,198 @@ show_name = 0.12mm Fine Quality [settings] -adaptive_layer_height = 0 -reduce_crossing_wall = 0 -bridge_flow = 0.95 +variable_layer_height = 0 +avoid_crossing_perimeters = 0 +bridge_flow_ratio = 0.95 bridge_speed = 100 brim_width = 5 -print_sequence = by layer +complete_objects = 0 default_acceleration = 2500 -bridge_no_support = 0 +dont_support_bridges = 0 elefant_foot_compensation = 0 -outer_wall_line_width = 0.42 -outer_wall_speed = 60 -line_width = 0.46 -infill_direction = 45 -sparse_infill_density = 15% -sparse_infill_pattern = grid -initial_layer_line_width = 0.46 -initial_layer_print_height = 0.2 -initial_layer_speed = 30 -gap_infill_speed = 50 -infill_combination = 0 -sparse_infill_line_width = 0.45 -infill_wall_overlap = 15% -sparse_infill_speed = 180 +external_perimeter_extrusion_width = 0.42 +external_perimeter_speed = 60 +extrusion_width = 0.46 +fill_angle = 45 +fill_density = 15% +fill_pattern = grid +first_layer_extrusion_width = 0.46 +first_layer_height = 0.2 +first_layer_speed = 30 +gap_fill_speed = 50 +solid_infill_every_layers = 0 +infill_extrusion_width = 0.45 +infill_overlap = 15% +infill_speed = 180 interface_shells = 0 -detect_overhang_wall = 1 -reduce_infill_retraction = 1 -wall_loops = 2 -inner_wall_line_width = 0.45 -inner_wall_speed = 90 -print_settings_id = +;;;detect_overhang_wall = 1 +;;;reduce_infill_retraction = 1 +perimeters = 2 +perimeter_extrusion_width = 0.45 +perimeter_speed = 90 +;;;print_settings_id = raft_layers = 0 seam_position = aligned skirt_distance = 2 skirt_height = 2 -minimum_sparse_infill_area = 10 -internal_solid_infill_line_width = 0.42 -internal_solid_infill_speed = 180 -spiral_mode = 0 +solid_infill_below_area = 10 +solid_infill_extrusion_width = 0.42 +solid_infill_speed = 180 +spiral_vase = 0 standby_temperature_delta = -5 -detect_thin_wall = 1 -top_surface_line_width = 0.42 -top_surface_speed = 50 +thin_walls = 1 +top_infill_extrusion_width = 0.42 +top_solid_infill_speed = 50 travel_speed = 150 -enable_prime_tower = 0 -prime_tower_width = 60 -xy_hole_compensation = 0 -xy_contour_compensation = 0 -max_travel_detour_distance = 0 -bottom_surface_pattern = monotonic -bottom_shell_layers = 5 -bottom_shell_thickness = 0 -brim_object_gap = 0.1 -compatible_printers_condition = -top_surface_acceleration = 2500 +wipe_tower = 0 +wipe_tower_width = 60 +xy_size_compensation = 0 +;;;xy_contour_compensation = 0 +;;;max_travel_detour_distance = 0 +bottom_fill_pattern = monotonic +bottom_solid_layers = 5 +bottom_solid_min_thickness = 0 +;;;brim_object_gap = 0.1 +;;;compatible_printers_condition = +top_solid_infill_acceleration = 2500 draft_shield = disabled -enable_arc_fitting = 0 -wall_infill_order = inner wall/outer wall/infill -initial_layer_acceleration = 500 +arc_fitting = disabled +;;;wall_infill_order = inner wall/outer wall/infill +first_layer_acceleration = 500 travel_acceleration = 2500 -inner_wall_acceleration = 2000 -ironing_flow = 15% +perimeter_acceleration = 2000 +ironing_flowrate = 15% ironing_spacing = 0.1 ironing_speed = 20 ironing_type = top layer_height = 0.12 -overhang_1_4_speed = 0 -overhang_2_4_speed = 20 -overhang_3_4_speed = 15 -overhang_4_4_speed = 10 -skirt_loops = 0 +overhang_speed_0 = 0 +overhang_speed_1 = 20 +overhang_speed_2 = 15 +overhang_speed_3 = 10 +skirts = 2 resolution = 0.012 -top_surface_pattern = monotonic -top_shell_layers = 5 -top_shell_thickness = 0.8 -initial_layer_infill_speed = 80 +top_fill_pattern = monotonic +top_solid_layers = 5 +top_solid_min_thickness = 0.8 +first_layer_infill_speed = 80 wipe_tower_no_sparse_layers = 0 -accel_to_decel_enable = 1 -accel_to_decel_factor = 50% -acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] -acceleration_limit_mess_enable = 0 -alternate_extra_wall = 0 -bottom_solid_infill_flow_ratio = 1 +;;;accel_to_decel_enable = 1 +;;;accel_to_decel_factor = 50% +;;;acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] +;;;acceleration_limit_mess_enable = 0 +;;;alternate_extra_wall = 0 +;;;bottom_solid_infill_flow_ratio = 1 bridge_acceleration = 50% bridge_angle = 0 -bridge_density = 100% -brim_ears_detection_length = 1 -brim_ears_max_angle = 125 +;;;bridge_density = 100% +;;;brim_ears_detection_length = 1 +;;;brim_ears_max_angle = 125 brim_type = no_brim -default_jerk = 8 -detect_narrow_internal_solid_infill = 1 -elefant_foot_compensation_layers = 1 -enable_overhang_speed = 1 -enforce_support_layers = 0 +;;;default_jerk = 8 +;;;detect_narrow_internal_solid_infill = 1 +;;;elefant_foot_compensation_layers = 1 +enable_dynamic_overhang_speeds = 1 +support_material_enforce_layers = 0 ensure_vertical_shell_thickness = ensure_all -exclude_object = 0 +;;;exclude_object = 0 extra_perimeters_on_overhangs = 0 -filter_out_gap_fill = 0 -flush_into_infill = 0 -flush_into_objects = 0 -flush_into_support = 1 +;;;filter_out_gap_fill = 0 +;;;flush_into_infill = 0 +;;;flush_into_objects = 0 +;;;flush_into_support = 1 fuzzy_skin = none -fuzzy_skin_first_layer = 0 -fuzzy_skin_point_distance = 0.8 +;;;fuzzy_skin_first_layer = 0 +fuzzy_skin_point_dist = 0.8 fuzzy_skin_thickness = 0.3 -gcode_add_line_number = 0 +;;;gcode_add_line_number = 0 gcode_comments = 0 gcode_label_objects = 1 -hole_to_polyhole = 0 -hole_to_polyhole_threshold = 0.01 -hole_to_polyhole_twisted = 1 -independent_support_layer_height = 1 +;;;hole_to_polyhole = 0 +;;;hole_to_polyhole_threshold = 0.01 +;;;hole_to_polyhole_twisted = 1 +;;;independent_support_layer_height = 1 infill_anchor = 400% infill_anchor_max = 20 -infill_jerk = 20 -initial_layer_jerk = 8 -initial_layer_min_bead_width = 85% -initial_layer_travel_speed = 100% -inner_wall_jerk = 20 -internal_bridge_flow = 1 -internal_bridge_speed = 150% -internal_solid_infill_acceleration = 100% -internal_solid_infill_pattern = monotonic -ironing_angle = -1 -ironing_pattern = zig-zag -ironing_support_layer = 0 -is_infill_first = 0 -make_overhang_printable = 0 -make_overhang_printable_angle = 55 -make_overhang_printable_hole_size = 0 -max_bridge_length = 10 -max_volumetric_extrusion_rate_slope = 0 -max_volumetric_extrusion_rate_slope_segment_length = 3 +;;;infill_jerk = 20 +;;;initial_layer_jerk = 8 +;;;initial_layer_min_bead_width = 85% +;;;initial_layer_travel_speed = 100% +;;;inner_wall_jerk = 20 +;;;internal_bridge_flow = 1 +;;;internal_bridge_speed = 150% +solid_infill_acceleration = 100% +solid_fill_pattern = monotonic +;;;ironing_angle = -1 +;;;ironing_pattern = zigzag +;;;ironing_support_layer = 0 +infill_first = 0 +;;;make_overhang_printable = 0 +;;;make_overhang_printable_angle = 55 +;;;make_overhang_printable_hole_size = 0 +;;;max_bridge_length = 10 +;;;max_volumetric_extrusion_rate_slope = 0 +;;;max_volumetric_extrusion_rate_slope_segment_length = 3 min_bead_width = 85% min_feature_size = 25% -min_width_top_surface = 300% -minimum_support_area = 5 +;;;min_width_top_surface = 300% +;;;minimum_support_area = 5 mmu_segmented_region_interlocking_depth = 0 mmu_segmented_region_max_width = 0 -only_one_wall_first_layer = 0 -only_one_wall_top = 0 +;;;only_one_wall_first_layer = 0 +top_one_perimeter_type = none ooze_prevention = 0 -outer_wall_acceleration = 1000 -outer_wall_jerk = 20 -overhang_reverse = 0 -overhang_reverse_internal_only = 0 -overhang_reverse_threshold = 50% -overhang_speed_classic = 0 -precise_outer_wall = 0 -prime_tower_brim_width = 3 -prime_volume = 45 -print_flow_ratio = 1 +external_perimeter_acceleration = 1000 +;;;outer_wall_jerk = 20 +;;;overhang_reverse = 0 +;;;overhang_reverse_internal_only = 0 +;;;overhang_reverse_threshold = 50% +;;;overhang_speed_classic = 0 +;;;precise_outer_wall = 0 +wipe_tower_brim_width = 3 +;;;prime_volume = 45 +;;;print_flow_ratio = 1 raft_contact_distance = 0.1 raft_expansion = 1.5 raft_first_layer_density = 90% raft_first_layer_expansion = 2 -role_based_wipe_speed = 1 -seam_gap = 10% +;;;role_based_wipe_speed = 1 +seam_gap_distance = 10% single_extruder_multi_material_priming = 0 -skirt_speed = 50 +;;;skirt_speed = 50 slice_closing_radius = 0.049 slicing_mode = regular -slow_down_layers = 0 -slowdown_for_curled_perimeters = 0 +;;;slow_down_layers = 0 +avoid_crossing_curled_overhangs = 0 small_perimeter_speed = 50% -small_perimeter_threshold = 0 -solid_infill_filament = 1 -sparse_infill_acceleration = 100% -sparse_infill_filament = 1 -speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] -speed_limit_to_height_enable = 0 -spiral_mode_max_xy_smoothing = 200% -spiral_mode_smooth = 0 +;;;small_perimeter_threshold = 0 +;;;solid_infill_filament = 1 +infill_acceleration = 100% +;;;sparse_infill_filament = 1 +;;;speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] +;;;speed_limit_to_height_enable = 0 +;;;spiral_mode_max_xy_smoothing = 200% +;;;spiral_mode_smooth = 0 staggered_inner_seams = 0 thick_bridges = 0 -thick_internal_bridges = 1 -timelapse_type = 0 -top_solid_infill_flow_ratio = 1 -top_surface_jerk = 20 -travel_jerk = 8 +;;;thick_internal_bridges = 1 +;;;timelapse_type = 0 +;;;top_solid_infill_flow_ratio = 1 +;;;top_surface_jerk = 20 +;;;travel_jerk = 8 travel_speed_z = 0 wall_distribution_count = 1 -wall_filament = 1 -wall_generator = arachne -wall_sequence = inner wall/outer wall +;;;wall_filament = 1 +perimeter_generator = arachne +;;;wall_sequence = inner wall/outer wall wall_transition_angle = 10 wall_transition_filter_deviation = 25% wall_transition_length = 100% -wipe_before_external_loop = 0 -wipe_on_loops = 0 -wipe_speed = 80% +;;;wipe_before_external_loop = 0 +;;;wipe_on_loops = 0 +;;;wipe_speed = 80% wipe_tower_bridging = 10 wipe_tower_cone_angle = 0 wipe_tower_extra_spacing = 100% -wipe_tower_rotation_angle = 0 -wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 +;;;wipe_tower_rotation_angle = 0 +;;;wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 diff --git a/print_config/prusa_slicer/quality/0.16mm_Optimal.ini b/print_config/prusa_slicer/quality/0.16mm_Optimal.ini index 556975a..08b2bef 100644 --- a/print_config/prusa_slicer/quality/0.16mm_Optimal.ini +++ b/print_config/prusa_slicer/quality/0.16mm_Optimal.ini @@ -3,198 +3,198 @@ show_name = 0.16mm Optimal Quality [settings] -adaptive_layer_height = 0 -reduce_crossing_wall = 0 -bridge_flow = 0.95 +variable_layer_height = 0 +avoid_crossing_perimeters = 0 +bridge_flow_ratio = 0.95 bridge_speed = 100 brim_width = 5 -print_sequence = by layer +complete_objects = 0 default_acceleration = 2500 -bridge_no_support = 0 +dont_support_bridges = 0 elefant_foot_compensation = 0 -outer_wall_line_width = 0.42 -outer_wall_speed = 60 -line_width = 0.46 -infill_direction = 45 -sparse_infill_density = 15% -sparse_infill_pattern = grid -initial_layer_line_width = 0.46 -initial_layer_print_height = 0.2 -initial_layer_speed = 30 -gap_infill_speed = 50 -infill_combination = 0 -sparse_infill_line_width = 0.45 -infill_wall_overlap = 15% -sparse_infill_speed = 180 +external_perimeter_extrusion_width = 0.42 +external_perimeter_speed = 60 +extrusion_width = 0.46 +fill_angle = 45 +fill_density = 15% +fill_pattern = grid +first_layer_extrusion_width = 0.46 +first_layer_height = 0.2 +first_layer_speed = 30 +gap_fill_speed = 50 +solid_infill_every_layers = 0 +infill_extrusion_width = 0.45 +infill_overlap = 15% +infill_speed = 180 interface_shells = 0 -detect_overhang_wall = 1 -reduce_infill_retraction = 1 -wall_loops = 2 -inner_wall_line_width = 0.45 -inner_wall_speed = 90 -print_settings_id = +;;;detect_overhang_wall = 1 +;;;reduce_infill_retraction = 1 +perimeters = 2 +perimeter_extrusion_width = 0.45 +perimeter_speed = 90 +;;;print_settings_id = raft_layers = 0 seam_position = aligned skirt_distance = 2 skirt_height = 2 -minimum_sparse_infill_area = 10 -internal_solid_infill_line_width = 0.42 -internal_solid_infill_speed = 180 -spiral_mode = 0 +solid_infill_below_area = 10 +solid_infill_extrusion_width = 0.42 +solid_infill_speed = 180 +spiral_vase = 0 standby_temperature_delta = -5 -detect_thin_wall = 1 -top_surface_line_width = 0.42 -top_surface_speed = 50 +thin_walls = 1 +top_infill_extrusion_width = 0.42 +top_solid_infill_speed = 50 travel_speed = 150 -enable_prime_tower = 0 -prime_tower_width = 60 -xy_hole_compensation = 0 -xy_contour_compensation = 0 -max_travel_detour_distance = 0 -bottom_surface_pattern = monotonic -bottom_shell_layers = 4 -bottom_shell_thickness = 0 -brim_object_gap = 0.1 -compatible_printers_condition = -top_surface_acceleration = 2500 +wipe_tower = 0 +wipe_tower_width = 60 +xy_size_compensation = 0 +;;;xy_contour_compensation = 0 +;;;max_travel_detour_distance = 0 +bottom_fill_pattern = monotonic +bottom_solid_layers = 4 +bottom_solid_min_thickness = 0 +;;;brim_object_gap = 0.1 +;;;compatible_printers_condition = +top_solid_infill_acceleration = 2500 draft_shield = disabled -enable_arc_fitting = 0 -wall_infill_order = inner wall/outer wall/infill -initial_layer_acceleration = 500 +arc_fitting = disabled +;;;wall_infill_order = inner wall/outer wall/infill +first_layer_acceleration = 500 travel_acceleration = 2500 -inner_wall_acceleration = 2000 -ironing_flow = 15% +perimeter_acceleration = 2000 +ironing_flowrate = 15% ironing_spacing = 0.1 ironing_speed = 20 ironing_type = top layer_height = 0.16 -overhang_1_4_speed = 0 -overhang_2_4_speed = 20 -overhang_3_4_speed = 15 -overhang_4_4_speed = 10 -skirt_loops = 0 +overhang_speed_0 = 0 +overhang_speed_1 = 20 +overhang_speed_2 = 15 +overhang_speed_3 = 10 +skirts = 2 resolution = 0.012 -top_surface_pattern = monotonic -top_shell_layers = 6 -top_shell_thickness = 0.8 -initial_layer_infill_speed = 80 +top_fill_pattern = monotonic +top_solid_layers = 6 +top_solid_min_thickness = 0.8 +first_layer_infill_speed = 80 wipe_tower_no_sparse_layers = 0 -accel_to_decel_enable = 1 -accel_to_decel_factor = 50% -acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] -acceleration_limit_mess_enable = 0 -alternate_extra_wall = 0 -bottom_solid_infill_flow_ratio = 1 +;;;accel_to_decel_enable = 1 +;;;accel_to_decel_factor = 50% +;;;acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] +;;;acceleration_limit_mess_enable = 0 +;;;alternate_extra_wall = 0 +;;;bottom_solid_infill_flow_ratio = 1 bridge_acceleration = 50% bridge_angle = 0 -bridge_density = 100% -brim_ears_detection_length = 1 -brim_ears_max_angle = 125 +;;;bridge_density = 100% +;;;brim_ears_detection_length = 1 +;;;brim_ears_max_angle = 125 brim_type = no_brim -default_jerk = 8 -detect_narrow_internal_solid_infill = 1 -elefant_foot_compensation_layers = 1 -enable_overhang_speed = 1 -enforce_support_layers = 0 +;;;default_jerk = 8 +;;;detect_narrow_internal_solid_infill = 1 +;;;elefant_foot_compensation_layers = 1 +enable_dynamic_overhang_speeds = 1 +support_material_enforce_layers = 0 ensure_vertical_shell_thickness = ensure_all -exclude_object = 0 +;;;exclude_object = 0 extra_perimeters_on_overhangs = 0 -filter_out_gap_fill = 0 -flush_into_infill = 0 -flush_into_objects = 0 -flush_into_support = 1 +;;;filter_out_gap_fill = 0 +;;;flush_into_infill = 0 +;;;flush_into_objects = 0 +;;;flush_into_support = 1 fuzzy_skin = none -fuzzy_skin_first_layer = 0 -fuzzy_skin_point_distance = 0.8 +;;;fuzzy_skin_first_layer = 0 +fuzzy_skin_point_dist = 0.8 fuzzy_skin_thickness = 0.3 -gcode_add_line_number = 0 +;;;gcode_add_line_number = 0 gcode_comments = 0 gcode_label_objects = 1 -hole_to_polyhole = 0 -hole_to_polyhole_threshold = 0.01 -hole_to_polyhole_twisted = 1 -independent_support_layer_height = 1 +;;;hole_to_polyhole = 0 +;;;hole_to_polyhole_threshold = 0.01 +;;;hole_to_polyhole_twisted = 1 +;;;independent_support_layer_height = 1 infill_anchor = 400% infill_anchor_max = 20 -infill_jerk = 20 -initial_layer_jerk = 8 -initial_layer_min_bead_width = 85% -initial_layer_travel_speed = 100% -inner_wall_jerk = 20 -internal_bridge_flow = 1 -internal_bridge_speed = 150% -internal_solid_infill_acceleration = 100% -internal_solid_infill_pattern = monotonic -ironing_angle = -1 -ironing_pattern = zig-zag -ironing_support_layer = 0 -is_infill_first = 0 -make_overhang_printable = 0 -make_overhang_printable_angle = 55 -make_overhang_printable_hole_size = 0 -max_bridge_length = 10 -max_volumetric_extrusion_rate_slope = 0 -max_volumetric_extrusion_rate_slope_segment_length = 3 +;;;infill_jerk = 20 +;;;initial_layer_jerk = 8 +;;;initial_layer_min_bead_width = 85% +;;;initial_layer_travel_speed = 100% +;;;inner_wall_jerk = 20 +;;;internal_bridge_flow = 1 +;;;internal_bridge_speed = 150% +solid_infill_acceleration = 100% +solid_fill_pattern = monotonic +;;;ironing_angle = -1 +;;;ironing_pattern = zigzag +;;;ironing_support_layer = 0 +infill_first = 0 +;;;make_overhang_printable = 0 +;;;make_overhang_printable_angle = 55 +;;;make_overhang_printable_hole_size = 0 +;;;max_bridge_length = 10 +;;;max_volumetric_extrusion_rate_slope = 0 +;;;max_volumetric_extrusion_rate_slope_segment_length = 3 min_bead_width = 85% min_feature_size = 25% -min_width_top_surface = 300% -minimum_support_area = 5 +;;;min_width_top_surface = 300% +;;;minimum_support_area = 5 mmu_segmented_region_interlocking_depth = 0 mmu_segmented_region_max_width = 0 -only_one_wall_first_layer = 0 -only_one_wall_top = 0 +;;;only_one_wall_first_layer = 0 +top_one_perimeter_type = none ooze_prevention = 0 -outer_wall_acceleration = 1000 -outer_wall_jerk = 20 -overhang_reverse = 0 -overhang_reverse_internal_only = 0 -overhang_reverse_threshold = 50% -overhang_speed_classic = 0 -precise_outer_wall = 0 -prime_tower_brim_width = 3 -prime_volume = 45 -print_flow_ratio = 1 +external_perimeter_acceleration = 1000 +;;;outer_wall_jerk = 20 +;;;overhang_reverse = 0 +;;;overhang_reverse_internal_only = 0 +;;;overhang_reverse_threshold = 50% +;;;overhang_speed_classic = 0 +;;;precise_outer_wall = 0 +wipe_tower_brim_width = 3 +;;;prime_volume = 45 +;;;print_flow_ratio = 1 raft_contact_distance = 0.1 raft_expansion = 1.5 raft_first_layer_density = 90% raft_first_layer_expansion = 2 -role_based_wipe_speed = 1 -seam_gap = 10% +;;;role_based_wipe_speed = 1 +seam_gap_distance = 10% single_extruder_multi_material_priming = 0 -skirt_speed = 50 +;;;skirt_speed = 50 slice_closing_radius = 0.049 slicing_mode = regular -slow_down_layers = 0 -slowdown_for_curled_perimeters = 0 +;;;slow_down_layers = 0 +avoid_crossing_curled_overhangs = 0 small_perimeter_speed = 50% -small_perimeter_threshold = 0 -solid_infill_filament = 1 -sparse_infill_acceleration = 100% -sparse_infill_filament = 1 -speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] -speed_limit_to_height_enable = 0 -spiral_mode_max_xy_smoothing = 200% -spiral_mode_smooth = 0 +;;;small_perimeter_threshold = 0 +;;;solid_infill_filament = 1 +infill_acceleration = 100% +;;;sparse_infill_filament = 1 +;;;speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] +;;;speed_limit_to_height_enable = 0 +;;;spiral_mode_max_xy_smoothing = 200% +;;;spiral_mode_smooth = 0 staggered_inner_seams = 0 thick_bridges = 0 -thick_internal_bridges = 1 -timelapse_type = 0 -top_solid_infill_flow_ratio = 1 -top_surface_jerk = 20 -travel_jerk = 8 +;;;thick_internal_bridges = 1 +;;;timelapse_type = 0 +;;;top_solid_infill_flow_ratio = 1 +;;;top_surface_jerk = 20 +;;;travel_jerk = 8 travel_speed_z = 0 wall_distribution_count = 1 -wall_filament = 1 -wall_generator = arachne -wall_sequence = inner wall/outer wall +;;;wall_filament = 1 +perimeter_generator = arachne +;;;wall_sequence = inner wall/outer wall wall_transition_angle = 10 wall_transition_filter_deviation = 25% wall_transition_length = 100% -wipe_before_external_loop = 0 -wipe_on_loops = 0 -wipe_speed = 80% +;;;wipe_before_external_loop = 0 +;;;wipe_on_loops = 0 +;;;wipe_speed = 80% wipe_tower_bridging = 10 wipe_tower_cone_angle = 0 wipe_tower_extra_spacing = 100% -wipe_tower_rotation_angle = 0 -wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 +;;;wipe_tower_rotation_angle = 0 +;;;wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 diff --git a/print_config/prusa_slicer/quality/0.20mm_Standard.ini b/print_config/prusa_slicer/quality/0.20mm_Standard.ini index f1dedd4..fdc27d4 100644 --- a/print_config/prusa_slicer/quality/0.20mm_Standard.ini +++ b/print_config/prusa_slicer/quality/0.20mm_Standard.ini @@ -3,224 +3,224 @@ show_name = 0.20mm Standard Quality [settings] -adaptive_layer_height = 0 -reduce_crossing_wall = 0 -bridge_flow = 0.95 +variable_layer_height = 0 +avoid_crossing_perimeters = 0 +bridge_flow_ratio = 0.95 bridge_speed = 50 brim_width = 5 -print_sequence = by layer +complete_objects = 0 default_acceleration = 2500 -bridge_no_support = 0 +dont_support_bridges = 0 elefant_foot_compensation = 0.15 -outer_wall_line_width = 0.42 -outer_wall_speed = 60 -line_width = 0.45 -infill_direction = 45 -sparse_infill_density = 15% -sparse_infill_pattern = zig-zag -initial_layer_line_width = 0.5 -initial_layer_print_height = 0.2 -initial_layer_speed = 30 -gap_infill_speed = 50 -infill_combination = 0 -sparse_infill_line_width = 0.45 -infill_wall_overlap = 30 -sparse_infill_speed = 180 +external_perimeter_extrusion_width = 0.42 +external_perimeter_speed = 60 +extrusion_width = 0.45 +fill_angle = 45 +fill_density = 15% +fill_pattern = zigzag +first_layer_extrusion_width = 0.5 +first_layer_height = 0.2 +first_layer_speed = 30 +gap_fill_speed = 50 +solid_infill_every_layers = 0 +infill_extrusion_width = 0.45 +infill_overlap = 30% +infill_speed = 180 interface_shells = 0 -detect_overhang_wall = 1 -reduce_infill_retraction = 1 -wall_loops = 2 -inner_wall_line_width = 0.45 -inner_wall_speed = 90 -print_settings_id = +;;detect_overhang_wall = 1 +;;reduce_infill_retraction = 1 +perimeters = 2 +perimeter_extrusion_width = 0.45 +perimeter_speed = 90 +;;;print_settings_id = raft_layers = 0 seam_position = aligned skirt_distance = 2 skirt_height = 2 -minimum_sparse_infill_area = 10 -internal_solid_infill_line_width = 0.42 -internal_solid_infill_speed = 180 -spiral_mode = 0 +solid_infill_below_area = 10 +solid_infill_extrusion_width = 0.42 +solid_infill_speed = 180 +spiral_vase = 0 standby_temperature_delta = -5 -detect_thin_wall = 0 -top_surface_line_width = 0.42 -top_surface_speed = 50 +thin_walls = 0 +top_infill_extrusion_width = 0.42 +top_solid_infill_speed = 50 travel_speed = 150 -enable_prime_tower = 0 -prime_tower_width = 60 -xy_hole_compensation = 0 -xy_contour_compensation = 0 -max_travel_detour_distance = 0 -bottom_surface_pattern = monotonic -bottom_shell_layers = 4 -bottom_shell_thickness = 0 -brim_object_gap = 0.1 -compatible_printers_condition = -top_surface_acceleration = 2500 +wipe_tower = 0 +wipe_tower_width = 60 +xy_size_compensation = 0 +;;;xy_contour_compensation = 0 +;;;max_travel_detour_distance = 0 +bottom_fill_pattern = monotonic +bottom_solid_layers = 4 +bottom_solid_min_thickness = 0 +;;;brim_object_gap = 0.1 +;;;compatible_printers_condition = +top_solid_infill_acceleration = 2500 draft_shield = disabled -enable_arc_fitting = 1 -wall_infill_order = inner wall/outer wall/infill -initial_layer_acceleration = 500 +arc_fitting = disabled +;;;wall_infill_order = inner wall/outer wall/infill +first_layer_acceleration = 500 travel_acceleration = 2500 -inner_wall_acceleration = 2000 -ironing_flow = 15% +perimeter_acceleration = 2000 +ironing_flowrate = 15% ironing_spacing = 0.1 ironing_speed = 20 ironing_type = top layer_height = 0.2 -overhang_1_4_speed = 0 -overhang_2_4_speed = 60 -overhang_3_4_speed = 30 -overhang_4_4_speed = 10 -skirt_loops = 0 +overhang_speed_0 = 0 +overhang_speed_1 = 60 +overhang_speed_2 = 30 +overhang_speed_3 = 10 +skirts = 2 resolution = 0.012 -top_surface_pattern = monotonic -top_shell_layers = 4 -top_shell_thickness = 0.8 -initial_layer_infill_speed = 80 +top_fill_pattern = monotonic +top_solid_layers = 4 +top_solid_min_thickness = 0.8 +first_layer_infill_speed = 80 wipe_tower_no_sparse_layers = 0 -accel_to_decel_enable = 1 -accel_to_decel_factor = 25 -acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] -acceleration_limit_mess_enable = 0 -ai_infill = 0 -alternate_extra_wall = 0 -bottom_solid_infill_flow_ratio = 1 +;;;accel_to_decel_enable = 1 +;;;accel_to_decel_factor = 25 +;;;acceleration_limit_mess = [[0.5,1.0,100,6000],[1.0,1.5,80,5500],[1.5,2.0,60,5000]] +;;;acceleration_limit_mess_enable = 0 +;;;ai_infill = 0 +;;;alternate_extra_wall = 0 +;;;bottom_solid_infill_flow_ratio = 1 bridge_acceleration = 50% bridge_angle = 0 -bridge_density = 100% -brim_ears_detection_length = 1 -brim_ears_max_angle = 125 +;;;bridge_density = 100% +;;;brim_ears_detection_length = 1 +;;;brim_ears_max_angle = 125 brim_type = no_brim -counterbore_hole_bridging = none -default_jerk = 10 -detect_narrow_internal_solid_infill = 1 -dont_filter_internal_bridges = disabled -elefant_foot_compensation_layers = 1 -enable_overhang_speed = 1 -enforce_support_layers = 0 +;;;counterbore_hole_bridging = none +;;;default_jerk = 10 +;;;detect_narrow_internal_solid_infill = 1 +;;;dont_filter_internal_bridges = disabled +;;;elefant_foot_compensation_layers = 1 +enable_dynamic_overhang_speeds = 1 +support_material_enforce_layers = 0 ensure_vertical_shell_thickness = ensure_all -exclude_object = 0 +;;;exclude_object = 0 extra_perimeters_on_overhangs = 0 -filter_out_gap_fill = 0 -flush_into_infill = 0 -flush_into_objects = 0 -flush_into_support = 1 +;;;filter_out_gap_fill = 0 +;;;flush_into_infill = 0 +;;;flush_into_objects = 0 +;;;flush_into_support = 1 fuzzy_skin = none -fuzzy_skin_first_layer = 0 -fuzzy_skin_point_distance = 0.8 +;;;fuzzy_skin_first_layer = 0 +fuzzy_skin_point_dist = 0.8 fuzzy_skin_thickness = 0.3 -gap_fill_target = everywhere -gcode_add_line_number = 0 +gap_fill_enabled = everywhere +;;;gcode_add_line_number = 0 gcode_comments = 0 gcode_label_objects = 1 -hole_to_polyhole = 0 -hole_to_polyhole_threshold = 0.01 -hole_to_polyhole_twisted = 1 -independent_support_layer_height = 1 +;;;hole_to_polyhole = 0 +;;;hole_to_polyhole_threshold = 0.01 +;;;hole_to_polyhole_twisted = 1 +;;;independent_support_layer_height = 1 infill_anchor = 400% infill_anchor_max = 20 -infill_jerk = 10 -initial_layer_jerk = 10 -initial_layer_min_bead_width = 85% -initial_layer_travel_speed = 100% -inner_wall_jerk = 10 -internal_bridge_flow = 1 -internal_bridge_speed = 150% -internal_solid_infill_acceleration = 100% -internal_solid_infill_pattern = monotonic -ironing_angle = -1 -ironing_pattern = zig-zag -ironing_support_layer = 0 -is_infill_first = 0 -make_overhang_printable = 0 -make_overhang_printable_angle = 55 -make_overhang_printable_hole_size = 0 -material_flow_dependent_temperature = 0 -material_flow_temp_graph = [[3.0,210],[10.0,220],[12.0,230]] -max_bridge_length = 10 -max_volumetric_extrusion_rate_slope = 0 -max_volumetric_extrusion_rate_slope_segment_length = 3 +;;;infill_jerk = 10 +;;;initial_layer_jerk = 10 +;;;initial_layer_min_bead_width = 85% +;;;initial_layer_travel_speed = 100% +;;;inner_wall_jerk = 10 +;;;internal_bridge_flow = 1 +;;;internal_bridge_speed = 150% +solid_infill_acceleration = 100% +solid_fill_pattern = monotonic +;;;ironing_angle = -1 +;;;ironing_pattern = zigzag +;;;ironing_support_layer = 0 +infill_first = 0 +;;;make_overhang_printable = 0 +;;;make_overhang_printable_angle = 55 +;;;make_overhang_printable_hole_size = 0 +;;;material_flow_dependent_temperature = 0 +;;;material_flow_temp_graph = [[3.0,210],[10.0,220],[12.0,230]] +;;;max_bridge_length = 10 +;;;max_volumetric_extrusion_rate_slope = 0 +;;;max_volumetric_extrusion_rate_slope_segment_length = 3 min_bead_width = 85% min_feature_size = 25% -min_length_factor = 0.5 -min_width_top_surface = 300% -minimum_support_area = 5 +;;;min_length_factor = 0.5 +;;;min_width_top_surface = 300% +;;;minimum_support_area = 5 mmu_segmented_region_interlocking_depth = 0 mmu_segmented_region_max_width = 0 -only_one_wall_first_layer = 0 -only_one_wall_top = 1 +;;;only_one_wall_first_layer = 0 +top_one_perimeter_type = top ooze_prevention = 0 -outer_wall_acceleration = 1000 -outer_wall_jerk = 10 -overhang_reverse = 0 -overhang_reverse_internal_only = 0 -overhang_reverse_threshold = 50% -overhang_speed_classic = 0 -precise_outer_wall = 0 -prime_tower_brim_width = 3 -prime_tower_enhance_type = chamfer -prime_volume = 45 -print_flow_ratio = 1 -print_order = default +external_perimeter_acceleration = 1000 +;;;outer_wall_jerk = 10 +;;;overhang_reverse = 0 +;;;overhang_reverse_internal_only = 0 +;;;overhang_reverse_threshold = 50% +;;;overhang_speed_classic = 0 +;;;precise_outer_wall = 0 +wipe_tower_brim_width = 3 +;;;prime_tower_enhance_type = chamfer +;;;prime_volume = 45 +;;;print_flow_ratio = 1 +;;;print_order = default raft_contact_distance = 0.1 raft_expansion = 1.5 raft_first_layer_density = 90% raft_first_layer_expansion = 2 -role_based_wipe_speed = 0 -scarf_angle_threshold = 155 -scarf_joint_flow_ratio = 1 -scarf_joint_speed = 100% -scarf_overhang_threshold = 40% -seam_gap = 10% -seam_slope_conditional = 0 -seam_slope_entire_loop = 0 -seam_slope_inner_walls = 0 -seam_slope_min_length = 20 -seam_slope_start_height = 0 -seam_slope_steps = 10 -seam_slope_type = none +;;;role_based_wipe_speed = 0 +;;;scarf_angle_threshold = 155 +;;;scarf_joint_flow_ratio = 1 +;;;scarf_joint_speed = 100% +;;;scarf_overhang_threshold = 40% +seam_gap_distance = 10% +;;;seam_slope_conditional = 0 +scarf_seam_entire_loop = 0 +scarf_seam_on_inner_perimeters = 0 +scarf_seam_length = 20 +scarf_seam_start_height = 0 +;;;seam_slope_steps = 10 +;;;seam_slope_type = none single_extruder_multi_material_priming = 0 -skirt_speed = 50 +;;;skirt_speed = 50 slice_closing_radius = 0.049 slicing_mode = regular -slow_down_layers = 0 -slowdown_for_curled_perimeters = 0 -small_area_infill_flow_compensation = 0 -small_area_infill_flow_compensation_model = 0,0;"\n0.2,0.4444";"\n0.4,0.6145";"\n0.6,0.7059";"\n0.8,0.7619";"\n1.5,0.8571";"\n2,0.8889";"\n3,0.9231";"\n5,0.9520";"\n10,1" +;;;slow_down_layers = 0 +avoid_crossing_curled_overhangs = 0 +;;;small_area_infill_flow_compensation = 0 +;;;small_area_infill_flow_compensation_model = 0,0;"\n0.2,0.4444";"\n0.4,0.6145";"\n0.6,0.7059";"\n0.8,0.7619";"\n1.5,0.8571";"\n2,0.8889";"\n3,0.9231";"\n5,0.9520";"\n10,1" small_perimeter_speed = 50% -small_perimeter_threshold = 0 -solid_infill_filament = 1 -sparse_infill_acceleration = 100% -sparse_infill_filament = 1 -speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] -speed_limit_to_height_enable = 0 -spiral_mode_max_xy_smoothing = 200% -spiral_mode_smooth = 0 +;;;small_perimeter_threshold = 0 +;;;solid_infill_filament = 1 +infill_acceleration = 100% +;;;sparse_infill_filament = 1 +;;;speed_limit_to_height = [[100,150,100,6000],[150,200,80,5500],[200,250,60,5000]] +;;;speed_limit_to_height_enable = 0 +;;;spiral_mode_max_xy_smoothing = 200% +;;;spiral_mode_smooth = 0 staggered_inner_seams = 1 thick_bridges = 0 -thick_internal_bridges = 1 -timelapse_type = 0 -top_solid_infill_flow_ratio = 1 -top_surface_jerk = 8 -travel_jerk = 10 +;;;thick_internal_bridges = 1 +;;;timelapse_type = 0 +;;;top_solid_infill_flow_ratio = 1 +;;;top_surface_jerk = 8 +;;;travel_jerk = 10 travel_speed_z = 0 -wall_direction = auto +;;;wall_direction = auto wall_distribution_count = 1 -wall_filament = 1 -wall_generator = arachne -wall_sequence = inner wall/outer wall +;;;wall_filament = 1 +perimeter_generator = arachne +;;;wall_sequence = inner wall/outer wall wall_transition_angle = 10 wall_transition_filter_deviation = 25% wall_transition_length = 100% -wipe_before_external_loop = 0 -wipe_on_loops = 0 -wipe_speed = 100% +;;;wipe_before_external_loop = 0 +;;;wipe_on_loops = 0 +;;;wipe_speed = 100% wipe_tower_bridging = 10 wipe_tower_cone_angle = 0 wipe_tower_extra_spacing = 100% -wipe_tower_rotation_angle = 0 -wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 +;;;wipe_tower_rotation_angle = 0 +;;;wiping_volumes_extruders = 70,70,70,70,70,70,70,70,70,70 diff --git a/print_config/prusa_slicer/supports/grid_support.ini b/print_config/prusa_slicer/supports/grid_support.ini index 2f21937..7eeb4e6 100644 --- a/print_config/prusa_slicer/supports/grid_support.ini +++ b/print_config/prusa_slicer/supports/grid_support.ini @@ -1,5 +1,5 @@ [metadata] -show_name = Grid Support +show_name = 网状支撑 (Grid Support) [settings] @@ -7,11 +7,11 @@ support_material = 1 support_material_auto = 1 support_material_extrusion_width = 0.4 support_material_interface_extruder = 0 -support_top_z_distance = 0.2 -support_interface_loop_pattern = 0 -support_interface_top_layers = 2 -support_interface_spacing = 0.5 -support_interface_speed = 100% +support_material_contact_distance = 0.2 +;;;support_interface_loop_pattern = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.5 +support_material_interface_speed = 100% support_material_pattern = rectilinear support_material_spacing = 2.5 support_material_speed = 50 @@ -24,11 +24,11 @@ support_material_bottom_interface_layers = 2 support_material_angle = 0 -support_bottom_interface_spacing = 0.5 -support_bottom_z_distance = 0.2 -support_critical_regions_only = 0 -support_expansion = 0 -support_interface_not_for_body = 1 -support_interface_pattern = auto -support_remove_small_overhang = 1 -support_xy_overrides_z = xy_overrides_z +;;;support_bottom_interface_spacing = 0.5 +support_material_bottom_contact_distance = 0.2 +;;;support_critical_regions_only = 0 +;;;support_expansion = 0 +;;;support_interface_not_for_body = 1 +support_material_interface_pattern = auto +;;;support_remove_small_overhang = 1 +;;;support_xy_overrides_z = xy_overrides_z diff --git a/print_config/prusa_slicer/supports/no_support.ini b/print_config/prusa_slicer/supports/no_support.ini index 81ad09e..f590b7e 100644 --- a/print_config/prusa_slicer/supports/no_support.ini +++ b/print_config/prusa_slicer/supports/no_support.ini @@ -1,50 +1,50 @@ [metadata] -show_name = No Support +show_name = 无支撑 (No Support) [settings] support_material = 0 -support_line_width = 0.4 -support_interface_filament = 0 -support_on_build_plate_only = 0 -support_top_z_distance = 0.2 -support_interface_loop_pattern = 0 -support_interface_top_layers = 2 -support_interface_spacing = 0.5 -support_interface_speed = 100% -support_base_pattern = rectilinear -support_base_pattern_spacing = 2.5 -support_speed = 50 -support_threshold_angle = 30 -support_object_xy_distance = 0.35 +;;;support_line_width = 0.4 +;;;support_interface_filament = 0 +;;;support_on_build_plate_only = 0 +support_material_contact_distance = 0.2 +;;;support_interface_loop_pattern = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.5 +support_material_interface_speed = 100% +;;;support_base_pattern = rectilinear +;;;support_base_pattern_spacing = 2.5 +support_material_speed = 50 +;;;support_threshold_angle = 30 +;;;support_object_xy_distance = 0.35 -support_type = normal(auto) +;;;support_type = 1 support_material_style = default -support_interface_bottom_layers = 2 -tree_support_branch_angle = 45 -tree_support_wall_count = 0 +support_material_bottom_interface_layers = 2 +;;;tree_support_branch_angle = 45 +;;;tree_support_wall_count = 0 -support_angle = 0 -support_bottom_interface_spacing = 0.5 -support_bottom_z_distance = 0.2 -support_critical_regions_only = 0 -support_expansion = 0 -support_interface_not_for_body = 1 -support_interface_pattern = auto -support_remove_small_overhang = 1 -support_xy_overrides_z = xy_overrides_z +support_material_angle = 0 +;;;support_bottom_interface_spacing = 0.5 +support_material_bottom_contact_distance = 0.2 +;;;support_critical_regions_only = 0 +;;;support_expansion = 0 +;;;support_interface_not_for_body = 1 +support_material_interface_pattern = auto +;;;support_remove_small_overhang = 1 +;;;support_xy_overrides_z = xy_overrides_z -tree_support_adaptive_layer_height = 1 -tree_support_angle_slow = 25 -tree_support_auto_brim = 1 -tree_support_branch_angle_organic = 40 -tree_support_branch_diameter = 2 -tree_support_branch_diameter_angle = 5 -tree_support_branch_diameter_double_wall = 3 -tree_support_branch_diameter_organic = 2 -tree_support_branch_distance = 5 -tree_support_branch_distance_organic = 1 -tree_support_brim_width = 3 -tree_support_tip_diameter = 0.8 -tree_support_top_rate = 30% \ No newline at end of file +;;;tree_support_adaptive_layer_height = 1 +;;;tree_support_angle_slow = 25 +;;;tree_support_auto_brim = 1 +;;;tree_support_branch_angle_organic = 40 +;;;tree_support_branch_diameter = 2 +;;;tree_support_branch_diameter_angle = 5 +;;;tree_support_branch_diameter_double_wall = 3 +;;;tree_support_branch_diameter_organic = 2 +;;;tree_support_branch_distance = 5 +;;;tree_support_branch_distance_organic = 1 +;;;tree_support_brim_width = 3 +;;;tree_support_tip_diameter = 0.8 +;;;tree_support_top_rate = 30% diff --git a/print_config/prusa_slicer/supports/snug_support.ini b/print_config/prusa_slicer/supports/snug_support.ini index 79c35dd..360e968 100644 --- a/print_config/prusa_slicer/supports/snug_support.ini +++ b/print_config/prusa_slicer/supports/snug_support.ini @@ -1,5 +1,5 @@ [metadata] -show_name = Snug Support +show_name = 松散支撑 (Snug Support) [settings] @@ -7,11 +7,11 @@ support_material = 1 support_material_auto = 1 support_material_extrusion_width = 0.4 support_material_interface_extruder = 0 -support_top_z_distance = 0.2 -support_interface_loop_pattern = 0 -support_interface_top_layers = 2 -support_interface_spacing = 0.5 -support_interface_speed = 100% +support_material_contact_distance = 0.2 +;;;support_interface_loop_pattern = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.5 +support_material_interface_speed = 100% support_material_pattern = rectilinear support_material_spacing = 2.5 support_material_speed = 50 @@ -24,11 +24,11 @@ support_material_bottom_interface_layers = 2 support_material_angle = 0 -support_bottom_interface_spacing = 0.5 -support_bottom_z_distance = 0.2 -support_critical_regions_only = 0 -support_expansion = 0 -support_interface_not_for_body = 1 -support_interface_pattern = auto -support_remove_small_overhang = 1 -support_xy_overrides_z = xy_overrides_z +;;;support_bottom_interface_spacing = 0.5 +support_material_bottom_contact_distance = 0.2 +;;;support_critical_regions_only = 0 +;;;support_expansion = 0 +;;;support_interface_not_for_body = 1 +support_material_interface_pattern = auto +;;;support_remove_small_overhang = 1 +;;;support_xy_overrides_z = xy_overrides_z diff --git a/print_config/prusa_slicer/supports/tree_support.ini b/print_config/prusa_slicer/supports/tree_support.ini index 65611a1..b4f4a75 100644 --- a/print_config/prusa_slicer/supports/tree_support.ini +++ b/print_config/prusa_slicer/supports/tree_support.ini @@ -1,5 +1,5 @@ [metadata] -show_name = Tree Support +show_name = 树状支撑 (Tree Support) [settings] @@ -7,11 +7,11 @@ support_material = 1 support_material_auto = 1 support_material_extrusion_width = 0.4 support_material_interface_extruder = 0 -support_top_z_distance = 0.2 -support_interface_loop_pattern = 0 -support_interface_top_layers = 2 -support_interface_spacing = 0.5 -support_interface_speed = 100% +support_material_contact_distance = 0.2 +;;;support_interface_loop_pattern = 0 +support_material_interface_layers = 2 +support_material_interface_spacing = 0.5 +support_material_interface_speed = 100% support_material_pattern = rectilinear support_material_spacing = 2.5 support_material_speed = 50 @@ -24,14 +24,14 @@ support_material_bottom_interface_layers = 2 support_material_angle = 0 -support_bottom_interface_spacing = 0.5 -support_bottom_z_distance = 0.2 -support_critical_regions_only = 0 -support_expansion = 0 -support_interface_not_for_body = 1 -support_interface_pattern = auto -support_remove_small_overhang = 1 -support_xy_overrides_z = xy_overrides_z +;;;support_bottom_interface_spacing = 0.5 +support_material_bottom_contact_distance = 0.2 +;;;support_critical_regions_only = 0 +;;;support_expansion = 0 +;;;support_interface_not_for_body = 1 +support_material_interface_pattern = auto +;;;support_remove_small_overhang = 1 +;;;support_xy_overrides_z = xy_overrides_z support_tree_angle = 45 @@ -48,4 +48,4 @@ support_tree_branch_distance = 5 ; tree_support_branch_distance_organic = 1 ; tree_support_brim_width = 3 support_tree_tip_diameter = 0.8 -support_tree_top_rate = 30% \ No newline at end of file +support_tree_top_rate = 30% diff --git a/valid_keys.txt b/valid_keys.txt new file mode 100644 index 0000000..2c9f3d8 --- /dev/null +++ b/valid_keys.txt @@ -0,0 +1,417 @@ +load +material_profile +print_profile +printer_profile +export_3mf +export_gcode +gcode +export_obj +export_sla +sla +export_stl +gcodeviewer +help +help_fff +help_sla +info +query_print_filament_profiles +query_printer_models +save +slice +align_xy +center +cut +dont_arrange +duplicate +duplicate_grid +ensure_on_bed +no_ensure_on_bed +merge +rotate +rotate_x +rotate_y +scale +scale_to_fit +split +config_compatibility +datadir +delete_after_load +ignore_nonexistent_config +load +loglevel +opengl_aa +output +single_instance +threads +fill_pattern +load +arc_fitting +autoemit_temperature_commands +avoid_crossing_curled_overhangs +avoid_crossing_perimeters +bed_custom_model +bed_custom_texture +bed_shape +bed_temperature +before_layer_gcode +between_objects_gcode +binary_gcode +bridge_acceleration +bridge_fan_speed +chamber_minimal_temperature +chamber_temperature +color_change_gcode +colorprint_heights +complete_objects +cooling +cooling_perimeter_transition_distance +cooling_slowdown_logic +cooling_tube_length +cooling_tube_retraction +custom_parameters_filament +custom_parameters_print +custom_parameters_printer +default_acceleration +deretract_speed +disable_fan_first_layers +draft_shield +duplicate_distance +enable_dynamic_fan_speeds +end_filament_gcode +end_gcode +external_perimeter_acceleration +extra_loading_move +extruder_clearance_height +extruder_clearance_radius +extruder_colour +extruder_offset +extrusion_axis +extrusion_multiplier +fan_always_on +fan_below_layer_time +filament_abrasive +filament_colour +filament_cooling_final_speed +filament_cooling_initial_speed +filament_cooling_moves +filament_cost +filament_density +filament_deretract_speed +filament_diameter +filament_infill_max_crossing_speed +filament_infill_max_speed +filament_load_time +filament_loading_speed +filament_loading_speed_start +filament_max_volumetric_speed +filament_minimal_purge_on_wipe_tower +filament_multitool_ramming +filament_multitool_ramming_flow +filament_multitool_ramming_volume +filament_notes +filament_purge_multiplier +filament_ramming_parameters +filament_retract_before_travel +filament_retract_before_wipe +filament_retract_layer_change +filament_retract_length +filament_retract_length_toolchange +filament_retract_lift +filament_retract_lift_above +filament_retract_lift_below +filament_retract_restart_extra +filament_retract_restart_extra_toolchange +filament_retract_speed +filament_seam_gap_distance +filament_shrinkage_compensation_xy +filament_shrinkage_compensation_z +filament_soluble +filament_spool_weight +filament_stamping_distance +filament_stamping_loading_speed +filament_toolchange_delay +filament_travel_lift_before_obstacle +filament_travel_max_lift +filament_travel_ramping_lift +filament_travel_slope +filament_type +filament_unload_time +filament_unloading_speed +filament_unloading_speed_start +filament_wipe +first_layer_acceleration +first_layer_acceleration_over_raft +first_layer_bed_temperature +first_layer_infill_speed +first_layer_speed +first_layer_speed_over_raft +first_layer_temperature +full_fan_speed_layer +gcode_comments +gcode_flavor +gcode_label_objects +gcode_resolution +gcode_substitutions +high_current_on_filament_swap +infill_acceleration +infill_first +after_layer_gcode +layer_gcode +max_fan_speed +max_layer_height +max_print_height +max_print_speed +max_volumetric_extrusion_rate_slope_negative +max_volumetric_extrusion_rate_slope_positive +max_volumetric_speed +min_fan_speed +min_layer_height +min_print_speed +min_skirt_length +multimaterial_purging +notes +nozzle_diameter +nozzle_high_flow +only_retract_when_crossing_perimeters +ooze_prevention +output_filename_format +overhang_fan_speed_0 +overhang_fan_speed_1 +overhang_fan_speed_2 +overhang_fan_speed_3 +parking_pos_retraction +pause_print_gcode +perimeter_acceleration +post_process +prefer_clockwise_movements +preset_name +preset_names +printer_model +printer_notes +printer_technology +printer_variant +remaining_times +resolution +retract_before_travel +retract_before_wipe +retract_layer_change +retract_length +retract_length_toolchange +retract_lift +retract_lift_above +retract_lift_below +retract_restart_extra +retract_restart_extra_toolchange +retract_speed +seam_gap_distance +silent_mode +single_extruder_multi_material +single_extruder_multi_material_priming +skirt_distance +skirt_height +skirts +slowdown_below_layer_time +solid_infill_acceleration +solid_layers +solid_min_thickness +spiral_vase +staggered_inner_seams +standby_temperature_delta +start_filament_gcode +start_gcode +temperature +template_custom_gcode +thumbnails +thumbnails_format +toolchange_gcode +top_solid_infill_acceleration +travel_acceleration +travel_lift_before_obstacle +travel_max_lift +travel_ramping_lift +travel_short_distance_acceleration +travel_slope +travel_speed +travel_speed_z +use_firmware_retraction +use_relative_e_distances +use_volumetric_e +variable_layer_height +wipe +wipe_tower +wipe_tower_acceleration +wipe_tower_bridging +wipe_tower_brim_width +wipe_tower_cone_angle +wipe_tower_extra_flow +wipe_tower_extra_spacing +wipe_tower_no_sparse_layers +wipe_tower_width +wiping_volumes_matrix +wiping_volumes_use_custom_matrix +z_offset +bridge_flow_ratio +elefant_foot_compensation +infill_anchor +infill_anchor_max +infill_overlap +interlocking_beam +interlocking_beam_layer_count +interlocking_beam_width +interlocking_boundary_avoidance +interlocking_depth +interlocking_orientation +min_bead_width +min_feature_size +mmu_segmented_region_interlocking_depth +mmu_segmented_region_max_width +slice_closing_radius +slicing_mode +wall_distribution_count +wall_transition_angle +wall_transition_filter_deviation +wall_transition_length +xy_size_compensation +bed_temperature_extruder +extruder +infill_extruder +perimeter_extruder +solid_infill_extruder +support_material_extruder +support_material_interface_extruder +wipe_tower_extruder +automatic_extrusion_widths +external_perimeter_extrusion_width +extrusion_width +first_layer_extrusion_width +infill_extrusion_width +perimeter_extrusion_width +solid_infill_extrusion_width +support_material_extrusion_width +top_infill_extrusion_width +fuzzy_skin +fuzzy_skin_point_dist +fuzzy_skin_thickness +automatic_infill_combination +automatic_infill_combination_max_layer_height +bottom_fill_pattern +external_fill_pattern +solid_fill_pattern +bridge_angle +fill_angle +fill_density +fill_pattern +infill_every_layers +solid_infill_below_area +solid_infill_every_layers +top_fill_pattern +external_fill_pattern +solid_fill_pattern +ironing +ironing_flowrate +ironing_spacing +ironing_type +avoid_crossing_perimeters_max_detour +bottom_solid_layers +bottom_solid_min_thickness +ensure_vertical_shell_thickness +external_perimeters_first +extra_perimeters +extra_perimeters_on_overhangs +first_layer_height +gap_fill_enabled +interface_shells +layer_height +only_one_perimeter_first_layer +overhangs +perimeter_generator +perimeters +scarf_seam_entire_loop +scarf_seam_length +scarf_seam_max_segment_length +scarf_seam_on_inner_perimeters +scarf_seam_only_on_smooth +scarf_seam_placement +scarf_seam_start_height +seam_position +thick_bridges +thin_walls +top_one_perimeter_type +top_solid_layers +top_solid_min_thickness +machine_limits_usage +machine_max_acceleration_e +machine_max_acceleration_extruding +machine_max_acceleration_retracting +machine_max_acceleration_travel +machine_max_acceleration_x +machine_max_acceleration_y +machine_max_acceleration_z +machine_max_feedrate_e +machine_max_feedrate_x +machine_max_feedrate_y +machine_max_feedrate_z +machine_max_jerk_e +machine_max_jerk_x +machine_max_jerk_y +machine_max_jerk_z +machine_max_junction_deviation +machine_min_extruding_rate +machine_min_travel_rate +brim_separation +brim_type +brim_width +bridge_speed +enable_dynamic_overhang_speeds +external_perimeter_speed +gap_fill_speed +infill_speed +ironing_speed +over_bridge_speed +overhang_speed_0 +overhang_speed_1 +overhang_speed_2 +overhang_speed_3 +perimeter_speed +small_perimeter_speed +solid_infill_speed +top_solid_infill_speed +dont_support_bridges +raft_contact_distance +raft_expansion +raft_first_layer_density +raft_first_layer_expansion +raft_layers +support_material +support_material_angle +support_material_auto +support_material_bottom_contact_distance +support_material_bottom_interface_layers +support_material_buildplate_only +support_material_closing_radius +support_material_contact_distance +support_material_enforce_layers +support_material_interface_contact_loops +support_material_interface_layers +support_material_interface_pattern +support_material_interface_spacing +support_material_interface_speed +support_material_pattern +support_material_spacing +support_material_speed +support_material_style +support_material_synchronize_layers +support_material_threshold +support_material_with_sheath +support_material_xy_spacing +support_tree_angle +support_tree_angle_slow +support_tree_branch_diameter +support_tree_branch_diameter_angle +support_tree_branch_diameter_double_wall +support_tree_branch_distance +support_tree_tip_diameter +support_tree_top_rate +wipe_into_infill +wipe_into_objects +idle_temperature