From a26f7214f9021e74d9c5df88cca5a0fa771b1325 Mon Sep 17 00:00:00 2001 From: lhye200 Date: Fri, 8 May 2026 01:16:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot --- all_keys.txt | 432 -------- app/__init__.py | 1 + app/routes/admin_routes.py | 14 +- app/routes/main_routes.py | 43 +- app/routes/printer_routes.py | 88 +- app/templates/admin/settings.html | 19 + app/templates/base.html | 4 +- app/templates/printer/control.html | 9 +- app/templates/printer/status.html | 68 +- app/utils/slice_engines/__init__.py | 8 +- app/utils/slice_engines/cura_engine.py | 91 +- .../slice_engines/prusa_slicer_engine.py | 101 +- app/utils/tasks.py | 14 +- fix_ini_files.py | 54 - llm_semantic_fix2.py | 246 ----- .../prusa_slicer/materials/CR-PETG.ini | 1 + .../prusa_slicer/materials/CR-PLA.ini | 1 + .../prusa_slicer/materials/Generic_PETG.ini | 1 + .../prusa_slicer/materials/Generic_TPU.ini | 1 + .../prusa_slicer/materials/Hyper_L-W_PLA.ini | 1 + .../materials/Hyper_Marble_PLA.ini | 1 + .../prusa_slicer/materials/Hyper_PETG.ini | 4 +- .../prusa_slicer/materials/Hyper_PLA.ini | 1 + .../materials/Hyper_Stardust_PLA.ini | 1 + .../materials/Soleyin_Ultra_PLA.ini | 1 + .../prusa_slicer/printers/Ender3_V3_SE.ini | 2 +- pru-all-cli.md | 997 ------------------ pru-cli.md | 905 ---------------- tmp_get_ini_from_json.py | 21 - valid_keys.txt | 417 -------- 30 files changed, 341 insertions(+), 3206 deletions(-) delete mode 100644 all_keys.txt delete mode 100644 fix_ini_files.py delete mode 100644 llm_semantic_fix2.py delete mode 100644 pru-all-cli.md delete mode 100644 pru-cli.md delete mode 100644 tmp_get_ini_from_json.py delete mode 100644 valid_keys.txt diff --git a/all_keys.txt b/all_keys.txt deleted file mode 100644 index 57830ba..0000000 --- a/all_keys.txt +++ /dev/null @@ -1,432 +0,0 @@ -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/__init__.py b/app/__init__.py index a3c84c6..aa79e88 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -57,6 +57,7 @@ def create_app(): app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../instance/aio_3d.db' app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'connect_args': {'timeout': 15}} app.config['UPLOAD_FOLDER'] = os.path.abspath(os.path.join(app.root_path, '..', 'uploads')) + app.config['PRINT_CONFIG_FOLDER'] = os.path.abspath(os.path.join(app.root_path, '..', 'print_config')) os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) diff --git a/app/routes/admin_routes.py b/app/routes/admin_routes.py index e084815..a8d78c7 100644 --- a/app/routes/admin_routes.py +++ b/app/routes/admin_routes.py @@ -47,6 +47,7 @@ def settings(): default_support_pattern = request.form.get('default_support_pattern', 'tree') default_quality = request.form.get('default_quality', 'base_global_standard.inst.cfg') default_material = request.form.get('default_material', '') + default_printer = request.form.get('default_printer', '') gcode_upload_folder = request.form.get('gcode_upload_folder', '').strip() slicer_engine = request.form.get('slicer_engine', 'cura') build_plate_model_path = request.form.get('build_plate_model_path', '').strip() @@ -61,6 +62,7 @@ def settings(): ('default_support_pattern', default_support_pattern), ('default_quality', default_quality), ('default_material', default_material), + ('default_printer', default_printer), ('gcode_upload_folder', gcode_upload_folder), ('slicer_engine', slicer_engine), ('build_plate_model_path', build_plate_model_path), @@ -187,15 +189,5 @@ def delete_user(user_id): flash(f'User {user.username} and all their files have been deleted.', 'success') return redirect(url_for('admin.users')) -def get_bed_dimensions(): - try: - path = os.path.join(current_app.root_path, '..', 'print_config', 'printers', 'creality_ender3v3se.def.json') - with open(path, 'r', encoding='utf-8') as f: - data = json.load(f) - w = data['overrides']['machine_width']['default_value'] - h = data['overrides']['machine_depth']['default_value'] - hd = data['overrides']['machine_height']['default_value'] - return w, h, hd - except: - return 200, 200, 200 + diff --git a/app/routes/main_routes.py b/app/routes/main_routes.py index ed683ce..0013c11 100644 --- a/app/routes/main_routes.py +++ b/app/routes/main_routes.py @@ -14,19 +14,19 @@ from app import i18n_dict # import trimesh.repair from app.utils.stl_simplifier import simplify_stl from app.routes.admin_routes import get_gcode_dir - +from app.utils.slice_engines import get_slicer_engine +from app.models import UserSession +from flask_login import logout_user main_bp = Blueprint('main', __name__) @main_bp.before_app_request def check_user_session(): if current_user.is_authenticated and not current_user.is_guest: - from app.models import UserSession session_token = session.get('user_session_token') if session_token: user_session = UserSession.query.filter_by(session_token=session_token).first() if not user_session or not user_session.is_active: - from flask_login import logout_user logout_user() session.pop('user_session_token', None) flash('Your session has been terminated.', 'warning') @@ -305,8 +305,11 @@ def preview_gcode(file_id): content = "".join(lines[:500]) # Preview first 500 lines if line_count > 500: content += f"\n... \n[Preview truncated. Total lines: {line_count}. Please download to view full file.]" - - w, h, hd = get_bed_dimensions() + + engine_name = SystemConfig.query.filter_by(key='slicer_engine').first() + if engine_name: + engine = get_slicer_engine(str(engine_name.value), current_app.config['PRINT_CONFIG_FOLDER']) + w, h, hd = engine.get_bed_dimensions() configs = {c.key: c.value for c in SystemConfig.query.all()} offset_x = float(configs.get('offset_x', '0.0')) offset_y = float(configs.get('offset_y', '0.0')) @@ -344,25 +347,17 @@ def delete_file(file_id): # --- Auth Routes --- -def get_bed_dimensions(): - try: - path = os.path.join(current_app.root_path, '..', 'print_config', 'printers', 'creality_ender3v3se.def.json') - with open(path, 'r', encoding='utf-8') as f: - data = json.load(f) - w = data['overrides']['machine_width']['default_value'] - h = data['overrides']['machine_depth']['default_value'] - hd = data['overrides']['machine_height']['default_value'] - return w, h, hd - except: - return 200, 200, 200 - @main_bp.route('/plater') @login_required def plater(): quota_mb, current_size = get_quota_info(current_user, 'gcode') quota_exceeded = (quota_mb > 0 and current_size >= quota_mb * 1024 * 1024) - w, h, hd = get_bed_dimensions() + engine_name = SystemConfig.query.filter_by(key='slicer_engine').first() + if engine_name: + engine = get_slicer_engine(str(engine_name.value), current_app.config['PRINT_CONFIG_FOLDER']) + w, h, hd = engine.get_bed_dimensions() + print(f"Bed dimensions: {w}x{h}x{hd}") configs = {c.key: c.value for c in SystemConfig.query.all()} @@ -574,12 +569,12 @@ def build_plate_model(): @main_bp.route('/api/engine_options/') @login_required def engine_options(engine_name): - from app.utils.slice_engines import get_slicer_engine - engine = get_slicer_engine(engine_name) - presets = engine.get_quality_presets(current_app) - patterns = engine.get_support_patterns(current_app) - materials = engine.get_materials(current_app) if hasattr(engine, 'get_materials') else [] - return jsonify({'presets': presets, 'support_patterns': patterns, 'materials': materials}) + engine = get_slicer_engine(engine_name, current_app.config['PRINT_CONFIG_FOLDER']) + presets = engine.get_quality_presets() + patterns = engine.get_support_patterns() + materials = engine.get_materials() if hasattr(engine, 'get_materials') else [] + printers = engine.get_all_printers() if hasattr(engine, 'get_all_printers') else [] + return jsonify({'presets': presets, 'support_patterns': patterns, 'materials': materials, 'printers': printers}) @main_bp.route('/account', methods=['GET', 'POST']) @login_required diff --git a/app/routes/printer_routes.py b/app/routes/printer_routes.py index 8677683..93db43b 100644 --- a/app/routes/printer_routes.py +++ b/app/routes/printer_routes.py @@ -19,6 +19,17 @@ def get_octo_client(): return OctoPrintClient(url.value, apikey.value) return None +def _enrich_job_data(job_data): + if job_data and job_data.get('job', {}).get('file', {}).get('name'): + from app.models import PrintFile + internal_name = job_data['job']['file']['name'] + print_file = PrintFile.query.filter_by(filename=internal_name).first() + if print_file and print_file.original_filename: + job_data['job']['file']['display_name'] = print_file.original_filename + else: + job_data['job']['file']['display_name'] = internal_name + return job_data + @printer_bp.route('/status') @login_required def status(): @@ -29,7 +40,7 @@ def status(): if client: try: status_data = client.get_printer_status() - job_data = client.get_job_info() + job_data = _enrich_job_data(client.get_job_info()) except Exception as e: error = str(e) else: @@ -37,6 +48,20 @@ def status(): return render_template('printer/status.html', status=status_data, job=job_data, error=error) +@printer_bp.route('/api/status_data') +@login_required +def api_status_data(): + client = get_octo_client() + if client: + try: + status_data = client.get_printer_status() + job_data = _enrich_job_data(client.get_job_info()) + return jsonify({'success': True, 'status': status_data, 'job': job_data}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + return jsonify({'success': False, 'error': 'OctoPrint is not configured.'}) + + def get_gcode_dir(): conf = SystemConfig.query.filter_by(key='gcode_upload_folder').first() if conf and conf.value and os.path.exists(conf.value): @@ -102,13 +127,45 @@ def prepare(): return render_template('printer/prepare.html', files=files, error=error) + +def check_printer_control_permission(client): + from flask_login import current_user + if current_user.is_admin: + return True, None + + try: + status_data = client.get_printer_status() + state = status_data.get('state', {}).get('text', '') + active_states = ['Printing', 'Paused', 'Pausing', 'Resuming', 'Cancelling'] + if state not in active_states: + return True, None + + job_info = client.get_job_info() + internal_name = job_info.get('job', {}).get('file', {}).get('name') + if not internal_name: + return False, "现在有任务正在运行,非管理员无法进行控制。" + + from app.models import PrintFile + pf = PrintFile.query.filter_by(filename=internal_name).first() + if pf and pf.user_id == current_user.id: + return True, None + else: + return False, "现在有任务正在运行,您无权进行此操作。只有管理员或任务发起者可以进行控制。" + except Exception: + pass + return True, None + @printer_bp.route('/api/print_file', methods=['POST']) + @login_required def api_print_file(): path = request.json.get('path') location = request.json.get('origin', 'local') client = get_octo_client() if client and path: + allowed, err_msg = check_printer_control_permission(client) + if not allowed: + return jsonify({"success": False, "error": err_msg}) try: client.select_file(location, path, print_after_select=True) return jsonify({"success": True}) @@ -117,14 +174,34 @@ def api_print_file(): return jsonify({"success": False, "error": "Not configured or missing path"}) @printer_bp.route('/control') -@login_required def control(): client = get_octo_client() webcam_url = None error = None if client: try: - webcam_url = client.get_webcam_stream_url() + raw_url = client.get_webcam_stream_url() + # If it's an absolute url pointing to the base url, strip it or proxy it via octo_proxy + from urllib.parse import urlparse, urlencode + parsed_raw = urlparse(raw_url) + base_config = SystemConfig.query.filter_by(key='octoprint_url').first() + if base_config and base_config.value: + base_url = base_config.value.rstrip('/') + parsed_base = urlparse(base_url) + # If they share the same host, replace with proxy + # Usually OctoPrint webcam streams are on the same host or relative + path = parsed_raw.path + if path.startswith('/'): + path = path[1:] + query = parsed_raw.query + + # build proxy url + if query: + webcam_url = url_for('printer.octo_proxy', path=path) + '?' + query + else: + webcam_url = url_for('printer.octo_proxy', path=path) + else: + webcam_url = raw_url except Exception as e: error = str(e) else: @@ -137,6 +214,9 @@ def api_command(): cmd = request.json.get('command') client = get_octo_client() if client and cmd: + allowed, err_msg = check_printer_control_permission(client) + if not allowed: + return jsonify({"success": False, "error": err_msg}) try: if cmd == 'home': client.home_axes() @@ -246,7 +326,7 @@ def octo_embed(): @printer_bp.route('/proxy/', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH']) @login_required def octo_proxy(path): - if not current_user.is_admin: + if current_user.is_guest: return "Unauthorized", 403 url_config = SystemConfig.query.filter_by(key='octoprint_url').first() diff --git a/app/templates/admin/settings.html b/app/templates/admin/settings.html index 4ca13f3..b97becf 100644 --- a/app/templates/admin/settings.html +++ b/app/templates/admin/settings.html @@ -41,6 +41,14 @@
{{ _('Absolute path to a custom build plate STL model to show in the plater. Leave empty to use none.') }}
+
+ + +
{{ _('Main configuration for the printer dimensions, limits and base profiles.') }}
+
+
@@ -160,11 +168,22 @@ document.addEventListener('DOMContentLoaded', function() { const qualitySelect = document.getElementById('default_quality'); const materialSelect = document.getElementById('default_material'); const patternSelect = document.getElementById('default_support_pattern'); + const printerSelect = document.getElementById('default_printer'); function updateOptions(engine) { fetch(`/api/engine_options/${engine}`) .then(res => res.json()) .then(data => { + const selPtr = printerSelect.getAttribute('data-selected'); + printerSelect.innerHTML = ''; + if(data.printers) { + data.printers.forEach(p => { + const opt = document.createElement('option'); + opt.value = p.id; opt.textContent = p.name; + printerSelect.appendChild(opt); + }); + } + if(selPtr) printerSelect.value = selPtr; const selQ = qualitySelect.getAttribute('data-selected'); qualitySelect.innerHTML = ''; data.presets.forEach(p => { diff --git a/app/templates/base.html b/app/templates/base.html index 2a335d6..8e73daa 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -107,13 +107,13 @@ {{ _('Control') }} - {% if current_user.is_authenticated and not current_user.is_guest %} + {% if current_user.is_authenticated and current_user.is_admin %} diff --git a/app/templates/printer/control.html b/app/templates/printer/control.html index 58dc365..759d741 100644 --- a/app/templates/printer/control.html +++ b/app/templates/printer/control.html @@ -17,8 +17,15 @@
{{ _('Live Webcam') }}
-
+
+ {% if current_user.is_guest %} +
+ +
{{ _('Please login to view the webcam stream.') }}
+
+ {% else %} {{ _('Loading webcam stream...') }} + {% endif %}
diff --git a/app/templates/printer/status.html b/app/templates/printer/status.html index be79417..cf09ade 100644 --- a/app/templates/printer/status.html +++ b/app/templates/printer/status.html @@ -21,7 +21,7 @@ {{ _('Current State') }}
-

{{ status.get('state', {}).get('text', 'Unknown') }}

+

{{ status.get('state', {}).get('text', 'Unknown') if status else 'Unknown' }}

@@ -33,43 +33,42 @@ {{ _('Temperatures') }}
- {% set temps = status.get('temperature', {}) %} + {% set temps = status.get('temperature', {}) if status else {} %}
{{ _('Tool/Nozzle') }}

- {{ temps.get('tool0', {}).get('actual', 0) }} °C - / {{ temps.get('tool0', {}).get('target', 0) }} °C + {{ temps.get('tool0', {}).get('actual', 0) }} °C + / {{ temps.get('tool0', {}).get('target', 0) }} °C

{{ _('Bed') }}

- {{ temps.get('bed', {}).get('actual', 0) }} °C - / {{ temps.get('bed', {}).get('target', 0) }} °C + {{ temps.get('bed', {}).get('actual', 0) }} °C + / {{ temps.get('bed', {}).get('target', 0) }} °C

-{% if job and job.get('job', {}).get('file', {}).get('name') %} -
+
{{ _('Active Print Job') }}
-
{{ job.get('job', {}).get('file', {}).get('name') }}
+
{{ job.get('job', {}).get('file', {}).get('display_name') or job.get('job', {}).get('file', {}).get('name') if job else '' }}
- {% set progress = job.get('progress', {}).get('completion', 0) %} + {% set progress = job.get('progress', {}).get('completion', 0) if job else 0 %} {% if progress == None %}{% set progress = 0 %}{% endif %}
-
- {{ "%.1f"|format(progress) }}% +
+ {{ "%.1f"|format(progress) }}%
- {{ _('Print Time:') }} {{ job.get('progress', {}).get('printTime', 0) }}s - {{ _('Time Left:') }} {{ job.get('progress', {}).get('printTimeLeft', 0) }}s + {{ _('Print Time:') }} {{ job.get('progress', {}).get('printTime', 0) if job else 0 }}s + {{ _('Time Left:') }} {{ job.get('progress', {}).get('printTimeLeft', 0) if job else 0 }}s
@@ -78,11 +77,47 @@
-{% endif %} {% endif %} {% endblock %} \ No newline at end of file diff --git a/app/utils/slice_engines/__init__.py b/app/utils/slice_engines/__init__.py index e968c57..dd0d3d0 100644 --- a/app/utils/slice_engines/__init__.py +++ b/app/utils/slice_engines/__init__.py @@ -8,7 +8,7 @@ def get_all_engines(): PrusaSlicerEngine() ] -def get_slicer_engine(engine_name="cura"): +def get_slicer_engine(engine_name="prusa", print_config_folder=None): """ Factory function to retrieve the requested slicing engine instance. Valid names: 'cura', 'prusa_slicer' @@ -16,9 +16,9 @@ def get_slicer_engine(engine_name="cura"): engine_name = engine_name.lower().strip() if engine_name in ['cura', 'cura_engine', 'curaengine']: - return CuraEngine() + return CuraEngine(print_config_folder) elif engine_name in ['prusa', 'prusa_slicer', 'prusaslicer']: - return PrusaSlicerEngine() + return PrusaSlicerEngine(print_config_folder) else: # Default fallback - return CuraEngine() + return PrusaSlicerEngine(print_config_folder) diff --git a/app/utils/slice_engines/cura_engine.py b/app/utils/slice_engines/cura_engine.py index 64bc72c..9b831a7 100644 --- a/app/utils/slice_engines/cura_engine.py +++ b/app/utils/slice_engines/cura_engine.py @@ -6,11 +6,12 @@ import configparser from app.utils.conf_parse import ConfParse class CuraEngine: - def __init__(self): + def __init__(self, print_config_folder=None): self.name = "cura" self.display_name = "UltiMaker Cura" self.is_available = self._check_available() - + self.print_config_folder = os.path.join(print_config_folder, "cura_engine") if print_config_folder else None + def _check_available(self): try: # check if CuraEngine is available in PATH @@ -21,13 +22,6 @@ class CuraEngine: self.display_name = "UltiMaker Cura" self.is_available = self._check_available() - def _check_available(self): - try: - # check if CuraEngine is available in PATH - result = subprocess.run(["CuraEngine", "help"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - return result.returncode == 0 or b"Usage:" in result.stdout or b"Usage:" in result.stderr - except (FileNotFoundError, OSError): - return False def slice(self, app, stl_filepath, gcode_filepath, **kwargs): """ @@ -41,23 +35,28 @@ class CuraEngine: tmp_def_path = None try: - base_config_path = os.path.abspath(os.path.join(app.root_path, '..', 'print_config')) - print_config_path = os.path.join(base_config_path, 'cura_engine') - printers_path = os.path.join(print_config_path, 'printers') - extruders_path = os.path.join(print_config_path, 'extruders') - materials_path = os.path.join(print_config_path, 'materials') - presets_path = os.path.join(print_config_path, 'quality') - variants_path = os.path.join(print_config_path, 'variants') + printers_path = os.path.join(self.print_config_folder, 'printers') if self.print_config_folder else None + extruders_path = os.path.join(self.print_config_folder, 'extruders') if self.print_config_folder else None + materials_path = os.path.join(self.print_config_folder, 'materials') if self.print_config_folder else None + presets_path = os.path.join(self.print_config_folder, 'quality') if self.print_config_folder else None + variants_path = os.path.join(self.print_config_folder, 'variants') if self.print_config_folder else None env = os.environ.copy() env["CURA_ENGINE_SEARCH_PATH"] = f"{printers_path}:{extruders_path}:{materials_path}:{presets_path}:{variants_path}" + + from app.models import SystemConfig + db_printer = SystemConfig.query.filter_by(key='default_printer').first() + p_val = db_printer.value if db_printer and db_printer.value else 'creality_ender3v3se.def.json' + if not p_val.endswith('.def.json'): p_val += '.def.json' + def_files = [ os.path.join(printers_path, "fdmprinter.def.json"), os.path.join(printers_path, "fdmextruder.def.json"), os.path.join(printers_path, "creality_base.def.json"), - os.path.join(printers_path, "creality_ender3v3se.def.json") + os.path.join(printers_path, p_val) ] + inst_files_list = [] quality_type = None @@ -82,19 +81,19 @@ class CuraEngine: if os.path.exists(m_path): inst_files_list.append(m_path) if variant_type: variant_d = variant_type.split("mm")[0] - v_path = os.path.join(variants_path, "creality", f"creality_ender3v3se_{variant_d}.inst.cfg") + v_path = os.path.join(variants_path, "creality", f"{p_val.replace('.def.json', '')}_{variant_d}.inst.cfg") if os.path.exists(v_path): inst_files_list.append(v_path) if support_pattern == 'tree': - t_path = os.path.join(print_config_path, 'supports', 'tree.inst.cfg') - if os.path.exists(t_path): inst_files_list.append(t_path) + t_path = os.path.join(self.print_config_folder, 'supports', 'tree.inst.cfg') if self.print_config_folder else None + if t_path and os.path.exists(t_path): inst_files_list.append(t_path) elif support_pattern and support_pattern != 'false': - n_path = os.path.join(print_config_path, 'supports', 'normal.inst.cfg') - if os.path.exists(n_path): inst_files_list.append(n_path) + n_path = os.path.join(self.print_config_folder, 'supports', 'normal.inst.cfg') if self.print_config_folder else None + if n_path and os.path.exists(n_path): inst_files_list.append(n_path) if quality_preset and quality_type: - g_path = os.path.join(presets_path, 'creality', 'globals', f"{quality_type}.inst.cfg") - if os.path.exists(g_path): inst_files_list.append(g_path) + g_path = os.path.join(self.print_config_folder, 'creality', 'globals', f"{quality_type}.inst.cfg") if self.print_config_folder else None + if g_path and os.path.exists(g_path): inst_files_list.append(g_path) if quality_preset and preset_path and os.path.exists(preset_path): inst_files_list.append(preset_path) @@ -192,10 +191,10 @@ class CuraEngine: except Exception as e: app.logger.error(f"Failed to delete temp JSON config {tmp_def_path}: {e}") - def get_quality_presets(self, app): + def get_quality_presets(self): try: - path = os.path.join(app.root_path, '..', 'print_config', 'cura_engine', 'quality', 'creality', 'presets') - if not os.path.exists(path): return [] + path = os.path.join(self.print_config_folder, 'quality', 'creality', 'presets') if self.print_config_folder else None + if not path or not os.path.exists(path): return [] files = [f for f in os.listdir(path) if f.endswith('.inst.cfg')] presets = [] for f in files: @@ -205,7 +204,7 @@ class CuraEngine: except: return [] - def get_support_patterns(self, app): + def get_support_patterns(self): return [ {'id': 'tree', 'name': 'Tree'}, {'id': 'lines', 'name': 'Lines'}, @@ -219,10 +218,10 @@ class CuraEngine: {'id': 'octagon', 'name': 'Octagon'} ] - def get_materials(self, app): + def get_materials(self): try: - path = os.path.join(app.root_path, '..', 'print_config', 'cura_engine', 'materials') - if not os.path.exists(path): return [] + path = os.path.join(self.print_config_folder, 'materials') if self.print_config_folder else None + if not path or not os.path.exists(path): return [] files = [f for f in os.listdir(path) if f.endswith('.inst.cfg')] materials = [] for f in files: @@ -231,3 +230,33 @@ class CuraEngine: return materials except: return [] + + def get_bed_dimensions(self): + from app.models import SystemConfig + import json + try: + db_printer = SystemConfig.query.filter_by(key='default_printer').first() + p_val = db_printer.value if db_printer and db_printer.value else 'creality_ender3v3se.def.json' + if not p_val.endswith('.def.json'): p_val += '.def.json' + path = os.path.join(self.print_config_folder, 'printers', p_val) + with open(path, 'r', encoding='utf-8') as f: + data = json.load(f) + w = data['overrides']['machine_width']['default_value'] + h = data['overrides']['machine_depth']['default_value'] + hd = data['overrides']['machine_height']['default_value'] + return w, h, hd + except: + pass + return 220, 220, 250 + def get_all_printers(self): + try: + path = os.path.join(self.print_config_folder, 'printers') if self.print_config_folder else None + if not path or not os.path.exists(path): return [] + files = [f for f in os.listdir(path) if f.endswith('.inst.cfg')] + printers = [] + for f in files: + printers.append({'id': f, 'name': f.replace('..def.json', '').replace('generic_', 'Generic ').replace('_', ' ').title()}) + printers.sort(key=lambda x: x['name']) + return printers + except: + return [] \ No newline at end of file diff --git a/app/utils/slice_engines/prusa_slicer_engine.py b/app/utils/slice_engines/prusa_slicer_engine.py index 55b8e42..90f72cf 100644 --- a/app/utils/slice_engines/prusa_slicer_engine.py +++ b/app/utils/slice_engines/prusa_slicer_engine.py @@ -4,11 +4,12 @@ import configparser import uuid class PrusaSlicerEngine: - def __init__(self): + def __init__(self, print_config_folder=None): self.name = "prusa_slicer" self.display_name = "PrusaSlicer" self.is_available = self._check_available() - + self.print_config_folder = os.path.join(print_config_folder, 'prusa_slicer') if print_config_folder else None + def _check_available(self): try: result = subprocess.run(["prusa-slicer", "--help"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) @@ -47,18 +48,22 @@ class PrusaSlicerEngine: # print(support_pattern) all_configs = {} - printer_ini = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'printers', 'Ender3_V3_SE.ini') - if os.path.exists(printer_ini): + from app.models import SystemConfig + db_printer = SystemConfig.query.filter_by(key='default_printer').first() + p_val = db_printer.value if db_printer and db_printer.value else 'Ender3_V3_SE' + if not p_val.endswith('.ini'): p_val += '.ini' + printer_ini = os.path.join(self.print_config_folder, 'printers', p_val) if self.print_config_folder else None + if printer_ini and os.path.exists(printer_ini): self.add_ini_keys(printer_ini, 'settings', all_configs) if quality_preset: - q_ini = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'quality', f"{quality_preset}.ini") - if os.path.exists(q_ini): + q_ini = os.path.join(self.print_config_folder, 'quality', f"{quality_preset}.ini") if self.print_config_folder else None + if q_ini and os.path.exists(q_ini): self.add_ini_keys(q_ini, 'settings', all_configs) if material_preset: - m_ini = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'materials', f"{material_preset}.ini") - if os.path.exists(m_ini): + m_ini = os.path.join(self.print_config_folder, 'materials', f"{material_preset}.ini") if self.print_config_folder else None + if m_ini and os.path.exists(m_ini): self.add_ini_keys(m_ini, 'settings', all_configs) if infill_density is not None: @@ -69,20 +74,19 @@ class PrusaSlicerEngine: if support_enable == 'buildplate': command.append("--support-material-buildplate-only") # PrusaSlicer equivalent for tree supports => organic - support_pattern_ini = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'supports', f'{support_pattern}.ini') - if os.path.exists(support_pattern_ini): + support_pattern_ini = os.path.join(self.print_config_folder, 'supports', f'{support_pattern}.ini') if self.print_config_folder else None + if support_pattern_ini and os.path.exists(support_pattern_ini): self.add_ini_keys(support_pattern_ini, 'settings', all_configs) else: # Load the default no_support.ini if no support is enabled - no_support_ini = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'supports', 'no_support.ini') - if os.path.exists(no_support_ini): + no_support_ini = os.path.join(self.print_config_folder, 'supports', 'no_support.ini') if self.print_config_folder else None + if no_support_ini and os.path.exists(no_support_ini): self.add_ini_keys(no_support_ini, 'settings', all_configs) else: all_configs['support_material'] = '0' tmp_ini_filename = f"tmp_{uuid.uuid4().hex}.ini" tmp_ini_path = os.path.join(app.config['UPLOAD_FOLDER'], tmp_ini_filename) - print(f'****tmp_ini_path: {tmp_ini_path}') with open(tmp_ini_path, 'w') as f: for key, value in all_configs.items(): f.write(f"{key} = {value}\n") @@ -108,11 +112,11 @@ class PrusaSlicerEngine: app.logger.error(f"PrusaSlicer Exception: {e}") return False, str(e) - def get_quality_presets(self, app): - all_files = [f for f in os.listdir(os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer',"quality")) if f.endswith('.ini')] + def get_quality_presets(self): + all_files = [f for f in os.listdir(os.path.join(self.print_config_folder, "quality")) if f.endswith('.ini')] if self.print_config_folder else [] quality_presets = [] for file in all_files: - with open(os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', "quality", file), 'r') as f: + with open(os.path.join(self.print_config_folder, "quality", file), 'r') as f: config = configparser.ConfigParser() config.read_file(f) if 'metadata' in config: @@ -122,11 +126,11 @@ class PrusaSlicerEngine: }) return quality_presets - def get_support_patterns(self, app): - all_files = [f for f in os.listdir(os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer',"supports")) if f.endswith('.ini')] + def get_support_patterns(self): + all_files = [f for f in os.listdir(os.path.join(self.print_config_folder,"supports")) if f.endswith('.ini')] if self.print_config_folder else [] support_presets = [] for file in all_files: - with open(os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', "supports", file), 'r') as f: + with open(os.path.join(self.print_config_folder, "supports", file), 'r') as f: config = configparser.ConfigParser() config.read_file(f) if 'metadata' in config: @@ -136,15 +140,54 @@ class PrusaSlicerEngine: }) return support_presets - def get_materials(self, app): + def get_materials(self): + all_files = [f for f in os.listdir(os.path.join(self.print_config_folder, "materials")) if f.endswith('.ini')] if self.print_config_folder else [] + materials = [] + for file in all_files: + with open(os.path.join(self.print_config_folder, "materials", file), 'r') as f: + config = configparser.ConfigParser() + config.read_file(f) + if 'metadata' in config: + materials.append({ + 'id': file.replace('.ini', ''), + 'name': config['metadata'].get('show_name', file.replace('.ini', '').replace('_', ' ')) + }) + return materials + + + def get_bed_dimensions(self): + from app.models import SystemConfig + import configparser try: - path = os.path.join(app.root_path, '..', 'print_config', 'prusa_slicer', 'materials') - if not os.path.exists(path): return [] - files = [f for f in os.listdir(path) if f.endswith('.ini')] - materials = [] - for f in files: - materials.append({'id': f.replace('.ini', ''), 'name': f.replace('.ini', '').replace('_', ' ')}) - materials.sort(key=lambda x: x['name']) - return materials + db_printer = SystemConfig.query.filter_by(key='default_printer').first() + p_val = db_printer.value if db_printer and db_printer.value else 'Ender3_V3_SE.ini' + if not p_val.endswith('.ini'): p_val += '.ini' + path = os.path.join(self.print_config_folder, 'printers', p_val) + config = configparser.ConfigParser() + config.read(path) + if 'settings' in config and 'bed_shape' in config['settings']: + # format is usually like 0x0,220x0,220x220,0x220 + coords = config['settings']['bed_shape'].split(',') + max_x = max([float(c.split('x')[0]) for c in coords]) + max_y = max([float(c.split('x')[1]) for c in coords]) + # height + h = 250 + if 'max_print_height' in config['settings']: + h = float(config['settings']['max_print_height']) + return max_x, max_y, h except: - return [] + pass + return 220, 220, 250 + def get_all_printers(self): + all_files = [f for f in os.listdir(os.path.join(self.print_config_folder, "printers")) if f.endswith('.ini')] if self.print_config_folder else [] + printers = [] + for file in all_files: + with open(os.path.join(self.print_config_folder, "printers", file), 'r') as f: + config = configparser.ConfigParser() + config.read_file(f) + if 'metadata' in config: + printers.append({ + 'id': file.replace('.ini', ''), + 'name': config['metadata'].get('show_name', file.replace('.ini', '').replace('_', ' ')) + }) + return printers diff --git a/app/utils/tasks.py b/app/utils/tasks.py index ef89490..569e3a8 100644 --- a/app/utils/tasks.py +++ b/app/utils/tasks.py @@ -6,7 +6,7 @@ from app.utils.conf_parse import ConfParse import json import uuid import configparser - +from app.utils.slice_engines import get_slicer_engine import os @@ -44,17 +44,15 @@ def slice_stl_task(file_id, stl_filepath, quality_preset=None, material_preset=N # Remove DB session to avoid locking the sqlite db during long slicing operations db.session.remove() - - from app.utils.slice_engines import get_slicer_engine - + try: - # Optionally fetch the preferred engine from db conf or just default to cura - # For now default to cura or whichever is passed via kwargs if implemented later + # Optionally fetch the preferred engine from db conf or just default to prusa + # For now default to prusa or whichever is passed via kwargs if implemented later conf_engine = SystemConfig.query.filter_by(key='slicer_engine').first() - engine_name = conf_engine.value if conf_engine and conf_engine.value else "cura" + engine_name = conf_engine.value if conf_engine and conf_engine.value else "prusa" db.session.remove() - slicer = get_slicer_engine(engine_name) + slicer = get_slicer_engine(engine_name,app.config['PRINT_CONFIG_FOLDER']) success, err_msg = slicer.slice( app=app, diff --git a/fix_ini_files.py b/fix_ini_files.py deleted file mode 100644 index d2dd8d1..0000000 --- a/fix_ini_files.py +++ /dev/null @@ -1,54 +0,0 @@ -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_fix2.py b/llm_semantic_fix2.py deleted file mode 100644 index 0c2f0c8..0000000 --- a/llm_semantic_fix2.py +++ /dev/null @@ -1,246 +0,0 @@ -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/prusa_slicer/materials/CR-PETG.ini b/print_config/prusa_slicer/materials/CR-PETG.ini index 6521e4c..2899656 100644 --- a/print_config/prusa_slicer/materials/CR-PETG.ini +++ b/print_config/prusa_slicer/materials/CR-PETG.ini @@ -6,6 +6,7 @@ filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 +bed_temperature = 70 first_layer_bed_temperature = 70 ;;;cool_plate_temp = 70 ;;;eng_plate_temp = 0 diff --git a/print_config/prusa_slicer/materials/CR-PLA.ini b/print_config/prusa_slicer/materials/CR-PLA.ini index 60346c4..f2fdf66 100644 --- a/print_config/prusa_slicer/materials/CR-PLA.ini +++ b/print_config/prusa_slicer/materials/CR-PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/materials/Generic_PETG.ini b/print_config/prusa_slicer/materials/Generic_PETG.ini index ff15f55..43c80ba 100644 --- a/print_config/prusa_slicer/materials/Generic_PETG.ini +++ b/print_config/prusa_slicer/materials/Generic_PETG.ini @@ -6,6 +6,7 @@ filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 +bed_temperature = 70 first_layer_bed_temperature = 70 ;;;cool_plate_temp = 60 ;;;eng_plate_temp = 0 diff --git a/print_config/prusa_slicer/materials/Generic_TPU.ini b/print_config/prusa_slicer/materials/Generic_TPU.ini index 9e67518..aeeff3d 100644 --- a/print_config/prusa_slicer/materials/Generic_TPU.ini +++ b/print_config/prusa_slicer/materials/Generic_TPU.ini @@ -5,6 +5,7 @@ filament_type = tpu [settings] idle_temperature = 130 +bed_temperature = 55 first_layer_bed_temperature = 55 ;;;cool_plate_temp = 30 ;;;eng_plate_temp = 30 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 0765bd6..79b2f30 100644 --- a/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_L-W_PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini b/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini index 12513d4..a8d3ad9 100644 --- a/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_Marble_PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/materials/Hyper_PETG.ini b/print_config/prusa_slicer/materials/Hyper_PETG.ini index 0f96dcd..4616a91 100644 --- a/print_config/prusa_slicer/materials/Hyper_PETG.ini +++ b/print_config/prusa_slicer/materials/Hyper_PETG.ini @@ -6,6 +6,8 @@ filament_type = petg [settings] ; filament_adhesiveness_category = 300 idle_temperature = 160 +bed_temperature = 70 +first_layer_bed_temperature = 70 ;;;cool_plate_temp = 60 ;;;eng_plate_temp = 0 ;;;hot_plate_temp = 70 @@ -49,8 +51,6 @@ max_fan_speed = 80 min_fan_speed = 40 ;;;slow_down_min_speed = 10 slowdown_below_layer_time = 8 -bed_temperature = 70 -first_layer_bed_temperature = 70 ;;;filament_start_gcode = ;filament start gcode\n temperature = 240 ;;;temperature_vitrification = 80 diff --git a/print_config/prusa_slicer/materials/Hyper_PLA.ini b/print_config/prusa_slicer/materials/Hyper_PLA.ini index 9e8dfa0..b06f267 100644 --- a/print_config/prusa_slicer/materials/Hyper_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini b/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini index abb1e50..2208601 100644 --- a/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini +++ b/print_config/prusa_slicer/materials/Hyper_Stardust_PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini b/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini index f01c298..0ffa8d3 100644 --- a/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini +++ b/print_config/prusa_slicer/materials/Soleyin_Ultra_PLA.ini @@ -5,6 +5,7 @@ filament_type = pla [settings] idle_temperature = 150 +bed_temperature = 60 first_layer_bed_temperature = 60 ;;;cool_plate_temp = 50 ;;;eng_plate_temp = 45 diff --git a/print_config/prusa_slicer/printers/Ender3_V3_SE.ini b/print_config/prusa_slicer/printers/Ender3_V3_SE.ini index c7804f5..822067e 100644 --- a/print_config/prusa_slicer/printers/Ender3_V3_SE.ini +++ b/print_config/prusa_slicer/printers/Ender3_V3_SE.ini @@ -48,7 +48,7 @@ single_extruder_multi_material = 1 start_filament_gcode = ;Do nothing wipe = 1 before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n -start_gcode = M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S{first_layer_bed_temperature[0]} ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S{first_layer_temperature[0]} ;Set final nozzle temp \nG1 X-10 Y20 Z3 F5000.0 ;Move to out position \nM190 S{first_layer_bed_temperature[0]} ;Wait for bed temp to stabilize \nM109 S{temperature[0]} ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \n G1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800 +start_gcode = M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S{first_layer_bed_temperature[0]} ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S{first_layer_temperature[0]} ;Set final nozzle temp \nG1 X-13 Y20 Z3 F5000.0 ;Move to out position \nM190 S{first_layer_bed_temperature[0]} ;Wait for bed temp to stabilize \nM109 S{temperature[0]} ;Wait for nozzle temp to stabilize \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \n G1 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800 end_gcode = G91 ;Relative positionning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z10 ;Raise Z more \nG90 ;Absolute positionning \n \nG1 X0 Y220 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \n \nM84 X Y E ;Disable all steppers but Z machine_max_acceleration_travel = 2000,2000 pause_print_gcode = M25 diff --git a/pru-all-cli.md b/pru-all-cli.md deleted file mode 100644 index 54e21f6..0000000 --- a/pru-all-cli.md +++ /dev/null @@ -1,997 +0,0 @@ -Actions: - --export-3mf Export the model(s) as 3MF. - --export-amf Export the model(s) as AMF. - --export-gcode, --gcode, -g - Slice the model and export toolpaths as G-code. - --export-obj Export the model(s) as OBJ. - --export-sla, --sla Slice the model and export SLA printing layers as PNG. - --export-stl Export the model(s) as STL. - --gcodeviewer Visualize an already sliced and saved G-code - --help, -h Show this help. - --help-fff Show the full list of print/G-code configuration options. - --help-sla Show the full list of SLA print configuration options. - --info Write information about the model to the console. - --save ABCD Save configuration to the specified file. - --slice, -s Slice the model as FFF or SLA based on the printer_technology configuration - value. - -Transform options: - --align-xy X,Y Align the model to the given point. - --center X,Y Center the print around the given center. - --cut N Cut model at the given Z. - --dont-arrange Do not rearrange the given models before merging and keep their original XY - coordinates. - --duplicate N Multiply copies by this factor. - --duplicate-grid X,Y - Multiply copies by creating a grid. - --ensure-on-bed Lift the object above the bed when it is partially below. Enabled by default, - use --no-ensure-on-bed to disable. - --merge, -m Arrange the supplied models in a plate and merge them in a single model in order - to perform actions once. - --repair Try to repair any non-manifold meshes (this option is implicitly added whenever - we need to slice the model to perform the requested action). - --rotate N Rotation angle around the Z axis in degrees. - --rotate-x N Rotation angle around the X axis in degrees. - --rotate-y N Rotation angle around the Y axis in degrees. - --scale N Scaling factor or percentage. - --scale-to-fit X,Y,Z - Scale to fit the given volume. - --split Detect unconnected parts in the given model(s) and split them into separate - objects. - -Other options: - --config-compatibility - This version of PrusaSlicer may not understand configurations produced by the - newest PrusaSlicer versions. For example, newer PrusaSlicer may extend the list - of supported firmware flavors. One may decide to bail out or to substitute an - unknown value with a default silently or verbosely. (disable, enable, - enable_silent; default: enable) - --datadir ABCD Load and store settings at the given directory. This is useful for maintaining - different profiles or including configurations from a network storage. - --ignore-nonexistent-config - Do not fail if a file supplied to --load does not exist. - --load ABCD Load configuration from the specified file. It can be used more than once to - load options from multiple files. - --loglevel N Sets logging sensitivity. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace - For example. loglevel=2 logs fatal, error and warning level messages. - --output ABCD, -o ABCD - The file where the output will be written (if not specified, it will be based on - the input file). - --single-instance If enabled, the command line arguments are sent to an existing instance of GUI - PrusaSlicer, or an existing PrusaSlicer window is activated. Overrides the - "single_instance" configuration value from application preferences. - -Print options are processed in the following order: - 1) Config keys from the command line, for example --fill-pattern=stars - (highest priority, overwrites everything below) - 2) Config files loaded with --load - 3) Config values loaded from amf or 3mf files - -Misc options: - --avoid-crossing-perimeters - Optimize travel moves in order to minimize the crossing of perimeters. This is - mostly useful with Bowden extruders which suffer from oozing. This feature slows - down both the print and the G-code generation. - --bed-custom-model ABCD - - --bed-custom-texture ABCD - - --bed-shape (default: 0x0,200x0,200x200,0x200) - --bed-temperature N Bed temperature for layers after the first one. Set this to zero to disable bed - temperature control commands in the output. (°C, default: 0) - --before-layer-gcode ABCD - This custom code is inserted at every layer change, right before the Z move. - Note that you can use placeholder variables for all Slic3r settings as well as - [layer_num] and [layer_z]. - --between-objects-gcode ABCD - This code is inserted between objects when using sequential printing. By default - extruder and bed temperature are reset using non-wait command; however if M104, - M109, M140 or M190 are detected in this custom code, Slic3r will not add - temperature commands. Note that you can use placeholder variables for all Slic3r - settings, so you can put a "M109 S[first_layer_temperature]" command wherever - you want. - --bridge-acceleration N - This is the acceleration your printer will use for bridges. Set zero to disable - acceleration control for bridges. (mm/s², default: 0) - --bridge-fan-speed N - This fan speed is enforced during all bridges and overhangs. (%, default: 100) - --clip-multipart-objects - When printing multi-material objects, this settings will make Slic3r to clip the - overlapping object parts one by the other (2nd part will be clipped by the 1st, - 3rd part will be clipped by the 1st and 2nd etc). - --color-change-gcode ABCD - This G-code will be used as a code for the color change (default: M600) - --colorprint-heights N - Heights at which a filament change is to occur. (default: ) - --complete-objects When printing multiple objects or copies, this feature will complete each object - before moving onto next one (and starting it from its bottom layer). This - feature is useful to avoid the risk of ruined prints. Slic3r should warn and - prevent you from extruder collisions, but beware. - --cooling This flag enables the automatic cooling logic that adjusts print speed and fan - speed according to layer printing time. (default: 1) - --cooling-tube-length N - Length of the cooling tube to limit space for cooling moves inside it. (mm, - default: 5) - --cooling-tube-retraction N - Distance of the center-point of the cooling tube from the extruder tip. (mm, - default: 91.5) - --default-acceleration N - This is the acceleration your printer will be reset to after the role-specific - acceleration values are used (perimeter/infill). Set zero to prevent resetting - acceleration at all. (mm/s², default: 0) - --deretract-speed N The speed for loading of a filament into extruder after retraction (it only - applies to the extruder motor). If left to zero, the retraction speed is used. - (mm/s, default: 0) - --disable-fan-first-layers N - You can set this to a positive value to disable fan at all during the first - layers, so that it does not make adhesion worse. (layers, default: 3) - --draft-shield With draft shield active, the skirt will be printed skirt_distance from the - object, possibly intersecting brim. Enabled = skirt is as tall as the highest - printed object. Limited = skirt is as tall as specified by skirt_height. This is - useful to protect an ABS or ASA print from warping and detaching from print bed - due to wind draft. (disabled, limited, enabled; default: disabled) - --duplicate-distance N - Distance used for the auto-arrange feature of the plater. (mm, default: 6) - --end-filament-gcode ABCD - This end procedure is inserted at the end of the output file, before the printer - end gcode (and before any toolchange from this filament in case of multimaterial - printers). Note that you can use placeholder variables for all PrusaSlicer - settings. If you have multiple extruders, the gcode is processed in extruder - order. (default: "; Filament-specific end gcode \n;END gcode for filament\n") - --end-gcode ABCD This end procedure is inserted at the end of the output file. Note that you can - use placeholder variables for all PrusaSlicer settings. (default: M104 S0 ; turn - off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n) - --extra-loading-move N - When set to zero, the distance the filament is moved from parking position - during load is exactly the same as it was moved back during unload. When - positive, it is loaded further, if negative, the loading move is shorter than - unloading. (mm, default: -2) - --extruder-clearance-height N - Set this to the vertical distance between your nozzle tip and (usually) the X - carriage rods. In other words, this is the height of the clearance cylinder - around your extruder, and it represents the maximum depth the extruder can peek - before colliding with other printed objects. (mm, default: 20) - --extruder-clearance-radius N - Set this to the clearance radius around your extruder. If the extruder is not - centered, choose the largest value for safety. This setting is used to check for - collisions and to display the graphical preview in the plater. (mm, default: 20) - --extruder-colour ABCD - This is only used in the Slic3r interface as a visual help. (default: "") - --extruder-offset If your firmware doesn't handle the extruder displacement you need the G-code to - take it into account. This option lets you specify the displacement of each - extruder with respect to the first one. It expects positive coordinates (they - will be subtracted from the XY coordinate). (mm, default: 0x0) - --extrusion-axis ABCD - Use this option to set the axis letter associated to your printer's extruder - (usually E but some printers use A). (default: E) - --extrusion-multiplier N - This factor changes the amount of flow proportionally. You may need to tweak - this setting to get nice surface finish and correct single wall widths. Usual - values are between 0.9 and 1.1. If you think you need to change this more, check - filament diameter and your firmware E steps. (default: 1) - --fan-always-on If this is enabled, fan will never be disabled and will be kept running at least - at its minimum speed. Useful for PLA, harmful for ABS. (default: 0) - --fan-below-layer-time N - If layer print time is estimated below this number of seconds, fan will be - enabled and its speed will be calculated by interpolating the minimum and - maximum speeds. (approximate seconds, default: 60) - --filament-colour ABCD - This is only used in the Slic3r interface as a visual help. (default: #29B2B2) - --filament-cooling-final-speed N - Cooling moves are gradually accelerating towards this speed. (mm/s, default: - 3.4) - --filament-cooling-initial-speed N - Cooling moves are gradually accelerating beginning at this speed. (mm/s, - default: 2.2) - --filament-cooling-moves N - Filament is cooled by being moved back and forth in the cooling tubes. Specify - desired number of these moves. (default: 4) - --filament-cost N Enter your filament cost per kg here. This is only for statistical information. - (money/kg, default: 0) - --filament-density N - Enter your filament density here. This is only for statistical information. A - decent way is to weigh a known length of filament and compute the ratio of the - length to volume. Better is to calculate the volume directly through - displacement. (g/cm³, default: 0) - --filament-deretract-speed N - The speed for loading of a filament into extruder after retraction (it only - applies to the extruder motor). If left to zero, the retraction speed is used. - (mm/s, default: 0) - --filament-diameter N - Enter your filament diameter here. Good precision is required, so use a caliper - and do multiple measurements along the filament, then compute the average. (mm, - default: 1.75) - --filament-load-time N - Time for the printer firmware (or the Multi Material Unit 2.0) to load a new - filament during a tool change (when executing the T code). This time is added to - the total print time by the G-code time estimator. (s, default: 0) - --filament-loading-speed N - Speed used for loading the filament on the wipe tower. (mm/s, default: 28) - --filament-loading-speed-start N - Speed used at the very beginning of loading phase. (mm/s, default: 3) - --filament-max-volumetric-speed N - Maximum volumetric speed allowed for this filament. Limits the maximum - volumetric speed of a print to the minimum of print and filament volumetric - speed. Set to zero for no limit. (mm³/s, default: 0) - --filament-minimal-purge-on-wipe-tower N - After a tool change, the exact position of the newly loaded filament inside the - nozzle may not be known, and the filament pressure is likely not yet stable. - Before purging the print head into an infill or a sacrificial object, Slic3r - will always prime this amount of material into the wipe tower to produce - successive infill or sacrificial object extrusions reliably. (mm³, default: 15) - --filament-notes ABCD - You can put your notes regarding the filament here. (default: "") - --filament-ramming-parameters ABCD - This string is edited by RammingDialog and contains ramming specific parameters. - (default: "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-before-travel N - Retraction is not triggered when travel moves are shorter than this length. (mm, - default: 2) - --filament-retract-before-wipe - With bowden extruders, it may be wise to do some amount of quick retract before - doing the wipe movement. (%, default: 0%) - --filament-retract-layer-change - This flag enforces a retraction whenever a Z move is done. (default: 0) - --filament-retract-length N - When retraction is triggered, filament is pulled back by the specified amount - (the length is measured on raw filament, before it enters the extruder). (mm - (zero to disable), default: 2) - --filament-retract-lift N - If you set this to a positive value, Z is quickly raised every time a retraction - is triggered. When using multiple extruders, only the setting for the first - extruder will be considered. (mm, default: 0) - --filament-retract-lift-above N - If you set this to a positive value, Z lift will only take place above the - specified absolute Z. You can tune this setting for skipping lift on the first - layers. (mm, default: 0) - --filament-retract-lift-below N - If you set this to a positive value, Z lift will only take place below the - specified absolute Z. You can tune this setting for limiting lift to the first - layers. (mm, default: 0) - --filament-retract-restart-extra N - When the retraction is compensated after the travel move, the extruder will push - this additional amount of filament. This setting is rarely needed. (mm, default: - 0) - --filament-retract-speed N - The speed for retractions (it only applies to the extruder motor). (mm/s, - default: 40) - --filament-soluble Soluble material is most likely used for a soluble support. (default: 0) - --filament-spool-weight N - Enter weight of the empty filament spool. One may weigh a partially consumed - filament spool before printing and one may compare the measured weight with the - calculated weight of the filament with the spool to find out whether the amount - of filament on the spool is sufficient to finish the print. (g, default: 0) - --filament-toolchange-delay N - Time to wait after the filament is unloaded. May help to get reliable - toolchanges with flexible materials that may need more time to shrink to - original dimensions. (s, default: 0) - --filament-type ABCD - The filament material type for use in custom G-codes. (PLA, PET, ABS, ASA, FLEX, - HIPS, EDGE, NGEN, PA, NYLON, PVA, PC, PP, PEI, PEEK, PEKK, POM, PSU, PVDF, - SCAFF; default: PLA) - --filament-unload-time N - Time for the printer firmware (or the Multi Material Unit 2.0) to unload a - filament during a tool change (when executing the T code). This time is added to - the total print time by the G-code time estimator. (s, default: 0) - --filament-unloading-speed N - Speed used for unloading the filament on the wipe tower (does not affect initial - part of unloading just after ramming). (mm/s, default: 90) - --filament-unloading-speed-start N - Speed used for unloading the tip of the filament immediately after ramming. - (mm/s, default: 100) - --filament-wipe This flag will move the nozzle while retracting to minimize the possible blob on - leaky extruders. (default: 0) - --first-layer-acceleration N - This is the acceleration your printer will use for first layer. Set zero to - disable acceleration control for first layer. (mm/s², default: 0) - --first-layer-acceleration-over-raft N - This is the acceleration your printer will use for first layer of object above - raft interface. Set zero to disable acceleration control for first layer of - object above raft interface. (mm/s², default: 0) - --first-layer-bed-temperature N - Heated build plate temperature for the first layer. Set this to zero to disable - bed temperature control commands in the output. (°C, default: 0) - --first-layer-speed N - If expressed as absolute value in mm/s, this speed will be applied to all the - print moves of the first layer, regardless of their type. If expressed as a - percentage (for example: 40%) it will scale the default speeds. (mm/s or %, - default: 30) - --first-layer-speed-over-raft N - If expressed as absolute value in mm/s, this speed will be applied to all the - print moves of the first object layer above raft interface, regardless of their - type. If expressed as a percentage (for example: 40%) it will scale the default - speeds. (mm/s or %, default: 30) - --first-layer-temperature N - Nozzle temperature for the first layer. If you want to control temperature - manually during print, set this to zero to disable temperature control commands - in the output G-code. (°C, default: 200) - --full-fan-speed-layer N - Fan speed will be ramped up linearly from zero at layer - "disable_fan_first_layers" to maximum at layer "full_fan_speed_layer". - "full_fan_speed_layer" will be ignored if lower than "disable_fan_first_layers", - in which case the fan will be running at maximum allowed speed at layer - "disable_fan_first_layers" + 1. (default: 0) - --gcode-comments Enable this to get a commented G-code file, with each line explained by a - descriptive text. If you print from SD card, the additional weight of the file - could make your firmware slow down. - --gcode-flavor Some G/M-code commands, including temperature control and others, are not - universal. Set this option to your printer's firmware to get a compatible - output. The "No extrusion" flavor prevents PrusaSlicer from exporting any - extrusion value at all. (reprap, reprapfirmware, repetier, teacup, makerware, - marlin, marlin2, sailfish, mach3, machinekit, smoothie, no-extrusion; default: - reprap) - --gcode-label-objects - Enable this to add comments into the G-Code labeling print moves with what - object they belong to, which is useful for the Octoprint CancelObject plugin. - This settings is NOT compatible with Single Extruder Multi Material setup and - Wipe into Object / Wipe into Infill. - --gcode-resolution N - Maximum deviation of exported G-code paths from their full resolution - counterparts. Very high resolution G-code requires huge amount of RAM to slice - and preview, also a 3D printer may stutter not being able to process a high - resolution G-code in a timely manner. On the other hand, a low resolution G-code - will produce a low poly effect and because the G-code reduction is performed at - each layer independently, visible artifacts may be produced. (mm, default: - 0.0125) - --gcode-substitutions ABCD - Find / replace patterns in G-code lines and substitute them. (default: ) - --high-current-on-filament-swap - It may be beneficial to increase the extruder motor current during the filament - exchange sequence to allow for rapid ramming feed rates and to overcome - resistance when loading a filament with an ugly shaped tip. - --infill-acceleration N - This is the acceleration your printer will use for infill. Set zero to disable - acceleration control for infill. (mm/s², default: 0) - --infill-first This option will switch the print order of perimeters and infill, making the - latter first. - --after-layer-gcode ABCD, --layer-gcode ABCD - This custom code is inserted at every layer change, right after the Z move and - before the extruder moves to the first layer point. Note that you can use - placeholder variables for all Slic3r settings as well as [layer_num] and - [layer_z]. - --max-fan-speed N This setting represents the maximum speed of your fan. (%, default: 100) - --max-layer-height N - This is the highest printable layer height for this extruder, used to cap the - variable layer height and support layer height. Maximum recommended layer height - is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set - to 0, layer height is limited to 75% of the nozzle diameter. (mm, default: 0) - --max-print-height N - Set this to the maximum height that can be reached by your extruder while - printing. (mm, default: 200) - --max-print-speed N When setting other speed settings to 0 Slic3r will autocalculate the optimal - speed in order to keep constant extruder pressure. This experimental setting is - used to set the highest print speed you want to allow. (mm/s, default: 80) - --max-volumetric-extrusion-rate-slope-negative N - This experimental setting is used to limit the speed of change in extrusion rate - for a transition from higher speed to lower speed. A value of 1.8 mm³/s² - ensures, that a change from the extrusion rate of 5.4 mm³/s (0.45 mm extrusion - width, 0.2 mm extrusion height, feedrate 60 mm/s) to 1.8 mm³/s (feedrate 20 - mm/s) will take at least 2 seconds. (mm³/s², default: 0) - --max-volumetric-extrusion-rate-slope-positive N - This experimental setting is used to limit the speed of change in extrusion rate - for a transition from lower speed to higher speed. A value of 1.8 mm³/s² - ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45 mm extrusion - width, 0.2 mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 - mm/s) will take at least 2 seconds. (mm³/s², default: 0) - --max-volumetric-speed N - This experimental setting is used to set the maximum volumetric speed your - extruder supports. (mm³/s, default: 0) - --min-fan-speed N This setting represents the minimum PWM your fan needs to work. (%, default: 35) - --min-layer-height N - This is the lowest printable layer height for this extruder and limits the - resolution for variable layer height. Typical values are between 0.05 mm and 0.1 - mm. (mm, default: 0.07) - --min-print-speed N Slic3r will not scale speed down below this speed. (mm/s, default: 10) - --min-skirt-length N - Generate no less than the number of skirt loops required to consume the - specified amount of filament on the bottom layer. For multi-extruder machines, - this minimum applies to each extruder. (mm, default: 0) - --notes ABCD You can put here your personal notes. This text will be added to the G-code - header comments. - --nozzle-diameter N This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.) (mm, - default: 0.4) - --only-retract-when-crossing-perimeters - Disables retraction when the travel path does not exceed the upper layer's - perimeters (and thus any ooze will be probably invisible). - --ooze-prevention This option will drop the temperature of the inactive extruders to prevent - oozing. It will enable a tall skirt automatically and move extruders outside - such skirt when changing temperatures. - --output-filename-format ABCD - You can use all configuration options as variables inside this template. For - example: [layer_height], [fill_density] etc. You can also use [timestamp], - [year], [month], [day], [hour], [minute], [second], [version], [input_filename], - [input_filename_base]. (default: [input_filename_base].gcode) - --parking-pos-retraction N - Distance of the extruder tip from the position where the filament is parked when - unloaded. This should match the value in printer firmware. (mm, default: 92) - --pause-print-gcode ABCD - This G-code will be used as a code for the pause print (default: M601) - --perimeter-acceleration N - This is the acceleration your printer will use for perimeters. Set zero to - disable acceleration control for perimeters. (mm/s², default: 0) - --post-process ABCD If you want to process the output G-code through custom scripts, just list their - absolute paths here. Separate multiple scripts with a semicolon. Scripts will be - passed the absolute path to the G-code file as the first argument, and they can - access the Slic3r config settings by reading environment variables. (default: ) - --preset-name ABCD - --preset-names ABCD Names of presets related to the physical printer (default: ) - --printer-notes ABCD - You can put your notes regarding the printer here. - --printer-technology - Printer technology (FFF, SLA; default: FFF) - --remaining-times Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals - into the G-code to let the firmware show accurate remaining time. As of now only - the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 - Qxx Sxx for the silent mode. - --resolution N Minimum detail resolution, used to simplify the input file for speeding up the - slicing job and reducing memory usage. High-resolution models often carry more - detail than printers can render. Set to zero to disable any simplification and - use full resolution from input. (mm, default: 0) - --retract-before-travel N - Retraction is not triggered when travel moves are shorter than this length. (mm, - default: 2) - --retract-before-wipe - With bowden extruders, it may be wise to do some amount of quick retract before - doing the wipe movement. (%, default: 0%) - --retract-layer-change - This flag enforces a retraction whenever a Z move is done. (default: 0) - --retract-length N When retraction is triggered, filament is pulled back by the specified amount - (the length is measured on raw filament, before it enters the extruder). (mm - (zero to disable), default: 2) - --retract-length-toolchange N - When retraction is triggered before changing tool, filament is pulled back by - the specified amount (the length is measured on raw filament, before it enters - the extruder). (mm (zero to disable), default: 10) - --retract-lift N If you set this to a positive value, Z is quickly raised every time a retraction - is triggered. When using multiple extruders, only the setting for the first - extruder will be considered. (mm, default: 0) - --retract-lift-above N - If you set this to a positive value, Z lift will only take place above the - specified absolute Z. You can tune this setting for skipping lift on the first - layers. (mm, default: 0) - --retract-lift-below N - If you set this to a positive value, Z lift will only take place below the - specified absolute Z. You can tune this setting for limiting lift to the first - layers. (mm, default: 0) - --retract-restart-extra N - When the retraction is compensated after the travel move, the extruder will push - this additional amount of filament. This setting is rarely needed. (mm, default: - 0) - --retract-restart-extra-toolchange N - When the retraction is compensated after changing tool, the extruder will push - this additional amount of filament. (mm, default: 0) - --retract-speed N The speed for retractions (it only applies to the extruder motor). (mm/s, - default: 40) - --silent-mode The firmware supports stealth mode - --single-extruder-multi-material - The printer multiplexes filaments into a single hot end. - --single-extruder-multi-material-priming - If enabled, all printing extruders will be primed at the front edge of the print - bed at the start of the print. - --skirt-distance N Distance between skirt and brim (when draft shield is not used) or objects. (mm, - default: 6) - --skirt-height N Height of skirt expressed in layers. (layers, default: 1) - --skirts N Number of loops for the skirt. If the Minimum Extrusion Length option is set, - the number of loops might be greater than the one configured here. Set this to - zero to disable skirt completely. (default: 1) - --slowdown-below-layer-time N - If layer print time is estimated below this number of seconds, print moves speed - will be scaled down to extend duration to this value. (approximate seconds, - default: 5) - --solid-layers N Number of solid layers to generate on top and bottom surfaces. - --solid-min-thickness N - Minimum thickness of a top / bottom shell - --spiral-vase This feature will raise Z gradually while printing a single-walled object in - order to remove any visible seam. This option requires a single perimeter, no - infill, no top solid layers and no support material. You can still set any - number of bottom solid layers as well as skirt/brim loops. It won't work when - printing more than one single object. - --standby-temperature-delta N - Temperature difference to be applied when an extruder is not active. Enables a - full-height "sacrificial" skirt on which the nozzles are periodically wiped. - (∆°C, default: -5) - --start-filament-gcode ABCD - This start procedure is inserted at the beginning, after any printer start gcode - (and after any toolchange to this filament in case of multi-material printers). - This is used to override settings for a specific filament. If PrusaSlicer - detects M104, M109, M140 or M190 in your custom codes, such commands will not be - prepended automatically so you're free to customize the order of heating - commands and other custom actions. Note that you can use placeholder variables - for all PrusaSlicer settings, so you can put a "M109 S[first_layer_temperature]" - command wherever you want. If you have multiple extruders, the gcode is - processed in extruder order. (default: "; Filament gcode\n") - --start-gcode ABCD This start procedure is inserted at the beginning, after bed has reached the - target temperature and extruder just started heating, and before extruder has - finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such - commands will not be prepended automatically so you're free to customize the - order of heating commands and other custom actions. Note that you can use - placeholder variables for all PrusaSlicer settings, so you can put a "M109 - S[first_layer_temperature]" command wherever you want. (default: G28 ; home all - axes\nG1 Z5 F5000 ; lift nozzle\n) - --temperature N Nozzle temperature for layers after the first one. Set this to zero to disable - temperature control commands in the output G-code. (°C, default: 200) - --template-custom-gcode ABCD - This G-code will be used as a custom code - --thumbnails Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the - following format: "XxY, XxY, ..." (default: ) - --thumbnails-format Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI - for low memory firmware (PNG, JPG, QOI; default: PNG) - --toolchange-gcode ABCD - This custom code is inserted before every toolchange. Placeholder variables for - all PrusaSlicer settings as well as {toolchange_z}, {previous_extruder} and - {next_extruder} can be used. When a tool-changing command which changes to the - correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit - no other such command. It is therefore possible to script custom behaviour both - before and after the toolchange. - --travel-speed N Speed for travel moves (jumps between distant extrusion points). (mm/s, default: - 130) - --travel-speed-z N Speed for movements along the Z axis. When set to zero, the value is ignored and - regular travel speed is used instead. (mm/s, default: 0) - --use-firmware-retraction - This experimental setting uses G10 and G11 commands to have the firmware handle - the retraction. This is only supported in recent Marlin. - --use-relative-e-distances - If your firmware requires relative E values, check this, otherwise leave it - unchecked. Most firmwares use absolute values. - --use-volumetric-e This experimental setting uses outputs the E values in cubic millimeters instead - of linear millimeters. If your firmware doesn't already know filament - diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your - start G-code in order to turn volumetric mode on and use the filament diameter - associated to the filament selected in Slic3r. This is only supported in recent - Marlin. - --variable-layer-height - Some printers or printer setups may have difficulties printing with a variable - layer height. Enabled by default. - --wipe This flag will move the nozzle while retracting to minimize the possible blob on - leaky extruders. (default: 0) - --wipe-tower Multi material printers may need to prime or purge extruders on tool changes. - Extrude the excess material into the wipe tower. - --wipe-tower-bridging N - Maximal distance between supports on sparse infill sections. (mm, default: 10) - --wipe-tower-brim-width N - Wipe tower brim width (mm, default: 2) - --wipe-tower-no-sparse-layers - If enabled, the wipe tower will not be printed on layers with no toolchanges. On - layers with a toolchange, extruder will travel downward to print the wipe tower. - User is responsible for ensuring there is no collision with the print. - --wipe-tower-rotation-angle N - Wipe tower rotation angle with respect to x-axis. (°, default: 0) - --wipe-tower-width N - Width of a wipe tower (mm, default: 60) - --wipe-tower-x N X coordinate of the left front corner of a wipe tower (mm, default: 180) - --wipe-tower-y N Y coordinate of the left front corner of a wipe tower (mm, default: 140) - --wiping-volumes-extruders N - This vector saves required volumes to change from/to each tool used on the wipe - tower. These values are used to simplify creation of the full purging volumes - below. (default: 70,70,70,70,70,70,70,70,70,70) - --wiping-volumes-matrix N - This matrix describes volumes (in cubic milimetres) required to purge the new - filament on the wipe tower for any given pair of tools. (default: - 0,140,140,140,140,140,0,140,140,140,140,140,0,140,140,140,140,140,0,140,140,140,140,140,0) - --z-offset N This value will be added (or subtracted) from all the Z coordinates in the - output G-code. It is used to compensate for bad Z endstop position: for example, - if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, - set this to -0.3 (or fix your endstop). (mm, default: 0) -Advanced: - --bridge-flow-ratio N - This factor affects the amount of plastic for bridging. You can decrease it - slightly to pull the extrudates and prevent sagging, although default settings - are usually good and you should experiment with cooling (use a fan) before - tweaking this. (default: 1) - --elefant-foot-compensation N - The first layer will be shrunk in the XY plane by the configured value to - compensate for the 1st layer squish aka an Elephant Foot effect. (mm, default: - 0) - --infill-anchor N Connect an infill line to an internal perimeter with a short segment of an - additional perimeter. If expressed as percentage (example: 15%) it is calculated - over infill extrusion width. PrusaSlicer tries to connect two close infill lines - to a short perimeter segment. If no such perimeter segment shorter than - infill_anchor_max is found, the infill line is connected to a perimeter segment - at just one side and the length of the perimeter segment taken is limited to - this parameter, but no longer than anchor_length_max. Set this parameter to zero - to disable anchoring perimeters connected to a single infill line. (mm or %, - default: 600%) - --infill-anchor-max N - Connect an infill line to an internal perimeter with a short segment of an - additional perimeter. If expressed as percentage (example: 15%) it is calculated - over infill extrusion width. PrusaSlicer tries to connect two close infill lines - to a short perimeter segment. If no such perimeter segment shorter than this - parameter is found, the infill line is connected to a perimeter segment at just - one side and the length of the perimeter segment taken is limited to - infill_anchor, but no longer than this parameter. Set this parameter to zero to - disable anchoring. (mm or %, default: 50) - --infill-overlap N This setting applies an additional overlap between infill and perimeters for - better bonding. Theoretically this shouldn't be needed, but backlash might cause - gaps. If expressed as percentage (example: 15%) it is calculated over perimeter - extrusion width. (mm or %, default: 25%) - --min-bead-width N Width of the perimeter that will replace thin features (according to the Minimum - feature size) of the model. If the Minimum perimeter width is thinner than the - thickness of the feature, the perimeter will become as thick as the feature - itself. If expressed as a percentage (for example 85%), it will be computed - based on the nozzle diameter. (mm or %, default: 85%) - --min-feature-size N - Minimum thickness of thin features. Model features that are thinner than this - value will not be printed, while features thicker than the Minimum feature size - will be widened to the Minimum perimeter width. If expressed as a percentage - (for example 25%), it will be computed based on the nozzle diameter. (mm or %, - default: 25%) - --mmu-segmented-region-max-width N - Maximum width of a segmented region. Zero disables this feature. (mm (zero to - disable), default: 0) - --slice-closing-radius N - Cracks smaller than 2x gap closing radius are being filled during the triangle - mesh slicing. The gap closing operation may reduce the final print resolution, - therefore it is advisable to keep the value reasonably low. (mm, default: 0.049) - --slicing-mode Use "Even-odd" for 3DLabPrint airplane models. Use "Close holes" to close all - holes in the model. (regular, even_odd, close_holes; default: regular) - --wall-distribution-count N - The number of perimeters, counted from the center, over which the variation - needs to be spread. Lower values mean that the outer perimeters don't change in - width. (default: 1) - --wall-transition-angle N - When to create transitions between even and odd numbers of perimeters. A wedge - shape with an angle greater than this setting will not have transitions and no - perimeters will be printed in the center to fill the remaining space. Reducing - this setting reduces the number and length of these center perimeters, but may - leave gaps or overextrude. (°, default: 10) - --wall-transition-filter-deviation N - Prevent transitioning back and forth between one extra perimeter and one less. - This margin extends the range of extrusion widths which follow to [Minimum - perimeter width - margin, 2 * Minimum perimeter width + margin]. Increasing this - margin reduces the number of transitions, which reduces the number of extrusion - starts/stops and travel time. However, large extrusion width variation can lead - to under- or overextrusion problems. If expressed as a percentage (for example - 25%), it will be computed based on the nozzle diameter. (mm or %, default: 25%) - --wall-transition-length N - When transitioning between different numbers of perimeters as the part becomes - thinner, a certain amount of space is allotted to split or join the perimeter - segments. If expressed as a percentage (for example 100%), it will be computed - based on the nozzle diameter. (mm or %, default: 100%) - --xy-size-compensation N - The object will be grown/shrunk in the XY plane by the configured value - (negative = inwards, positive = outwards). This might be useful for fine-tuning - hole sizes. (mm, default: 0) -Extruders: - --extruder N The extruder to use (unless more specific extruder settings are specified). This - value overrides perimeter and infill extruders, but not the support extruders. - --infill-extruder N The extruder to use when printing infill. (default: 1) - --perimeter-extruder N - The extruder to use when printing perimeters and brim. First extruder is 1. - (default: 1) - --solid-infill-extruder N - The extruder to use when printing solid infill. (default: 1) - --support-material-extruder N - The extruder to use when printing support material, raft and skirt (1+, 0 to use - the current extruder to minimize tool changes). (default: 1) - --support-material-interface-extruder N - The extruder to use when printing support material interface (1+, 0 to use the - current extruder to minimize tool changes). This affects raft too. (default: 1) -Extrusion Width: - --external-perimeter-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for external - perimeters. If left zero, default extrusion width will be used if set, otherwise - 1.125 x nozzle diameter will be used. If expressed as percentage (for example - 200%), it will be computed over layer height. (mm or %, default: 0) - --extrusion-width N Set this to a non-zero value to allow a manual extrusion width. If left to zero, - Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for - perimeter extrusion width, infill extrusion width etc). If expressed as - percentage (for example: 230%), it will be computed over layer height. (mm or %, - default: 0) - --first-layer-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for first layer. - You can use this to force fatter extrudates for better adhesion. If expressed as - percentage (for example 120%) it will be computed over first layer height. If - set to zero, it will use the default extrusion width. (mm or %, default: 200%) - --infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill. If left - zero, default extrusion width will be used if set, otherwise 1.125 x nozzle - diameter will be used. You may want to use fatter extrudates to speed up the - infill and make your parts stronger. If expressed as percentage (for example - 90%) it will be computed over layer height. (mm or %, default: 0) - --perimeter-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for perimeters. You - may want to use thinner extrudates to get more accurate surfaces. If left zero, - default extrusion width will be used if set, otherwise 1.125 x nozzle diameter - will be used. If expressed as percentage (for example 200%) it will be computed - over layer height. (mm or %, default: 0) - --solid-infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill for - solid surfaces. If left zero, default extrusion width will be used if set, - otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for - example 90%) it will be computed over layer height. (mm or %, default: 0) - --support-material-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for support - material. If left zero, default extrusion width will be used if set, otherwise - nozzle diameter will be used. If expressed as percentage (for example 90%) it - will be computed over layer height. (mm or %, default: 0) - --top-infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill for top - surfaces. You may want to use thinner extrudates to fill all narrow regions and - get a smoother finish. If left zero, default extrusion width will be used if - set, otherwise nozzle diameter will be used. If expressed as percentage (for - example 90%) it will be computed over layer height. (mm or %, default: 0) -Fuzzy Skin: - --fuzzy-skin Fuzzy skin type. (none, external, all; default: none) - --fuzzy-skin-point-dist N - Perimeters will be split into multiple segments by inserting Fuzzy skin points. - Lowering the Fuzzy skin point distance will increase the number of randomly - offset points on the perimeter wall. (mm, default: 0.8) - --fuzzy-skin-thickness N - The maximum distance that each skin point can be offset (both ways), measured - perpendicular to the perimeter wall. (mm, default: 0.3) -Infill: - --bottom-fill-pattern, --external-fill-pattern, --solid-fill-pattern - Fill pattern for bottom infill. This only affects the bottom external visible - layer, and not its adjacent solid shells. (rectilinear, monotonic, - alignedrectilinear, concentric, hilbertcurve, archimedeanchords, octagramspiral; - default: monotonic) - --bridge-angle N Bridging angle override. If left to zero, the bridging angle will be calculated - automatically. Otherwise the provided angle will be used for all bridges. Use - 180° for zero angle. (°, default: 0) - --fill-angle N Default base angle for infill orientation. Cross-hatching will be applied to - this. Bridges will be infilled using the best direction Slic3r can detect, so - this setting does not affect them. (°, default: 45) - --fill-density Density of internal infill, expressed in the range 0% - 100%. (%, default: 20%) - --fill-pattern Fill pattern for general low-density infill. (rectilinear, alignedrectilinear, - grid, triangles, stars, cubic, line, concentric, honeycomb, 3dhoneycomb, gyroid, - hilbertcurve, archimedeanchords, octagramspiral, adaptivecubic, supportcubic, - lightning; default: stars) - --infill-every-layers N - This feature allows to combine infill and speed up your print by extruding - thicker infill layers while preserving thin perimeters, thus accuracy. (layers, - default: 1) - --infill-only-where-needed - This option will limit infill to the areas actually needed for supporting - ceilings (it will act as internal support material). If enabled, slows down the - G-code generation due to the multiple checks involved. - --solid-infill-below-area N - Force solid infill for regions having a smaller area than the specified - threshold. (mm², default: 70) - --solid-infill-every-layers N - This feature allows to force a solid layer every given number of layers. Zero to - disable. You can set this to any value (for example 9999); Slic3r will - automatically choose the maximum possible number of layers to combine according - to nozzle diameter and layer height. (layers, default: 0) - --top-fill-pattern, --external-fill-pattern, --solid-fill-pattern - Fill pattern for top infill. This only affects the top visible layer, and not - its adjacent solid shells. (rectilinear, monotonic, alignedrectilinear, - concentric, hilbertcurve, archimedeanchords, octagramspiral; default: monotonic) -Ironing: - --ironing Enable ironing of the top layers with the hot print head for smooth surface - --ironing-flowrate Percent of a flow rate relative to object's normal layer height. (%, default: - 15%) - --ironing-spacing N Distance between ironing lines (mm, default: 0.1) - --ironing-type Ironing Type (top, topmost, solid; default: top) -Layers and Perimeters: - --avoid-crossing-perimeters-max-detour N - The maximum detour length for avoid crossing perimeters. If the detour is longer - than this value, avoid crossing perimeters is not applied for this travel path. - Detour length could be specified either as an absolute value or as percentage - (for example 50%) of a direct travel path. (mm or % (zero to disable), default: - 0) - --bottom-solid-layers N - Number of solid layers to generate on bottom surfaces. (default: 3) - --bottom-solid-min-thickness N - The number of bottom solid layers is increased above bottom_solid_layers if - necessary to satisfy minimum thickness of bottom shell. (mm, default: 0) - --ensure-vertical-shell-thickness - Add solid infill near sloping surfaces to guarantee the vertical shell thickness - (top+bottom solid layers). - --external-perimeters-first - Print contour perimeters from the outermost one to the innermost one instead of - the default inverse order. - --extra-perimeters Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps - adding perimeters, until more than 70% of the loop immediately above is - supported. - --first-layer-height N - When printing with very low layer heights, you might still want to print a - thicker bottom layer to improve adhesion and tolerance for non perfect build - plates. (mm, default: 0.35) - --gap-fill-enabled Enables filling of gaps between perimeters and between the inner most perimeters - and infill. - --interface-shells Force the generation of solid shells between adjacent materials/volumes. Useful - for multi-extruder prints with translucent materials or manual soluble support - material. - --layer-height N This setting controls the height (and thus the total number) of the - slices/layers. Thinner layers give better accuracy but take more time to print. - (mm, default: 0.3) - --overhangs Experimental option to adjust flow for overhangs (bridge flow will be used), to - apply bridge speed to them and enable fan. - --perimeter-generator - Classic perimeter generator produces perimeters with constant extrusion width - and for very thin areas is used gap-fill. Arachne engine produces perimeters - with variable extrusion width. This setting also affects the Concentric infill. - (classic, arachne; default: arachne) - --perimeters N This option sets the number of perimeters to generate for each layer. Note that - Slic3r may increase this number automatically when it detects sloping surfaces - which benefit from a higher number of perimeters if the Extra Perimeters option - is enabled. ((minimum), default: 3) - --seam-position Position of perimeters starting points. (random, nearest, aligned, rear; - default: aligned) - --thick-bridges If enabled, bridges are more reliable, can bridge longer distances, but may look - worse. If disabled, bridges look better but are reliable just for shorter - bridged distances. - --thin-walls Detect single-width walls (parts where two extrusions don't fit and we need to - collapse them into a single trace). - --top-solid-layers N - Number of solid layers to generate on top surfaces. (default: 3) - --top-solid-min-thickness N - The number of top solid layers is increased above top_solid_layers if necessary - to satisfy minimum thickness of top shell. This is useful to prevent pillowing - effect when printing with variable layer height. (mm, default: 0) -Machine limits: - --machine-limits-usage - How to apply the Machine Limits (emit_to_gcode, time_estimate_only, ignore; - default: time_estimate_only) - --machine-max-acceleration-e N - Maximum acceleration of the E axis (mm/s², default: 10000,5000) - --machine-max-acceleration-extruding N - Maximum acceleration when extruding (M204 P) Marlin (legacy) firmware flavor - will use this also as travel acceleration (M204 T). (mm/s², default: 1500,1250) - --machine-max-acceleration-retracting N - Maximum acceleration when retracting (M204 R) (mm/s², default: 1500,1250) - --machine-max-acceleration-travel N - Maximum acceleration for travel moves (M204 T) (mm/s², default: 1500,1250) - --machine-max-acceleration-x N - Maximum acceleration of the X axis (mm/s², default: 9000,1000) - --machine-max-acceleration-y N - Maximum acceleration of the Y axis (mm/s², default: 9000,1000) - --machine-max-acceleration-z N - Maximum acceleration of the Z axis (mm/s², default: 500,200) - --machine-max-feedrate-e N - Maximum feedrate of the E axis (mm/s, default: 120,120) - --machine-max-feedrate-x N - Maximum feedrate of the X axis (mm/s, default: 500,200) - --machine-max-feedrate-y N - Maximum feedrate of the Y axis (mm/s, default: 500,200) - --machine-max-feedrate-z N - Maximum feedrate of the Z axis (mm/s, default: 12,12) - --machine-max-jerk-e N - Maximum jerk of the E axis (mm/s, default: 2.5,2.5) - --machine-max-jerk-x N - Maximum jerk of the X axis (mm/s, default: 10,10) - --machine-max-jerk-y N - Maximum jerk of the Y axis (mm/s, default: 10,10) - --machine-max-jerk-z N - Maximum jerk of the Z axis (mm/s, default: 0.2,0.4) - --machine-min-extruding-rate N - Minimum feedrate when extruding (M205 S) (mm/s, default: 0,0) - --machine-min-travel-rate N - Minimum travel feedrate (M205 T) (mm/s, default: 0,0) -Skirt and brim: - --brim-separation N Offset of brim from the printed object. The offset is applied after the elephant - foot compensation. (mm, default: 0) - --brim-type The places where the brim will be printed around each object on the first layer. - (no_brim, outer_only, inner_only, outer_and_inner; default: outer_only) - --brim-width N The horizontal width of the brim that will be printed around each object on the - first layer. When raft is used, no brim is generated (use - raft_first_layer_expansion). (mm, default: 0) -Speed: - --bridge-speed N Speed for printing bridges. (mm/s, default: 60) - --external-perimeter-speed N - This separate setting will affect the speed of external perimeters (the visible - ones). If expressed as percentage (for example: 80%) it will be calculated on - the perimeters speed setting above. Set to zero for auto. (mm/s or %, default: - 50%) - --gap-fill-speed N Speed for filling small gaps using short zigzag moves. Keep this reasonably low - to avoid too much shaking and resonance issues. Set zero to disable gaps - filling. (mm/s, default: 20) - --infill-speed N Speed for printing the internal fill. Set to zero for auto. (mm/s, default: 80) - --ironing-speed N Ironing (mm/s, default: 15) - --perimeter-speed N Speed for perimeters (contours, aka vertical shells). Set to zero for auto. - (mm/s, default: 60) - --small-perimeter-speed N - This separate setting will affect the speed of perimeters having radius <= 6.5mm - (usually holes). If expressed as percentage (for example: 80%) it will be - calculated on the perimeters speed setting above. Set to zero for auto. (mm/s or - %, default: 15) - --solid-infill-speed N - Speed for printing solid regions (top/bottom/internal horizontal shells). This - can be expressed as a percentage (for example: 80%) over the default infill - speed above. Set to zero for auto. (mm/s or %, default: 20) - --top-solid-infill-speed N - Speed for printing top solid layers (it only applies to the uppermost external - layers and not to their internal solid layers). You may want to slow down this - to get a nicer surface finish. This can be expressed as a percentage (for - example: 80%) over the solid infill speed above. Set to zero for auto. (mm/s or - %, default: 15) -Support material: - --dont-support-bridges - Experimental option for preventing support material from being generated under - bridged areas. - --raft-contact-distance N - The vertical distance between object and raft. Ignored for soluble interface. - (mm, default: 0.1) - --raft-expansion N Expansion of the raft in XY plane for better stability. (mm, default: 1.5) - --raft-first-layer-density - Density of the first raft or support layer. (%, default: 90%) - --raft-first-layer-expansion N - Expansion of the first raft or support layer to improve adhesion to print bed. - (mm, default: 3) - --raft-layers N The object will be raised by this number of layers, and support material will be - generated under it. (layers, default: 0) - --support-material Enable support material generation. - --support-material-angle N - Use this setting to rotate the support material pattern on the horizontal plane. - (°, default: 0) - --support-material-auto - If checked, supports will be generated automatically based on the overhang - threshold value. If unchecked, supports will be generated inside the "Support - Enforcer" volumes only. - --support-material-bottom-contact-distance N - The vertical distance between the object top surface and the support material - interface. If set to zero, support_material_contact_distance will be used for - both top and bottom contact Z distances. (mm, default: 0) - --support-material-bottom-interface-layers N - Number of interface layers to insert between the object(s) and support material. - Set to -1 to use support_material_interface_layers (layers, default: -1) - --support-material-buildplate-only - Only create support if it lies on a build plate. Don't create support on a - print. - --support-material-closing-radius N - For snug supports, the support regions will be merged using morphological - closing operation. Gaps smaller than the closing radius will be filled in. (mm, - default: 2) - --support-material-contact-distance N - The vertical distance between object and support material interface. Setting - this to 0 will also prevent Slic3r from using bridge flow and speed for the - first object layer. (mm, default: 0.2) - --support-material-enforce-layers N - Generate support material for the specified number of layers counting from - bottom, regardless of whether normal support material is enabled or not and - regardless of any angle threshold. This is useful for getting more adhesion of - objects having a very thin or poor footprint on the build plate. (layers, - default: 0) - --support-material-interface-contact-loops - Cover the top contact layer of the supports with loops. Disabled by default. - --support-material-interface-layers N - Number of interface layers to insert between the object(s) and support material. - (layers, default: 3) - --support-material-interface-pattern - Pattern used to generate support material interface. Default pattern for - non-soluble support interface is Rectilinear, while default pattern for soluble - support interface is Concentric. (auto, rectilinear, concentric; default: - rectilinear) - --support-material-interface-spacing N - Spacing between interface lines. Set zero to get a solid interface. (mm, - default: 0) - --support-material-interface-speed N - Speed for printing support material interface layers. If expressed as percentage - (for example 50%) it will be calculated over support material speed. (mm/s or %, - default: 100%) - --support-material-pattern - Pattern used to generate support material. (rectilinear, rectilinear-grid, - honeycomb; default: rectilinear) - --support-material-spacing N - Spacing between support material lines. (mm, default: 2.5) - --support-material-speed N - Speed for printing support material. (mm/s, default: 60) - --support-material-style - Style and shape of the support towers. Projecting the supports into a regular - grid will create more stable supports, while snug support towers will save - material and reduce object scarring. (grid, snug; default: grid) - --support-material-synchronize-layers - Synchronize support layers with the object print layers. This is useful with - multi-material printers, where the extruder switch is expensive. - --support-material-threshold N - Support material will not be generated for overhangs whose slope angle (90° = - vertical) is above the given threshold. In other words, this value represent the - most horizontal slope (measured from the horizontal plane) that you can print - without support material. Set to zero for automatic detection (recommended). - (°, default: 0) - --support-material-with-sheath - Add a sheath (a single perimeter line) around the base support. This makes the - support more reliable, but also more difficult to remove. - --support-material-xy-spacing N - XY separation between an object and its support. If expressed as percentage (for - example 50%), it will be calculated over external perimeter width. (mm or %, - default: 50%) -Wipe options: - --wipe-into-infill Purging after toolchange will be done inside this object's infills. This lowers - the amount of waste but may result in longer print time due to additional travel - moves. - --wipe-into-objects Object will be used to purge the nozzle after a toolchange to save material that - would otherwise end up in the wipe tower and decrease print time. Colours of the - objects will be mixed as a result. \ No newline at end of file diff --git a/pru-cli.md b/pru-cli.md deleted file mode 100644 index aa46430..0000000 --- a/pru-cli.md +++ /dev/null @@ -1,905 +0,0 @@ - --avoid-crossing-perimeters - Optimize travel moves in order to minimize the crossing of perimeters. This is - mostly useful with Bowden extruders which suffer from oozing. This feature slows - down both the print and the G-code generation. - --bed-custom-model ABCD - - --bed-custom-texture ABCD - - --bed-shape (default: 0x0,200x0,200x200,0x200) - --bed-temperature N Bed temperature for layers after the first one. Set this to zero to disable bed - temperature control commands in the output. (°C, default: 0) - --before-layer-gcode ABCD - This custom code is inserted at every layer change, right before the Z move. - Note that you can use placeholder variables for all Slic3r settings as well as - [layer_num] and [layer_z]. - --between-objects-gcode ABCD - This code is inserted between objects when using sequential printing. By default - extruder and bed temperature are reset using non-wait command; however if M104, - M109, M140 or M190 are detected in this custom code, Slic3r will not add - temperature commands. Note that you can use placeholder variables for all Slic3r - settings, so you can put a "M109 S[first_layer_temperature]" command wherever - you want. - --bridge-acceleration N - This is the acceleration your printer will use for bridges. Set zero to disable - acceleration control for bridges. (mm/s², default: 0) - --bridge-fan-speed N - This fan speed is enforced during all bridges and overhangs. (%, default: 100) - --clip-multipart-objects - When printing multi-material objects, this settings will make Slic3r to clip the - overlapping object parts one by the other (2nd part will be clipped by the 1st, - 3rd part will be clipped by the 1st and 2nd etc). - --color-change-gcode ABCD - This G-code will be used as a code for the color change (default: M600) - --colorprint-heights N - Heights at which a filament change is to occur. (default: ) - --complete-objects When printing multiple objects or copies, this feature will complete each object - before moving onto next one (and starting it from its bottom layer). This - feature is useful to avoid the risk of ruined prints. Slic3r should warn and - prevent you from extruder collisions, but beware. - --cooling This flag enables the automatic cooling logic that adjusts print speed and fan - speed according to layer printing time. (default: 1) - --cooling-tube-length N - Length of the cooling tube to limit space for cooling moves inside it. (mm, - default: 5) - --cooling-tube-retraction N - Distance of the center-point of the cooling tube from the extruder tip. (mm, - default: 91.5) - --default-acceleration N - This is the acceleration your printer will be reset to after the role-specific - acceleration values are used (perimeter/infill). Set zero to prevent resetting - acceleration at all. (mm/s², default: 0) - --deretract-speed N The speed for loading of a filament into extruder after retraction (it only - applies to the extruder motor). If left to zero, the retraction speed is used. - (mm/s, default: 0) - --disable-fan-first-layers N - You can set this to a positive value to disable fan at all during the first - layers, so that it does not make adhesion worse. (layers, default: 3) - --draft-shield With draft shield active, the skirt will be printed skirt_distance from the - object, possibly intersecting brim. Enabled = skirt is as tall as the highest - printed object. Limited = skirt is as tall as specified by skirt_height. This is - useful to protect an ABS or ASA print from warping and detaching from print bed - due to wind draft. (disabled, limited, enabled; default: disabled) - --duplicate-distance N - Distance used for the auto-arrange feature of the plater. (mm, default: 6) - --end-filament-gcode ABCD - This end procedure is inserted at the end of the output file, before the printer - end gcode (and before any toolchange from this filament in case of multimaterial - printers). Note that you can use placeholder variables for all PrusaSlicer - settings. If you have multiple extruders, the gcode is processed in extruder - order. (default: "; Filament-specific end gcode \n;END gcode for filament\n") - --end-gcode ABCD This end procedure is inserted at the end of the output file. Note that you can - use placeholder variables for all PrusaSlicer settings. (default: M104 S0 ; turn - off temperature\nG28 X0 ; home X axis\nM84 ; disable motors\n) - --extra-loading-move N - When set to zero, the distance the filament is moved from parking position - during load is exactly the same as it was moved back during unload. When - positive, it is loaded further, if negative, the loading move is shorter than - unloading. (mm, default: -2) - --extruder-clearance-height N - Set this to the vertical distance between your nozzle tip and (usually) the X - carriage rods. In other words, this is the height of the clearance cylinder - around your extruder, and it represents the maximum depth the extruder can peek - before colliding with other printed objects. (mm, default: 20) - --extruder-clearance-radius N - Set this to the clearance radius around your extruder. If the extruder is not - centered, choose the largest value for safety. This setting is used to check for - collisions and to display the graphical preview in the plater. (mm, default: 20) - --extruder-colour ABCD - This is only used in the Slic3r interface as a visual help. (default: "") - --extruder-offset If your firmware doesn't handle the extruder displacement you need the G-code to - take it into account. This option lets you specify the displacement of each - extruder with respect to the first one. It expects positive coordinates (they - will be subtracted from the XY coordinate). (mm, default: 0x0) - --extrusion-axis ABCD - Use this option to set the axis letter associated to your printer's extruder - (usually E but some printers use A). (default: E) - --extrusion-multiplier N - This factor changes the amount of flow proportionally. You may need to tweak - this setting to get nice surface finish and correct single wall widths. Usual - values are between 0.9 and 1.1. If you think you need to change this more, check - filament diameter and your firmware E steps. (default: 1) - --fan-always-on If this is enabled, fan will never be disabled and will be kept running at least - at its minimum speed. Useful for PLA, harmful for ABS. (default: 0) - --fan-below-layer-time N - If layer print time is estimated below this number of seconds, fan will be - enabled and its speed will be calculated by interpolating the minimum and - maximum speeds. (approximate seconds, default: 60) - --filament-colour ABCD - This is only used in the Slic3r interface as a visual help. (default: #29B2B2) - --filament-cooling-final-speed N - Cooling moves are gradually accelerating towards this speed. (mm/s, default: - 3.4) - --filament-cooling-initial-speed N - Cooling moves are gradually accelerating beginning at this speed. (mm/s, - default: 2.2) - --filament-cooling-moves N - Filament is cooled by being moved back and forth in the cooling tubes. Specify - desired number of these moves. (default: 4) - --filament-cost N Enter your filament cost per kg here. This is only for statistical information. - (money/kg, default: 0) - --filament-density N - Enter your filament density here. This is only for statistical information. A - decent way is to weigh a known length of filament and compute the ratio of the - length to volume. Better is to calculate the volume directly through - displacement. (g/cm³, default: 0) - --filament-deretract-speed N - The speed for loading of a filament into extruder after retraction (it only - applies to the extruder motor). If left to zero, the retraction speed is used. - (mm/s, default: 0) - --filament-diameter N - Enter your filament diameter here. Good precision is required, so use a caliper - and do multiple measurements along the filament, then compute the average. (mm, - default: 1.75) - --filament-load-time N - Time for the printer firmware (or the Multi Material Unit 2.0) to load a new - filament during a tool change (when executing the T code). This time is added to - the total print time by the G-code time estimator. (s, default: 0) - --filament-loading-speed N - Speed used for loading the filament on the wipe tower. (mm/s, default: 28) - --filament-loading-speed-start N - Speed used at the very beginning of loading phase. (mm/s, default: 3) - --filament-max-volumetric-speed N - Maximum volumetric speed allowed for this filament. Limits the maximum - volumetric speed of a print to the minimum of print and filament volumetric - speed. Set to zero for no limit. (mm³/s, default: 0) - --filament-minimal-purge-on-wipe-tower N - After a tool change, the exact position of the newly loaded filament inside the - nozzle may not be known, and the filament pressure is likely not yet stable. - Before purging the print head into an infill or a sacrificial object, Slic3r - will always prime this amount of material into the wipe tower to produce - successive infill or sacrificial object extrusions reliably. (mm³, default: 15) - --filament-notes ABCD - You can put your notes regarding the filament here. (default: "") - --filament-ramming-parameters ABCD - This string is edited by RammingDialog and contains ramming specific parameters. - (default: "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-before-travel N - Retraction is not triggered when travel moves are shorter than this length. (mm, - default: 2) - --filament-retract-before-wipe - With bowden extruders, it may be wise to do some amount of quick retract before - doing the wipe movement. (%, default: 0%) - --filament-retract-layer-change - This flag enforces a retraction whenever a Z move is done. (default: 0) - --filament-retract-length N - When retraction is triggered, filament is pulled back by the specified amount - (the length is measured on raw filament, before it enters the extruder). (mm - (zero to disable), default: 2) - --filament-retract-lift N - If you set this to a positive value, Z is quickly raised every time a retraction - is triggered. When using multiple extruders, only the setting for the first - extruder will be considered. (mm, default: 0) - --filament-retract-lift-above N - If you set this to a positive value, Z lift will only take place above the - specified absolute Z. You can tune this setting for skipping lift on the first - layers. (mm, default: 0) - --filament-retract-lift-below N - If you set this to a positive value, Z lift will only take place below the - specified absolute Z. You can tune this setting for limiting lift to the first - layers. (mm, default: 0) - --filament-retract-restart-extra N - When the retraction is compensated after the travel move, the extruder will push - this additional amount of filament. This setting is rarely needed. (mm, default: - 0) - --filament-retract-speed N - The speed for retractions (it only applies to the extruder motor). (mm/s, - default: 40) - --filament-soluble Soluble material is most likely used for a soluble support. (default: 0) - --filament-spool-weight N - Enter weight of the empty filament spool. One may weigh a partially consumed - filament spool before printing and one may compare the measured weight with the - calculated weight of the filament with the spool to find out whether the amount - of filament on the spool is sufficient to finish the print. (g, default: 0) - --filament-toolchange-delay N - Time to wait after the filament is unloaded. May help to get reliable - toolchanges with flexible materials that may need more time to shrink to - original dimensions. (s, default: 0) - --filament-type ABCD - The filament material type for use in custom G-codes. (PLA, PET, ABS, ASA, FLEX, - HIPS, EDGE, NGEN, PA, NYLON, PVA, PC, PP, PEI, PEEK, PEKK, POM, PSU, PVDF, - SCAFF; default: PLA) - --filament-unload-time N - Time for the printer firmware (or the Multi Material Unit 2.0) to unload a - filament during a tool change (when executing the T code). This time is added to - the total print time by the G-code time estimator. (s, default: 0) - --filament-unloading-speed N - Speed used for unloading the filament on the wipe tower (does not affect initial - part of unloading just after ramming). (mm/s, default: 90) - --filament-unloading-speed-start N - Speed used for unloading the tip of the filament immediately after ramming. - (mm/s, default: 100) - --filament-wipe This flag will move the nozzle while retracting to minimize the possible blob on - leaky extruders. (default: 0) - --first-layer-acceleration N - This is the acceleration your printer will use for first layer. Set zero to - disable acceleration control for first layer. (mm/s², default: 0) - --first-layer-acceleration-over-raft N - This is the acceleration your printer will use for first layer of object above - raft interface. Set zero to disable acceleration control for first layer of - object above raft interface. (mm/s², default: 0) - --first-layer-bed-temperature N - Heated build plate temperature for the first layer. Set this to zero to disable - bed temperature control commands in the output. (°C, default: 0) - --first-layer-speed N - If expressed as absolute value in mm/s, this speed will be applied to all the - print moves of the first layer, regardless of their type. If expressed as a - percentage (for example: 40%) it will scale the default speeds. (mm/s or %, - default: 30) - --first-layer-speed-over-raft N - If expressed as absolute value in mm/s, this speed will be applied to all the - print moves of the first object layer above raft interface, regardless of their - type. If expressed as a percentage (for example: 40%) it will scale the default - speeds. (mm/s or %, default: 30) - --first-layer-temperature N - Nozzle temperature for the first layer. If you want to control temperature - manually during print, set this to zero to disable temperature control commands - in the output G-code. (°C, default: 200) - --full-fan-speed-layer N - Fan speed will be ramped up linearly from zero at layer - "disable_fan_first_layers" to maximum at layer "full_fan_speed_layer". - "full_fan_speed_layer" will be ignored if lower than "disable_fan_first_layers", - in which case the fan will be running at maximum allowed speed at layer - "disable_fan_first_layers" + 1. (default: 0) - --gcode-comments Enable this to get a commented G-code file, with each line explained by a - descriptive text. If you print from SD card, the additional weight of the file - could make your firmware slow down. - --gcode-flavor Some G/M-code commands, including temperature control and others, are not - universal. Set this option to your printer's firmware to get a compatible - output. The "No extrusion" flavor prevents PrusaSlicer from exporting any - extrusion value at all. (reprap, reprapfirmware, repetier, teacup, makerware, - marlin, marlin2, sailfish, mach3, machinekit, smoothie, no-extrusion; default: - reprap) - --gcode-label-objects - Enable this to add comments into the G-Code labeling print moves with what - object they belong to, which is useful for the Octoprint CancelObject plugin. - This settings is NOT compatible with Single Extruder Multi Material setup and - Wipe into Object / Wipe into Infill. - --gcode-resolution N - Maximum deviation of exported G-code paths from their full resolution - counterparts. Very high resolution G-code requires huge amount of RAM to slice - and preview, also a 3D printer may stutter not being able to process a high - resolution G-code in a timely manner. On the other hand, a low resolution G-code - will produce a low poly effect and because the G-code reduction is performed at - each layer independently, visible artifacts may be produced. (mm, default: - 0.0125) - --gcode-substitutions ABCD - Find / replace patterns in G-code lines and substitute them. (default: ) - --high-current-on-filament-swap - It may be beneficial to increase the extruder motor current during the filament - exchange sequence to allow for rapid ramming feed rates and to overcome - resistance when loading a filament with an ugly shaped tip. - --infill-acceleration N - This is the acceleration your printer will use for infill. Set zero to disable - acceleration control for infill. (mm/s², default: 0) - --infill-first This option will switch the print order of perimeters and infill, making the - latter first. - --after-layer-gcode ABCD, --layer-gcode ABCD - This custom code is inserted at every layer change, right after the Z move and - before the extruder moves to the first layer point. Note that you can use - placeholder variables for all Slic3r settings as well as [layer_num] and - [layer_z]. - --max-fan-speed N This setting represents the maximum speed of your fan. (%, default: 100) - --max-layer-height N - This is the highest printable layer height for this extruder, used to cap the - variable layer height and support layer height. Maximum recommended layer height - is 75% of the extrusion width to achieve reasonable inter-layer adhesion. If set - to 0, layer height is limited to 75% of the nozzle diameter. (mm, default: 0) - --max-print-height N - Set this to the maximum height that can be reached by your extruder while - printing. (mm, default: 200) - --max-print-speed N When setting other speed settings to 0 Slic3r will autocalculate the optimal - speed in order to keep constant extruder pressure. This experimental setting is - used to set the highest print speed you want to allow. (mm/s, default: 80) - --max-volumetric-extrusion-rate-slope-negative N - This experimental setting is used to limit the speed of change in extrusion rate - for a transition from higher speed to lower speed. A value of 1.8 mm³/s² - ensures, that a change from the extrusion rate of 5.4 mm³/s (0.45 mm extrusion - width, 0.2 mm extrusion height, feedrate 60 mm/s) to 1.8 mm³/s (feedrate 20 - mm/s) will take at least 2 seconds. (mm³/s², default: 0) - --max-volumetric-extrusion-rate-slope-positive N - This experimental setting is used to limit the speed of change in extrusion rate - for a transition from lower speed to higher speed. A value of 1.8 mm³/s² - ensures, that a change from the extrusion rate of 1.8 mm³/s (0.45 mm extrusion - width, 0.2 mm extrusion height, feedrate 20 mm/s) to 5.4 mm³/s (feedrate 60 - mm/s) will take at least 2 seconds. (mm³/s², default: 0) - --max-volumetric-speed N - This experimental setting is used to set the maximum volumetric speed your - extruder supports. (mm³/s, default: 0) - --min-fan-speed N This setting represents the minimum PWM your fan needs to work. (%, default: 35) - --min-layer-height N - This is the lowest printable layer height for this extruder and limits the - resolution for variable layer height. Typical values are between 0.05 mm and 0.1 - mm. (mm, default: 0.07) - --min-print-speed N Slic3r will not scale speed down below this speed. (mm/s, default: 10) - --min-skirt-length N - Generate no less than the number of skirt loops required to consume the - specified amount of filament on the bottom layer. For multi-extruder machines, - this minimum applies to each extruder. (mm, default: 0) - --notes ABCD You can put here your personal notes. This text will be added to the G-code - header comments. - --nozzle-diameter N This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.) (mm, - default: 0.4) - --only-retract-when-crossing-perimeters - Disables retraction when the travel path does not exceed the upper layer's - perimeters (and thus any ooze will be probably invisible). - --ooze-prevention This option will drop the temperature of the inactive extruders to prevent - oozing. It will enable a tall skirt automatically and move extruders outside - such skirt when changing temperatures. - --output-filename-format ABCD - You can use all configuration options as variables inside this template. For - example: [layer_height], [fill_density] etc. You can also use [timestamp], - [year], [month], [day], [hour], [minute], [second], [version], [input_filename], - [input_filename_base]. (default: [input_filename_base].gcode) - --parking-pos-retraction N - Distance of the extruder tip from the position where the filament is parked when - unloaded. This should match the value in printer firmware. (mm, default: 92) - --pause-print-gcode ABCD - This G-code will be used as a code for the pause print (default: M601) - --perimeter-acceleration N - This is the acceleration your printer will use for perimeters. Set zero to - disable acceleration control for perimeters. (mm/s², default: 0) - --post-process ABCD If you want to process the output G-code through custom scripts, just list their - absolute paths here. Separate multiple scripts with a semicolon. Scripts will be - passed the absolute path to the G-code file as the first argument, and they can - access the Slic3r config settings by reading environment variables. (default: ) - --preset-name ABCD - --preset-names ABCD Names of presets related to the physical printer (default: ) - --printer-notes ABCD - You can put your notes regarding the printer here. - --printer-technology - Printer technology (FFF, SLA; default: FFF) - --remaining-times Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute intervals - into the G-code to let the firmware show accurate remaining time. As of now only - the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 firmware supports M73 - Qxx Sxx for the silent mode. - --resolution N Minimum detail resolution, used to simplify the input file for speeding up the - slicing job and reducing memory usage. High-resolution models often carry more - detail than printers can render. Set to zero to disable any simplification and - use full resolution from input. (mm, default: 0) - --retract-before-travel N - Retraction is not triggered when travel moves are shorter than this length. (mm, - default: 2) - --retract-before-wipe - With bowden extruders, it may be wise to do some amount of quick retract before - doing the wipe movement. (%, default: 0%) - --retract-layer-change - This flag enforces a retraction whenever a Z move is done. (default: 0) - --retract-length N When retraction is triggered, filament is pulled back by the specified amount - (the length is measured on raw filament, before it enters the extruder). (mm - (zero to disable), default: 2) - --retract-length-toolchange N - When retraction is triggered before changing tool, filament is pulled back by - the specified amount (the length is measured on raw filament, before it enters - the extruder). (mm (zero to disable), default: 10) - --retract-lift N If you set this to a positive value, Z is quickly raised every time a retraction - is triggered. When using multiple extruders, only the setting for the first - extruder will be considered. (mm, default: 0) - --retract-lift-above N - If you set this to a positive value, Z lift will only take place above the - specified absolute Z. You can tune this setting for skipping lift on the first - layers. (mm, default: 0) - --retract-lift-below N - If you set this to a positive value, Z lift will only take place below the - specified absolute Z. You can tune this setting for limiting lift to the first - layers. (mm, default: 0) - --retract-restart-extra N - When the retraction is compensated after the travel move, the extruder will push - this additional amount of filament. This setting is rarely needed. (mm, default: - 0) - --retract-restart-extra-toolchange N - When the retraction is compensated after changing tool, the extruder will push - this additional amount of filament. (mm, default: 0) - --retract-speed N The speed for retractions (it only applies to the extruder motor). (mm/s, - default: 40) - --silent-mode The firmware supports stealth mode - --single-extruder-multi-material - The printer multiplexes filaments into a single hot end. - --single-extruder-multi-material-priming - If enabled, all printing extruders will be primed at the front edge of the print - bed at the start of the print. - --skirt-distance N Distance between skirt and brim (when draft shield is not used) or objects. (mm, - default: 6) - --skirt-height N Height of skirt expressed in layers. (layers, default: 1) - --skirts N Number of loops for the skirt. If the Minimum Extrusion Length option is set, - the number of loops might be greater than the one configured here. Set this to - zero to disable skirt completely. (default: 1) - --slowdown-below-layer-time N - If layer print time is estimated below this number of seconds, print moves speed - will be scaled down to extend duration to this value. (approximate seconds, - default: 5) - --solid-layers N Number of solid layers to generate on top and bottom surfaces. - --solid-min-thickness N - Minimum thickness of a top / bottom shell - --spiral-vase This feature will raise Z gradually while printing a single-walled object in - order to remove any visible seam. This option requires a single perimeter, no - infill, no top solid layers and no support material. You can still set any - number of bottom solid layers as well as skirt/brim loops. It won't work when - printing more than one single object. - --standby-temperature-delta N - Temperature difference to be applied when an extruder is not active. Enables a - full-height "sacrificial" skirt on which the nozzles are periodically wiped. - (∆°C, default: -5) - --start-filament-gcode ABCD - This start procedure is inserted at the beginning, after any printer start gcode - (and after any toolchange to this filament in case of multi-material printers). - This is used to override settings for a specific filament. If PrusaSlicer - detects M104, M109, M140 or M190 in your custom codes, such commands will not be - prepended automatically so you're free to customize the order of heating - commands and other custom actions. Note that you can use placeholder variables - for all PrusaSlicer settings, so you can put a "M109 S[first_layer_temperature]" - command wherever you want. If you have multiple extruders, the gcode is - processed in extruder order. (default: "; Filament gcode\n") - --start-gcode ABCD This start procedure is inserted at the beginning, after bed has reached the - target temperature and extruder just started heating, and before extruder has - finished heating. If PrusaSlicer detects M104 or M190 in your custom codes, such - commands will not be prepended automatically so you're free to customize the - order of heating commands and other custom actions. Note that you can use - placeholder variables for all PrusaSlicer settings, so you can put a "M109 - S[first_layer_temperature]" command wherever you want. (default: G28 ; home all - axes\nG1 Z5 F5000 ; lift nozzle\n) - --temperature N Nozzle temperature for layers after the first one. Set this to zero to disable - temperature control commands in the output G-code. (°C, default: 200) - --template-custom-gcode ABCD - This G-code will be used as a custom code - --thumbnails Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the - following format: "XxY, XxY, ..." (default: ) - --thumbnails-format Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI - for low memory firmware (PNG, JPG, QOI; default: PNG) - --toolchange-gcode ABCD - This custom code is inserted before every toolchange. Placeholder variables for - all PrusaSlicer settings as well as {toolchange_z}, {previous_extruder} and - {next_extruder} can be used. When a tool-changing command which changes to the - correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit - no other such command. It is therefore possible to script custom behaviour both - before and after the toolchange. - --travel-speed N Speed for travel moves (jumps between distant extrusion points). (mm/s, default: - 130) - --travel-speed-z N Speed for movements along the Z axis. When set to zero, the value is ignored and - regular travel speed is used instead. (mm/s, default: 0) - --use-firmware-retraction - This experimental setting uses G10 and G11 commands to have the firmware handle - the retraction. This is only supported in recent Marlin. - --use-relative-e-distances - If your firmware requires relative E values, check this, otherwise leave it - unchecked. Most firmwares use absolute values. - --use-volumetric-e This experimental setting uses outputs the E values in cubic millimeters instead - of linear millimeters. If your firmware doesn't already know filament - diameter(s), you can put commands like 'M200 D[filament_diameter_0] T0' in your - start G-code in order to turn volumetric mode on and use the filament diameter - associated to the filament selected in Slic3r. This is only supported in recent - Marlin. - --variable-layer-height - Some printers or printer setups may have difficulties printing with a variable - layer height. Enabled by default. - --wipe This flag will move the nozzle while retracting to minimize the possible blob on - leaky extruders. (default: 0) - --wipe-tower Multi material printers may need to prime or purge extruders on tool changes. - Extrude the excess material into the wipe tower. - --wipe-tower-bridging N - Maximal distance between supports on sparse infill sections. (mm, default: 10) - --wipe-tower-brim-width N - Wipe tower brim width (mm, default: 2) - --wipe-tower-no-sparse-layers - If enabled, the wipe tower will not be printed on layers with no toolchanges. On - layers with a toolchange, extruder will travel downward to print the wipe tower. - User is responsible for ensuring there is no collision with the print. - --wipe-tower-rotation-angle N - Wipe tower rotation angle with respect to x-axis. (°, default: 0) - --wipe-tower-width N - Width of a wipe tower (mm, default: 60) - --wipe-tower-x N X coordinate of the left front corner of a wipe tower (mm, default: 180) - --wipe-tower-y N Y coordinate of the left front corner of a wipe tower (mm, default: 140) - --wiping-volumes-extruders N - This vector saves required volumes to change from/to each tool used on the wipe - tower. These values are used to simplify creation of the full purging volumes - below. (default: 70,70,70,70,70,70,70,70,70,70) - --wiping-volumes-matrix N - This matrix describes volumes (in cubic milimetres) required to purge the new - filament on the wipe tower for any given pair of tools. (default: - 0,140,140,140,140,140,0,140,140,140,140,140,0,140,140,140,140,140,0,140,140,140,140,140,0) - --z-offset N This value will be added (or subtracted) from all the Z coordinates in the - output G-code. It is used to compensate for bad Z endstop position: for example, - if your endstop zero actually leaves the nozzle 0.3mm far from the print bed, - set this to -0.3 (or fix your endstop). (mm, default: 0) -Advanced: - --bridge-flow-ratio N - This factor affects the amount of plastic for bridging. You can decrease it - slightly to pull the extrudates and prevent sagging, although default settings - are usually good and you should experiment with cooling (use a fan) before - tweaking this. (default: 1) - --elefant-foot-compensation N - The first layer will be shrunk in the XY plane by the configured value to - compensate for the 1st layer squish aka an Elephant Foot effect. (mm, default: - 0) - --infill-anchor N Connect an infill line to an internal perimeter with a short segment of an - additional perimeter. If expressed as percentage (example: 15%) it is calculated - over infill extrusion width. PrusaSlicer tries to connect two close infill lines - to a short perimeter segment. If no such perimeter segment shorter than - infill_anchor_max is found, the infill line is connected to a perimeter segment - at just one side and the length of the perimeter segment taken is limited to - this parameter, but no longer than anchor_length_max. Set this parameter to zero - to disable anchoring perimeters connected to a single infill line. (mm or %, - default: 600%) - --infill-anchor-max N - Connect an infill line to an internal perimeter with a short segment of an - additional perimeter. If expressed as percentage (example: 15%) it is calculated - over infill extrusion width. PrusaSlicer tries to connect two close infill lines - to a short perimeter segment. If no such perimeter segment shorter than this - parameter is found, the infill line is connected to a perimeter segment at just - one side and the length of the perimeter segment taken is limited to - infill_anchor, but no longer than this parameter. Set this parameter to zero to - disable anchoring. (mm or %, default: 50) - --infill-overlap N This setting applies an additional overlap between infill and perimeters for - better bonding. Theoretically this shouldn't be needed, but backlash might cause - gaps. If expressed as percentage (example: 15%) it is calculated over perimeter - extrusion width. (mm or %, default: 25%) - --min-bead-width N Width of the perimeter that will replace thin features (according to the Minimum - feature size) of the model. If the Minimum perimeter width is thinner than the - thickness of the feature, the perimeter will become as thick as the feature - itself. If expressed as a percentage (for example 85%), it will be computed - based on the nozzle diameter. (mm or %, default: 85%) - --min-feature-size N - Minimum thickness of thin features. Model features that are thinner than this - value will not be printed, while features thicker than the Minimum feature size - will be widened to the Minimum perimeter width. If expressed as a percentage - (for example 25%), it will be computed based on the nozzle diameter. (mm or %, - default: 25%) - --mmu-segmented-region-max-width N - Maximum width of a segmented region. Zero disables this feature. (mm (zero to - disable), default: 0) - --slice-closing-radius N - Cracks smaller than 2x gap closing radius are being filled during the triangle - mesh slicing. The gap closing operation may reduce the final print resolution, - therefore it is advisable to keep the value reasonably low. (mm, default: 0.049) - --slicing-mode Use "Even-odd" for 3DLabPrint airplane models. Use "Close holes" to close all - holes in the model. (regular, even_odd, close_holes; default: regular) - --wall-distribution-count N - The number of perimeters, counted from the center, over which the variation - needs to be spread. Lower values mean that the outer perimeters don't change in - width. (default: 1) - --wall-transition-angle N - When to create transitions between even and odd numbers of perimeters. A wedge - shape with an angle greater than this setting will not have transitions and no - perimeters will be printed in the center to fill the remaining space. Reducing - this setting reduces the number and length of these center perimeters, but may - leave gaps or overextrude. (°, default: 10) - --wall-transition-filter-deviation N - Prevent transitioning back and forth between one extra perimeter and one less. - This margin extends the range of extrusion widths which follow to [Minimum - perimeter width - margin, 2 * Minimum perimeter width + margin]. Increasing this - margin reduces the number of transitions, which reduces the number of extrusion - starts/stops and travel time. However, large extrusion width variation can lead - to under- or overextrusion problems. If expressed as a percentage (for example - 25%), it will be computed based on the nozzle diameter. (mm or %, default: 25%) - --wall-transition-length N - When transitioning between different numbers of perimeters as the part becomes - thinner, a certain amount of space is allotted to split or join the perimeter - segments. If expressed as a percentage (for example 100%), it will be computed - based on the nozzle diameter. (mm or %, default: 100%) - --xy-size-compensation N - The object will be grown/shrunk in the XY plane by the configured value - (negative = inwards, positive = outwards). This might be useful for fine-tuning - hole sizes. (mm, default: 0) -Extruders: - --extruder N The extruder to use (unless more specific extruder settings are specified). This - value overrides perimeter and infill extruders, but not the support extruders. - --infill-extruder N The extruder to use when printing infill. (default: 1) - --perimeter-extruder N - The extruder to use when printing perimeters and brim. First extruder is 1. - (default: 1) - --solid-infill-extruder N - The extruder to use when printing solid infill. (default: 1) - --support-material-extruder N - The extruder to use when printing support material, raft and skirt (1+, 0 to use - the current extruder to minimize tool changes). (default: 1) - --support-material-interface-extruder N - The extruder to use when printing support material interface (1+, 0 to use the - current extruder to minimize tool changes). This affects raft too. (default: 1) -Extrusion Width: - --external-perimeter-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for external - perimeters. If left zero, default extrusion width will be used if set, otherwise - 1.125 x nozzle diameter will be used. If expressed as percentage (for example - 200%), it will be computed over layer height. (mm or %, default: 0) - --extrusion-width N Set this to a non-zero value to allow a manual extrusion width. If left to zero, - Slic3r derives extrusion widths from the nozzle diameter (see the tooltips for - perimeter extrusion width, infill extrusion width etc). If expressed as - percentage (for example: 230%), it will be computed over layer height. (mm or %, - default: 0) - --first-layer-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for first layer. - You can use this to force fatter extrudates for better adhesion. If expressed as - percentage (for example 120%) it will be computed over first layer height. If - set to zero, it will use the default extrusion width. (mm or %, default: 200%) - --infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill. If left - zero, default extrusion width will be used if set, otherwise 1.125 x nozzle - diameter will be used. You may want to use fatter extrudates to speed up the - infill and make your parts stronger. If expressed as percentage (for example - 90%) it will be computed over layer height. (mm or %, default: 0) - --perimeter-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for perimeters. You - may want to use thinner extrudates to get more accurate surfaces. If left zero, - default extrusion width will be used if set, otherwise 1.125 x nozzle diameter - will be used. If expressed as percentage (for example 200%) it will be computed - over layer height. (mm or %, default: 0) - --solid-infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill for - solid surfaces. If left zero, default extrusion width will be used if set, - otherwise 1.125 x nozzle diameter will be used. If expressed as percentage (for - example 90%) it will be computed over layer height. (mm or %, default: 0) - --support-material-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for support - material. If left zero, default extrusion width will be used if set, otherwise - nozzle diameter will be used. If expressed as percentage (for example 90%) it - will be computed over layer height. (mm or %, default: 0) - --top-infill-extrusion-width N - Set this to a non-zero value to set a manual extrusion width for infill for top - surfaces. You may want to use thinner extrudates to fill all narrow regions and - get a smoother finish. If left zero, default extrusion width will be used if - set, otherwise nozzle diameter will be used. If expressed as percentage (for - example 90%) it will be computed over layer height. (mm or %, default: 0) -Fuzzy Skin: - --fuzzy-skin Fuzzy skin type. (none, external, all; default: none) - --fuzzy-skin-point-dist N - Perimeters will be split into multiple segments by inserting Fuzzy skin points. - Lowering the Fuzzy skin point distance will increase the number of randomly - offset points on the perimeter wall. (mm, default: 0.8) - --fuzzy-skin-thickness N - The maximum distance that each skin point can be offset (both ways), measured - perpendicular to the perimeter wall. (mm, default: 0.3) -Infill: - --bottom-fill-pattern, --external-fill-pattern, --solid-fill-pattern - Fill pattern for bottom infill. This only affects the bottom external visible - layer, and not its adjacent solid shells. (rectilinear, monotonic, - alignedrectilinear, concentric, hilbertcurve, archimedeanchords, octagramspiral; - default: monotonic) - --bridge-angle N Bridging angle override. If left to zero, the bridging angle will be calculated - automatically. Otherwise the provided angle will be used for all bridges. Use - 180° for zero angle. (°, default: 0) - --fill-angle N Default base angle for infill orientation. Cross-hatching will be applied to - this. Bridges will be infilled using the best direction Slic3r can detect, so - this setting does not affect them. (°, default: 45) - --fill-density Density of internal infill, expressed in the range 0% - 100%. (%, default: 20%) - --fill-pattern Fill pattern for general low-density infill. (rectilinear, alignedrectilinear, - grid, triangles, stars, cubic, line, concentric, honeycomb, 3dhoneycomb, gyroid, - hilbertcurve, archimedeanchords, octagramspiral, adaptivecubic, supportcubic, - lightning; default: stars) - --infill-every-layers N - This feature allows to combine infill and speed up your print by extruding - thicker infill layers while preserving thin perimeters, thus accuracy. (layers, - default: 1) - --infill-only-where-needed - This option will limit infill to the areas actually needed for supporting - ceilings (it will act as internal support material). If enabled, slows down the - G-code generation due to the multiple checks involved. - --solid-infill-below-area N - Force solid infill for regions having a smaller area than the specified - threshold. (mm², default: 70) - --solid-infill-every-layers N - This feature allows to force a solid layer every given number of layers. Zero to - disable. You can set this to any value (for example 9999); Slic3r will - automatically choose the maximum possible number of layers to combine according - to nozzle diameter and layer height. (layers, default: 0) - --top-fill-pattern, --external-fill-pattern, --solid-fill-pattern - Fill pattern for top infill. This only affects the top visible layer, and not - its adjacent solid shells. (rectilinear, monotonic, alignedrectilinear, - concentric, hilbertcurve, archimedeanchords, octagramspiral; default: monotonic) -Ironing: - --ironing Enable ironing of the top layers with the hot print head for smooth surface - --ironing-flowrate Percent of a flow rate relative to object's normal layer height. (%, default: - 15%) - --ironing-spacing N Distance between ironing lines (mm, default: 0.1) - --ironing-type Ironing Type (top, topmost, solid; default: top) -Layers and Perimeters: - --avoid-crossing-perimeters-max-detour N - The maximum detour length for avoid crossing perimeters. If the detour is longer - than this value, avoid crossing perimeters is not applied for this travel path. - Detour length could be specified either as an absolute value or as percentage - (for example 50%) of a direct travel path. (mm or % (zero to disable), default: - 0) - --bottom-solid-layers N - Number of solid layers to generate on bottom surfaces. (default: 3) - --bottom-solid-min-thickness N - The number of bottom solid layers is increased above bottom_solid_layers if - necessary to satisfy minimum thickness of bottom shell. (mm, default: 0) - --ensure-vertical-shell-thickness - Add solid infill near sloping surfaces to guarantee the vertical shell thickness - (top+bottom solid layers). - --external-perimeters-first - Print contour perimeters from the outermost one to the innermost one instead of - the default inverse order. - --extra-perimeters Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r keeps - adding perimeters, until more than 70% of the loop immediately above is - supported. - --first-layer-height N - When printing with very low layer heights, you might still want to print a - thicker bottom layer to improve adhesion and tolerance for non perfect build - plates. (mm, default: 0.35) - --gap-fill-enabled Enables filling of gaps between perimeters and between the inner most perimeters - and infill. - --interface-shells Force the generation of solid shells between adjacent materials/volumes. Useful - for multi-extruder prints with translucent materials or manual soluble support - material. - --layer-height N This setting controls the height (and thus the total number) of the - slices/layers. Thinner layers give better accuracy but take more time to print. - (mm, default: 0.3) - --overhangs Experimental option to adjust flow for overhangs (bridge flow will be used), to - apply bridge speed to them and enable fan. - --perimeter-generator - Classic perimeter generator produces perimeters with constant extrusion width - and for very thin areas is used gap-fill. Arachne engine produces perimeters - with variable extrusion width. This setting also affects the Concentric infill. - (classic, arachne; default: arachne) - --perimeters N This option sets the number of perimeters to generate for each layer. Note that - Slic3r may increase this number automatically when it detects sloping surfaces - which benefit from a higher number of perimeters if the Extra Perimeters option - is enabled. ((minimum), default: 3) - --seam-position Position of perimeters starting points. (random, nearest, aligned, rear; - default: aligned) - --thick-bridges If enabled, bridges are more reliable, can bridge longer distances, but may look - worse. If disabled, bridges look better but are reliable just for shorter - bridged distances. - --thin-walls Detect single-width walls (parts where two extrusions don't fit and we need to - collapse them into a single trace). - --top-solid-layers N - Number of solid layers to generate on top surfaces. (default: 3) - --top-solid-min-thickness N - The number of top solid layers is increased above top_solid_layers if necessary - to satisfy minimum thickness of top shell. This is useful to prevent pillowing - effect when printing with variable layer height. (mm, default: 0) -Machine limits: - --machine-limits-usage - How to apply the Machine Limits (emit_to_gcode, time_estimate_only, ignore; - default: time_estimate_only) - --machine-max-acceleration-e N - Maximum acceleration of the E axis (mm/s², default: 10000,5000) - --machine-max-acceleration-extruding N - Maximum acceleration when extruding (M204 P) Marlin (legacy) firmware flavor - will use this also as travel acceleration (M204 T). (mm/s², default: 1500,1250) - --machine-max-acceleration-retracting N - Maximum acceleration when retracting (M204 R) (mm/s², default: 1500,1250) - --machine-max-acceleration-travel N - Maximum acceleration for travel moves (M204 T) (mm/s², default: 1500,1250) - --machine-max-acceleration-x N - Maximum acceleration of the X axis (mm/s², default: 9000,1000) - --machine-max-acceleration-y N - Maximum acceleration of the Y axis (mm/s², default: 9000,1000) - --machine-max-acceleration-z N - Maximum acceleration of the Z axis (mm/s², default: 500,200) - --machine-max-feedrate-e N - Maximum feedrate of the E axis (mm/s, default: 120,120) - --machine-max-feedrate-x N - Maximum feedrate of the X axis (mm/s, default: 500,200) - --machine-max-feedrate-y N - Maximum feedrate of the Y axis (mm/s, default: 500,200) - --machine-max-feedrate-z N - Maximum feedrate of the Z axis (mm/s, default: 12,12) - --machine-max-jerk-e N - Maximum jerk of the E axis (mm/s, default: 2.5,2.5) - --machine-max-jerk-x N - Maximum jerk of the X axis (mm/s, default: 10,10) - --machine-max-jerk-y N - Maximum jerk of the Y axis (mm/s, default: 10,10) - --machine-max-jerk-z N - Maximum jerk of the Z axis (mm/s, default: 0.2,0.4) - --machine-min-extruding-rate N - Minimum feedrate when extruding (M205 S) (mm/s, default: 0,0) - --machine-min-travel-rate N - Minimum travel feedrate (M205 T) (mm/s, default: 0,0) -Skirt and brim: - --brim-separation N Offset of brim from the printed object. The offset is applied after the elephant - foot compensation. (mm, default: 0) - --brim-type The places where the brim will be printed around each object on the first layer. - (no_brim, outer_only, inner_only, outer_and_inner; default: outer_only) - --brim-width N The horizontal width of the brim that will be printed around each object on the - first layer. When raft is used, no brim is generated (use - raft_first_layer_expansion). (mm, default: 0) -Speed: - --bridge-speed N Speed for printing bridges. (mm/s, default: 60) - --external-perimeter-speed N - This separate setting will affect the speed of external perimeters (the visible - ones). If expressed as percentage (for example: 80%) it will be calculated on - the perimeters speed setting above. Set to zero for auto. (mm/s or %, default: - 50%) - --gap-fill-speed N Speed for filling small gaps using short zigzag moves. Keep this reasonably low - to avoid too much shaking and resonance issues. Set zero to disable gaps - filling. (mm/s, default: 20) - --infill-speed N Speed for printing the internal fill. Set to zero for auto. (mm/s, default: 80) - --ironing-speed N Ironing (mm/s, default: 15) - --perimeter-speed N Speed for perimeters (contours, aka vertical shells). Set to zero for auto. - (mm/s, default: 60) - --small-perimeter-speed N - This separate setting will affect the speed of perimeters having radius <= 6.5mm - (usually holes). If expressed as percentage (for example: 80%) it will be - calculated on the perimeters speed setting above. Set to zero for auto. (mm/s or - %, default: 15) - --solid-infill-speed N - Speed for printing solid regions (top/bottom/internal horizontal shells). This - can be expressed as a percentage (for example: 80%) over the default infill - speed above. Set to zero for auto. (mm/s or %, default: 20) - --top-solid-infill-speed N - Speed for printing top solid layers (it only applies to the uppermost external - layers and not to their internal solid layers). You may want to slow down this - to get a nicer surface finish. This can be expressed as a percentage (for - example: 80%) over the solid infill speed above. Set to zero for auto. (mm/s or - %, default: 15) -Support material: - --dont-support-bridges - Experimental option for preventing support material from being generated under - bridged areas. - --raft-contact-distance N - The vertical distance between object and raft. Ignored for soluble interface. - (mm, default: 0.1) - --raft-expansion N Expansion of the raft in XY plane for better stability. (mm, default: 1.5) - --raft-first-layer-density - Density of the first raft or support layer. (%, default: 90%) - --raft-first-layer-expansion N - Expansion of the first raft or support layer to improve adhesion to print bed. - (mm, default: 3) - --raft-layers N The object will be raised by this number of layers, and support material will be - generated under it. (layers, default: 0) - --support-material Enable support material generation. - --support-material-angle N - Use this setting to rotate the support material pattern on the horizontal plane. - (°, default: 0) - --support-material-auto - If checked, supports will be generated automatically based on the overhang - threshold value. If unchecked, supports will be generated inside the "Support - Enforcer" volumes only. - --support-material-bottom-contact-distance N - The vertical distance between the object top surface and the support material - interface. If set to zero, support_material_contact_distance will be used for - both top and bottom contact Z distances. (mm, default: 0) - --support-material-bottom-interface-layers N - Number of interface layers to insert between the object(s) and support material. - Set to -1 to use support_material_interface_layers (layers, default: -1) - --support-material-buildplate-only - Only create support if it lies on a build plate. Don't create support on a - print. - --support-material-closing-radius N - For snug supports, the support regions will be merged using morphological - closing operation. Gaps smaller than the closing radius will be filled in. (mm, - default: 2) - --support-material-contact-distance N - The vertical distance between object and support material interface. Setting - this to 0 will also prevent Slic3r from using bridge flow and speed for the - first object layer. (mm, default: 0.2) - --support-material-enforce-layers N - Generate support material for the specified number of layers counting from - bottom, regardless of whether normal support material is enabled or not and - regardless of any angle threshold. This is useful for getting more adhesion of - objects having a very thin or poor footprint on the build plate. (layers, - default: 0) - --support-material-interface-contact-loops - Cover the top contact layer of the supports with loops. Disabled by default. - --support-material-interface-layers N - Number of interface layers to insert between the object(s) and support material. - (layers, default: 3) - --support-material-interface-pattern - Pattern used to generate support material interface. Default pattern for - non-soluble support interface is Rectilinear, while default pattern for soluble - support interface is Concentric. (auto, rectilinear, concentric; default: - rectilinear) - --support-material-interface-spacing N - Spacing between interface lines. Set zero to get a solid interface. (mm, - default: 0) - --support-material-interface-speed N - Speed for printing support material interface layers. If expressed as percentage - (for example 50%) it will be calculated over support material speed. (mm/s or %, - default: 100%) - --support-material-pattern - Pattern used to generate support material. (rectilinear, rectilinear-grid, - honeycomb; default: rectilinear) - --support-material-spacing N - --support-material-speed N - --support-material-style - --support-material-synchronize-layers - --support-material-threshold N - --support-material-with-sheath - --support-material-xy-spacing N - --wipe-into-infill - --wipe-into-objects \ No newline at end of file diff --git a/tmp_get_ini_from_json.py b/tmp_get_ini_from_json.py deleted file mode 100644 index 27d3844..0000000 --- a/tmp_get_ini_from_json.py +++ /dev/null @@ -1,21 +0,0 @@ -import json -import os - - -if __name__ == "__main__": - all_files = os.sys.argv[1:] - print(all_files) - keys = {} - for file in all_files: - js = json.load(open(file)) - for k, v in js.items(): - if k in ['filament_id','setting_id',"type","name","from","instantiation","inherits","compatible_printers","filename_format"]: - continue - if type(v) == list: - v = v[0] - keys[k] = v - print(json.dumps(keys)) - with open("0.08mm_Extra_Fine.ini", "w") as f: - for k, v in keys.items(): - v_str = v.replace('\n', '\\n') - f.write(f"{k} = {v_str}\n") \ No newline at end of file diff --git a/valid_keys.txt b/valid_keys.txt deleted file mode 100644 index 2c9f3d8..0000000 --- a/valid_keys.txt +++ /dev/null @@ -1,417 +0,0 @@ -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